[英]VBA - Print lines to a .txt file
我在文本文件中打印值时遇到问题。 每当我有日期或数字时,我都会收到“错误13” ...我想它与变量有关,但我不明白问题出在哪里。
Sub SX_Externe_Generate_TXT()
Dim WsCib As Worksheet
Dim LastCol, LastRow, i, j As Byte
Application.ScreenUpdating = False
Set Ws = ThisWorkbook.Sheets("Externe")
Set WsCib = ThisWorkbook.Sheets("SX_Externe")
LastCol = WsCib.Cells(1, 1).SpecialCells(xlCellTypeLastCell).Column
LastRow = WsCib.Cells(1, 1).SpecialCells(xlCellTypeLastCell).Row
WsCib.Activate
Open "C:\Users\xizx692\Desktop\SX_Externe_Temp.txt" For Output As #1 'Tu crées le fichier text
i = 1
For i = 1 To LastRow
j = 1
For j = 1 To LastCol
Print #1, WsCib.Cells(i, j).Value + ";"; 'Séparateur = ;
Next j
Print #1, WsCib.Cells(i, j + 1).Value 'pas de séparateur (Saut de ligne)
Next i
Close #1
Ws.Activate
Application.ScreenUpdating = False
End Sub
错误出现在此行Print#1,WsCib.Cells(i,j).Value +“;”; 'Séparateur=; 只要cell(i,j).value是Date或Number格式。
感谢您的帮助。
BR,
吉恩
Print #1, WsCib.Cells(i, j).Value + ";"; 'Séparateur = ;
VBA中的串联运算符是&
, 而不是 +
。 如果两个操作数都是字符串,则后者有时会起作用。
除非字符串可以转换为数字,否则number + string会引发运行时错误13 ,但使用+
时,VBA绝不会将数字转换为字符串,在这种情况下,它将仅尝试算术加法。
Print #1, WsCib.Cells(i, j).Value & ";"; 'Séparateur =
' ^^^
这将解决当前的问题,但是还有一些其他事情需要更改。
Dim LastCol, LastRow, i, j As Byte
此语句将j声明为Byte,将其他所有变量声明为Variant。 将它们全部变暗,并使用long而不是Byte,因为Long应该始终是整数变量的自然选择,除非有特殊原因。
`Dim LastCol as Long, LastRow As Long, i as Long, j As Long`
i=1
和j=1
是多余的,让For
语句执行初始化工作
语句Print #1, WsCib.Cells(i, j + 1).Value
也是多余的,因为该单元格为空。 要打印一个空行,只需Print #1, ""
。 尽管它的作用相同,但是对于代码的可读性来说却是一个好选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.