Angeben eines Trennzeichens beim Speichern einer CSV-Datei in einem Makro (Microsoft Excel)
Beim Erstellen einer CSV-Datei mithilfe der Menüs zum Exportieren eines Arbeitsblatts stellte Arkadiusz fest, dass er angeben kann, dass ein Semikolon (;)
verwendet werden soll als Feldtrennzeichen. Wenn er jedoch eine CSV-Datei mit einem Makro (FileFormat: = xlCSV oder xlCSVWindows) speichert, kann er kein Semikolon als Trennzeichen angeben.
Dies funktioniert in VBA so. Die Excel-Implementierung der Exportroutinen für VBA verwendet immer die regionalen Windows-Einstellungen, um zu bestimmen, wie Elemente in einer CSV getrennt werden sollen.
Insbesondere untersucht die Routine das Feld Listentrennzeichen für das Trennzeichen. Dies bedeutet, dass Sie bei Bedarf das Trennzeichen in ein Semikolon ändern können, indem Sie die Einstellung Listentrennzeichen in Ihrer Konfiguration der regionalen Einstellungen ändern.
Wenn Sie die regionalen Einstellungen nicht ändern möchten, können Sie stattdessen ein eigenes Makro schreiben, das die Datei auf die von Ihnen gewünschte Weise ausgibt.
Betrachten Sie für einen Moment das folgende Makro, das die Datei ausgibt:
Sub CreateFile() FName = ActiveWorkbook.Name If Right(FName, 4) = ".xls" Then FName = Mid(FName, 1, Len(FName) - 4) End If Columns(1).Insert Shift:=xlToRight For i = 1 To Range("B65000").End(xlUp).Row TempString = "" For j = 2 To Range("HA1").End(xlToLeft).Column If j <> Range("HA1").End(xlToLeft).Column Then TempString = TempString & _ Cells(i, j).Value & ";" Else TempString = TempString & _ Cells(i, j).Value End If Next Cells(i, 1).Value = TempString Next Columns(1).Select Selection.Copy Workbooks.Add Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.SaveAs Filename:=FName & ".txt", _ FileFormat:=xlPrinter End Sub
Dieses Makro verfolgt einen einzigartigen Ansatz zum Erstellen der Ausgabedatei. Sie fügen eine Spalte links in Ihr Arbeitsblatt ein und verketten dann alle Daten rechts von dieser Spalte in die neu eingefügte Spalte A. Zwischen jedem Feld wird ein Semikolon eingefügt. Sobald dies erledigt ist, werden die Informationen in Spalte A abgerufen und in eine neue Arbeitsmappe geschrieben. Diese Arbeitsmappe wird dann im xlPrinter-Dateiformat auf der Festplatte gespeichert. Dies bedeutet, dass sie unverändert ohne Änderungen ausgegeben wird.
Wenn Sie einen direkteren Ansatz bevorzugen und die Informationen direkt in eine Datei schreiben, ohne Änderungen an Ihrem Arbeitsblatt vorzunehmen, sehen Sie sich das Makro in diesem Blog-Beitrag an:
https://web.archive.org/web/20060302021412/http:/www.dicks-blog.com:80/archives/2004/11/09/roll-your-own-csv/
Das Makro verwendet Kommas zwischen den einzelnen Feldern, kann jedoch leicht so geändert werden, dass stattdessen Semikolons verwendet werden.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (3232) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: