CSV-файл, созданный с помощью VBA, имеет пустые строки в конце, даже если ячейки пусты.

Я добавляю данные в первый столбец рабочего листа и использую этот код.

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 и удалить все кавычки на основе это руководство.

Когда я открываю csv с помощью Блокнота, в конце всегда есть как минимум одна пустая строка:

введите описание изображения здесь

Не имеет значения, сохраню ли я файл вручную - та же пустая строка. Я тоже пробовал добавить что-то вроде

ThisWorkbook.Worksheets("Tabelle1").Rows(6).Delete

но это не имеет значения, потому что в 6-й строке рабочего листа нет значений.

Есть ли способ противостоять этому или, по крайней мере, автоматизировать удаление последней строки в CSV через Блокнот?


person Clemens Ambros    schedule 17.08.2020    source источник


Ответы (2)


Пустой строки нет. У вас есть 5 строк, каждая из которых заканчивается символом CR / LF (возврат каретки и перевод строки). Текстовый редактор дает вам пустую 6-ю строку.

Чтобы избежать этого, вам придется удалить CR / LF из 5-й строки, но обычно это не делается.

Это нормально и так.

person Wolfgang Jacques    schedule 17.08.2020
comment
Я использую этот файл для специального программного обеспечения. Эта программа не работает, если в Блокноте отображается 6-я строка. Если я открываю его вручную, удаляю строку и снова сохраняю, все работает. - person Clemens Ambros; 17.08.2020
comment
Может быть, это продвинет вас дальше? stackoverflow.com/ questions / 35131183 / - person Wolfgang Jacques; 17.08.2020

как Вольфганг Жак предложил в комментариях, я использовал этот метод вместо 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

person Clemens Ambros    schedule 17.08.2020