06.11.2022, 03:37
Liebes Forum,
folgende Frage: Wie kann ich eine Excel-Tabelle (MS Office 2016) per Visual Basic (VB) in eine CSV-Datei exportieren, ohne dass sie ihre Sonderzeichen verliert? Deutsche Sonderzeichen/Umlaute ÄÖÜß werden zwar problemlos exportiert, aber polnische Sonderzeichen ąćęń usw. werden in normale Buchstaben (acen) verändert.
Etwas mehr im Detail:
Ich möchte eine Excel-Adressdatenbank in CSV konvertieren, um sie später in Outlook importieren zu können. Outlook braucht aber für den Import eine CSV-Datei, in der die Datensätze durch Anführungsstriche (") begrenzt sind. Excel kann das leider nicht. Im Internet habe ich als einzige Lösung gefunden, dass man hierzu ein VB-Makro verwendet, welches den Export übernimmt. Ich kenne mich mit VB nicht aus und habe den Programmcode aus einem Forum übernommen. Die entsprechende Excel-Datei mit Makro habe ich als xlsm-Datei gespeichert und der Export funktioniert wunderbar. Mir ist jetzt aber aufgefallen, dass polnische Namen mit entsprechenden Sonderzeichen umgewandelt werden.
Wie müsste ich den VB-Code unten abändern, damit alle Sonderzeichen übernommen werden? Kann mir da jemand behilflich sein?
Danke und herzlichen Gruß
Yukusoona
Der VB-Code:
Sub CSV_mit_Anfuehrungszeichen()
Dim wks As Worksheet, Ze As Long, Sp As Long, ZeTmp As String
Dim lCol As Long, lRow As Long, Frf As Long
Const csvExport = "C:\Users\***\***.csv" 'Anpassen
Const Trenner As String = "," 'Trenner für Spalten, kann angepasst werden
Const Anf As String = """"
Frf = FreeFile
Set wks = ThisWorkbook.Worksheets("Adressen") 'Anpassen: Register-Name
lCol = wks.Cells(1, Columns.Count).End(xlToLeft).Column
lRow = wks.Cells(Rows.Count, 1).End(xlUp).Row
Open csvExport For Output As #Frf
For Ze = 1 To lRow
For Sp = 1 To lCol
ZeTmp = ZeTmp & Anf & CStr(wks.Cells(Ze, Sp).Text) & Anf & Trenner
Next Sp
ZeTmp = Left(ZeTmp, Len(ZeTmp) - 1) 'Letztes Trennzeichen löschen
Print #Frf, ZeTmp
ZeTmp = ""
Next Ze
Close #Frf
End Sub
Vorhin habe ich in einem anderen Forum noch einen weiteren Programmcode gefunden, der zwar auch funktioniert, aber ebenfalls die Sonderzeichen klaut:
Sub CSVFile()
Dim SrcRg As Range
Dim CurrRow As Range
Dim CurrCell As Range
Dim CurrTextStr As String
Dim ListSep As String
Dim FName As Variant
FName = Application.GetSaveAsFilename("", "CSV File (*.csv), *.csv")
ListSep = Application.International(xlListSeparator)
If Selection.Cells.Count > 1 Then
Set SrcRg = Selection
Else
Set SrcRg = ActiveSheet.UsedRange
End If
Open FName For Output As #1
For Each CurrRow In SrcRg.Rows
CurrTextStr = ìî
For Each CurrCell In CurrRow.Cells
CurrTextStr = CurrTextStr & """" & CurrCell.Value & """" & ListSep
Next
While Right(CurrTextStr, 1) = ListSep
CurrTextStr = Left(CurrTextStr, Len(CurrTextStr) - 1)
Wend
Print #1, CurrTextStr
Next
Close #1
End Sub
folgende Frage: Wie kann ich eine Excel-Tabelle (MS Office 2016) per Visual Basic (VB) in eine CSV-Datei exportieren, ohne dass sie ihre Sonderzeichen verliert? Deutsche Sonderzeichen/Umlaute ÄÖÜß werden zwar problemlos exportiert, aber polnische Sonderzeichen ąćęń usw. werden in normale Buchstaben (acen) verändert.
Etwas mehr im Detail:
Ich möchte eine Excel-Adressdatenbank in CSV konvertieren, um sie später in Outlook importieren zu können. Outlook braucht aber für den Import eine CSV-Datei, in der die Datensätze durch Anführungsstriche (") begrenzt sind. Excel kann das leider nicht. Im Internet habe ich als einzige Lösung gefunden, dass man hierzu ein VB-Makro verwendet, welches den Export übernimmt. Ich kenne mich mit VB nicht aus und habe den Programmcode aus einem Forum übernommen. Die entsprechende Excel-Datei mit Makro habe ich als xlsm-Datei gespeichert und der Export funktioniert wunderbar. Mir ist jetzt aber aufgefallen, dass polnische Namen mit entsprechenden Sonderzeichen umgewandelt werden.
Wie müsste ich den VB-Code unten abändern, damit alle Sonderzeichen übernommen werden? Kann mir da jemand behilflich sein?
Danke und herzlichen Gruß
Yukusoona
Der VB-Code:
Sub CSV_mit_Anfuehrungszeichen()
Dim wks As Worksheet, Ze As Long, Sp As Long, ZeTmp As String
Dim lCol As Long, lRow As Long, Frf As Long
Const csvExport = "C:\Users\***\***.csv" 'Anpassen
Const Trenner As String = "," 'Trenner für Spalten, kann angepasst werden
Const Anf As String = """"
Frf = FreeFile
Set wks = ThisWorkbook.Worksheets("Adressen") 'Anpassen: Register-Name
lCol = wks.Cells(1, Columns.Count).End(xlToLeft).Column
lRow = wks.Cells(Rows.Count, 1).End(xlUp).Row
Open csvExport For Output As #Frf
For Ze = 1 To lRow
For Sp = 1 To lCol
ZeTmp = ZeTmp & Anf & CStr(wks.Cells(Ze, Sp).Text) & Anf & Trenner
Next Sp
ZeTmp = Left(ZeTmp, Len(ZeTmp) - 1) 'Letztes Trennzeichen löschen
Print #Frf, ZeTmp
ZeTmp = ""
Next Ze
Close #Frf
End Sub
Vorhin habe ich in einem anderen Forum noch einen weiteren Programmcode gefunden, der zwar auch funktioniert, aber ebenfalls die Sonderzeichen klaut:
Sub CSVFile()
Dim SrcRg As Range
Dim CurrRow As Range
Dim CurrCell As Range
Dim CurrTextStr As String
Dim ListSep As String
Dim FName As Variant
FName = Application.GetSaveAsFilename("", "CSV File (*.csv), *.csv")
ListSep = Application.International(xlListSeparator)
If Selection.Cells.Count > 1 Then
Set SrcRg = Selection
Else
Set SrcRg = ActiveSheet.UsedRange
End If
Open FName For Output As #1
For Each CurrRow In SrcRg.Rows
CurrTextStr = ìî
For Each CurrCell In CurrRow.Cells
CurrTextStr = CurrTextStr & """" & CurrCell.Value & """" & ListSep
Next
While Right(CurrTextStr, 1) = ListSep
CurrTextStr = Left(CurrTextStr, Len(CurrTextStr) - 1)
Wend
Print #1, CurrTextStr
Next
Close #1
End Sub