Как создать отдельный файл CSV из VBA?
Мне нужно вывести некоторые результаты в виде файла .csv
, который позже обрабатывается другим процессом. Чтобы получить эти результаты, у меня есть огромная книга, содержащая все макросы и функции, которые мне нужны.
- Возможно ли создать отдельный файл
.csv
из VBA
?
- Можно ли использовать функции
VBA
для записи в нее вместо того, чтобы просто писать в "исходном текстовом" подходе?
Спасибо:)
Ответы
Ответ 1
Что-то вроде этого, чего вы хотите?
Option Explicit
Sub WriteFile()
Dim ColNum As Integer
Dim Line As String
Dim LineValues() As Variant
Dim OutputFileNum As Integer
Dim PathName As String
Dim RowNum As Integer
Dim SheetValues() As Variant
PathName = Application.ActiveWorkbook.Path
OutputFileNum = FreeFile
Open PathName & "\Test.csv" For Output Lock Write As #OutputFileNum
Print #OutputFileNum, "Field1" & "," & "Field2"
SheetValues = Sheets("Sheet1").Range("A1:H9").Value
ReDim LineValues(1 To 8)
For RowNum = 1 To 9
For ColNum = 1 To 8
LineValues(ColNum) = SheetValues(RowNum, ColNum)
Next
Line = Join(LineValues, ",")
Print #OutputFileNum, Line
Next
Close OutputFileNum
End Sub
Не забывайте, что вам нужно будет помещать кавычки в любое поле, содержащее запятую.
Ответ 2
Ответ Tony обычно работает, но не обрабатывает случай, когда ваш текст содержит запятые или кавычки. Вы можете использовать метод Workbook.SaveAs.
Вот пример, если вы хотите сохранить содержимое Sheet1 в виде отдельного файла csv.
Sub create_csv()
Dim FileName As String
Dim PathName As String
Dim ws As Worksheet
Set ws = ActiveWorkbook.Sheets("Sheet1")
FileName = "filename.csv"
PathName = Application.ActiveWorkbook.Path
ws.Copy
ActiveWorkbook.SaveAs FileName:=PathName & "\" & FileName, _
FileFormat:=xlCSV, CreateBackup:=False
End Sub
Представьте, что ваш Лист1 содержит:
lorem ipsum
lore, m ips "um"
Выходной файл csv будет:
Lorem, Ipsum
"уздечка, м", "изобр", "гм", ""
Ответ 3
Вы можете написать макрос, как сохранить текущую книгу (открытый файл excel) в CSV из VBA:
ActiveWorkbook.SaveAs Filename:="C:\Book1.csv", _
FileFormat:=xlCSVMSDOS, CreateBackup:=False