Ich muss einige Ergebnisse als .csv
-Datei ausgeben, die später von einem anderen Prozess analysiert wird. Um diese Ergebnisse zu erzielen, habe ich eine riesige Arbeitsmappe mit allen Makros und Funktionen, die ich brauche.
.csv
-Datei von VBA
"erstellt" werden? VBA
-Funktionen zu verwenden, um darin zu schreiben, anstatt nur in einem "rohen Text" -Ansatz zu schreiben?Vielen Dank :)
Ist so etwas was du willst?
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
Vergessen Sie nicht, dass Sie Anführungszeichen um jedes Feld setzen müssen, das ein Komma enthält.
Tonys Antwort funktioniert im Allgemeinen, behandelt jedoch nicht den Fall, in dem Ihr Text Kommas oder Anführungszeichen enthält. Möglicherweise bevorzugen Sie die Methode Workbook.SaveAs.
Hier ein Beispiel, wenn Sie den Inhalt von Sheet1 als separate CSV-Datei speichern möchten.
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
Stellen Sie sich vor, Ihr Sheet1 enthält:
lorem Ipsum
geschichte, m ips "um"
Die Ausgabe der CSV-Datei lautet:
lorem, Ipsum
"lore, m", "ips" "um" ""
Sie können ein Makro wie die aktuelle Arbeitsmappe (geöffnete Excel-Datei) in CSV von VBA speichern:
ActiveWorkbook.SaveAs Filename:="C:\Book1.csv", _
FileFormat:=xlCSVMSDOS, CreateBackup:=False