使用 VBA 创建的 CSV 文件末尾有空白行,即使单元格为空
CSV file created with VBA has blank row(s) at the end even if cells are empty
我正在工作表的第一列中添加一些数据并使用此代码
Sub createCSVfile()
Dim xRg As Range
Dim xRow As Range
Dim xCell As Range
Dim xStr As String
Dim xTxt As String
Dim xName As Variant
ThisWorkbook.Worksheets("Tabelle1").Range("A1").Value = "XYZ"
ThisWorkbook.Worksheets("Tabelle1").Range("A2").Value = "XYZ"
ThisWorkbook.Worksheets("Tabelle1").Range("A3").Value = "XYZ"
ThisWorkbook.Worksheets("Tabelle1").Range("A4").Value = "XYZ"
ThisWorkbook.Worksheets("Tabelle1").Range("A5").Value = "XYZ"
Set xRg = ThisWorkbook.Worksheets("Tabelle1").Range("A1:A5")
xName = Application.GetSaveAsFilename("", "CSV File (*.csv), *.csv")
Open xName For Output As #1
For Each xRow In xRg.Rows
xStr = ""
For Each xCell In xRow.Cells
xStr = xStr & xCell.Value & Chr(9)
Next
While Right(xStr, 1) = Chr(9)
xStr = Left(xStr, Len(xStr) - 1)
Wend
Print #1, xStr
Next
Close #1
If Err = 0 Then MsgBox "csv file saved"
End Sub
将其保存为csv并删除所有基于this tutorial的引号。
当我用记事本打开csv时,最后总是至少有一个空行:
如果我手动保存文件并没有什么区别 - 相同的空白行。我还尝试添加类似
的内容
ThisWorkbook.Worksheets("Tabelle1").Rows(6).Delete
但这没有什么区别,因为工作表的第 6 行中没有值。
有没有办法解决这个问题或至少通过记事本自动删除 csv 中的最后一行?
没有空行。您有 5 行,每行都以 CR/LF(回车 Return 和换行)结尾。文本编辑器给你一个空的第 6 行。
为避免这种情况,您必须从第 5 行删除 CR/LF,但通常不会这样做。
这样就好了。
正如评论中Wolfgang Jacques所建议的那样,我使用了这种方法而不是SaveWorkbookAs
Sub CreateAfile
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\testfile.txt", True)
a.WriteLine("This is a test.")
a.Close
End Sub
最后一个条目我使用了 a.Write
而不是 a.WriteLine
我正在工作表的第一列中添加一些数据并使用此代码
Sub createCSVfile()
Dim xRg As Range
Dim xRow As Range
Dim xCell As Range
Dim xStr As String
Dim xTxt As String
Dim xName As Variant
ThisWorkbook.Worksheets("Tabelle1").Range("A1").Value = "XYZ"
ThisWorkbook.Worksheets("Tabelle1").Range("A2").Value = "XYZ"
ThisWorkbook.Worksheets("Tabelle1").Range("A3").Value = "XYZ"
ThisWorkbook.Worksheets("Tabelle1").Range("A4").Value = "XYZ"
ThisWorkbook.Worksheets("Tabelle1").Range("A5").Value = "XYZ"
Set xRg = ThisWorkbook.Worksheets("Tabelle1").Range("A1:A5")
xName = Application.GetSaveAsFilename("", "CSV File (*.csv), *.csv")
Open xName For Output As #1
For Each xRow In xRg.Rows
xStr = ""
For Each xCell In xRow.Cells
xStr = xStr & xCell.Value & Chr(9)
Next
While Right(xStr, 1) = Chr(9)
xStr = Left(xStr, Len(xStr) - 1)
Wend
Print #1, xStr
Next
Close #1
If Err = 0 Then MsgBox "csv file saved"
End Sub
将其保存为csv并删除所有基于this tutorial的引号。
当我用记事本打开csv时,最后总是至少有一个空行:
如果我手动保存文件并没有什么区别 - 相同的空白行。我还尝试添加类似
的内容ThisWorkbook.Worksheets("Tabelle1").Rows(6).Delete
但这没有什么区别,因为工作表的第 6 行中没有值。
有没有办法解决这个问题或至少通过记事本自动删除 csv 中的最后一行?
没有空行。您有 5 行,每行都以 CR/LF(回车 Return 和换行)结尾。文本编辑器给你一个空的第 6 行。
为避免这种情况,您必须从第 5 行删除 CR/LF,但通常不会这样做。
这样就好了。
正如评论中Wolfgang Jacques所建议的那样,我使用了这种方法而不是SaveWorkbookAs
Sub CreateAfile
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\testfile.txt", True)
a.WriteLine("This is a test.")
a.Close
End Sub
最后一个条目我使用了 a.Write
而不是 a.WriteLine