问题描述
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(回车和换行)结尾。文本编辑器为您提供第六行空白。
为避免这种情况,您必须从第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