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

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 с помощью Блокнота, всегда есть хотя бы одна пустая строка в конце:

enter image description here

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

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

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

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

1
Clemens Ambros 17 Авг 2020 в 18:07

2 ответа

Лучший ответ

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

1
Clemens Ambros 17 Авг 2020 в 16:26

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

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

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

2
Wolfgang Jacques 17 Авг 2020 в 15:15