Я позаимствовал приведенный ниже код у TommyGun на MrExcel, но у меня возникли следующие трудности:
В конце сгенерированного файла он повторяет разделители в строках нижедаже если между ними нет данных;
Имя файла должно генерироваться динамически, в зависимости от месяца, в котором мы находимся, но Const CSVFile As String не показываетНапример, не принимайте формат (дата, «ммм-гг») в качестве строкового элемента.
Sub Append2CSV()
Dim tmpCSV As String 'string to hold the CSV info
Dim f As Integer
Const CSVFile As String = "C:\VBA Code\test.csv" 'replace with your filename
f = FreeFile
Open CSVFile For Append As #f
tmpCSV = Range2CSV(Range("A2:H3"))
Print #f, tmpCSV
Close #f
End Sub
Function Range2CSV(list) As String
Dim tmp As String
Dim cr As Long
Dim r As Range
If TypeName(list) = "Range" Then
cr = 1
For Each r In list.Cells
If r.Row = cr Then
If tmp = vbNullString Then
tmp = r.Value
Else
tmp = tmp & "," & r.Value
End If
Else
cr = cr + 1
If tmp = vbNullString Then
tmp = r.Value
Else
tmp = tmp & Chr(10) & r.Value
End If
End If
Next
End If
Range2CSV = tmp
End Function
Как насчет рассмотрения следующего: если файлы не существуют,затем создайте его с заголовком (строка 1). Если это так, то добавьте (диапазон "A2: S" и lastorw)