Bei der Verwendung der in der Multifunktionsleiste verfügbaren Werkzeuge zum Exportieren eines Arbeitsblatts als CSV-Datei stellte Arkadiusz fest, dass er angeben kann, dass ein Semikolon (;) als Feldtrennzeichen verwendet werden soll. 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()

Dim sFName As String     Dim Rows As Long     Dim Cols As Long     Dim J As Long     Dim K As Long     Dim sTemp As String     Dim sSep As String

sSep = ";"  'Specify the separator to be used

sFName = ActiveWorkbook.FullName     If Right(sFName, 5) = ".xlsx" Then         sFName = Mid(sFName, 1, Len(sFName) - 5)

sFName = sFName & ".txt"

Open sFName For Output As 1

With ActiveSheet             'Number of rows to export is based on the contents             'of column B. If it should be based on a different             'column, change the following line to reflect the             'column desired.

Rows = .Cells(.Rows.Count, "B").End(xlUp).Row             For J = 1 To Rows                 sTemp = ""

Cols = .Cells(J, .Columns.Count).End(xlToLeft).Column                 For K = 2 To Cols                     sTemp = sTemp & .Cells(J, K).Value                     If K < Cols Then sTemp = sTemp & sSep                 Next                 Print #1, sTemp             Next J         End With

Close 1

sTemp = "There were " & Rows & " rows of data written "

sTemp = sTemp & "to this file:" & vbCrLf & sFName     Else         sTemp = "This macro needs to be run on a workbook "

sTemp = sTemp & "stored in the XLSX format."

End If

MsgBox sTemp End Sub

Dieses Makro öffnet eine Textdatei mit demselben Namen wie Ihre Arbeitsmappe. Anschließend wird jede Zeile durchlaufen und eine Zeichenfolge des Zelleninhalts zusammengestellt. (Dies wird in die Variable sTemp eingefügt.) Zwischen jeder Zelle befindet sich ein Semikolon, das durch die Variable sSep definiert wird. Die verketteten Werte jeder Zeile werden in der Textdatei gespeichert, und wenn Sie fertig sind, wird die Textdatei geschlossen. Die Routine ist sehr schnell und zeigt nach Abschluss eine Meldung an, wie viele Zeilen in die Datei exportiert wurden.

_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 (9243) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365. Eine Version dieses Tipps für die ältere Menüoberfläche von Excel finden Sie hier: