VBA – 将行打印到.txt文件
我在打印文本文件中的值时遇到问题。 每当我有一个date或数字,我会得到一个“错误13”…我想这是链接到我的variables,但我不明白问题在哪里。
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
错误出现在这一行打印#1,WsCib.Cells(i,j).Value +“;”; 'Séparateur=; 每当单元格(i,j).value是date或数字格式。
感谢您的帮助提前。
BR,
吉恩
Print #1, WsCib.Cells(i, j).Value + ";"; 'Séparateur = ;
VBA中的连接运算符是&
, 不是 +
。 如果两个操作数都是string,后者有时会起作用。
数字+string会引发运行时错误13,除非string可以转换为数字,但当使用+
时,VBA将永远不会将该数字转换为string,只会在此情况下尝试算术加法。
Print #1, WsCib.Cells(i, j).Value & ";"; 'Séparateur = ' ^^^
这将解决手头的问题,但还有其他一些事情应该改变。
-
Dim LastCol, LastRow, i, j As Byte
这个语句声明j为Byte,所有其他声明为Variant。 将它们全部变暗,并使用Long而不是Byte,因为Long应该始终是整型variables的自然select,除非有特定的原因。`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, ""
。 尽pipe它的确如此,但是对于代码的可读性来说 ,这是一个错误。