Mrz 062016
 

CSV

Beim Versuch, Kontakte von Excel nach Outlook zu portieren, stellt man schnell fest, dass Excel beim CSV-Export ein Semikolon als Feldtrennzeichen verwendet, Outlook beim CSV-Import jedoch ein Komma erwartet.

Der teilweise verbreitete Tipp, über die Windows-Systemsteuerung das Trennzeichen zu ändern, brachte bei mir unter Windows 7 keinen Erfolg – Excel exportierte weiterhin unter Verwendung des “;”. Suchen und Ersetzen verbietet sich von selbst, denn die Daten könnten ja auch mal ein Semikolon enthalten (und sollten deshalb übrigens in Anführungszeichen stehen, was untenstehendes Skript – dann mit Kommata – anbietet).

Eine Lösung brachte schließlich dieses kleine Excel-Makro von Thomas Lexa (CC BY-NC-SA 3.0 DE):

Sub ExportCSV()
 
Dim Bereich As Object, Zeile As Object, Zelle As Object
Dim strTemp As String
Dim strDateiname As String
Dim strTrennzeichen As String
Dim strMappenpfad As String
Dim blnAnfuehrungszeichen As Boolean
Dim blnSave As Boolean
 
 
strMappenpfad = ActiveWorkbook.FullName
 
strDateiname = InputBox("Bitte den Namen der CSV-Datei angeben.", "CSV-Export", strMappenpfad)
If strDateiname = "" Then Exit Sub
 
strTrennzeichen = InputBox("Welches Trennzeichen soll verwendet werden?", "CSV-Export", ",")
If strTrennzeichen = "" Then Exit Sub
 
If MsgBox("Sollen die Werte in Anführungszeichen exportiert werden?", vbQuestion + vbYesNo, "CSV-Export") = vbYes Then
    blnAnfuehrungszeichen = True
Else
    blnAnfuehrungszeichen = False
End If
 
Set Bereich = ActiveSheet.Range("A1:U1000")
 
Open strDateiname For Output As #1
 
For Each Zeile In Bereich.Rows
        For Each Zelle In Zeile.Cells
        If Application.WorksheetFunction.CountBlank(Zeile.Cells) = Zeile.Cells.Count Then
            Zeile.Delete
            blnSave = False
        Else
            If blnAnfuehrungszeichen = True Then
                strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen
            Else
                strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
            End If
        End If
        Next
        If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1)
        If blnSave = True Then
            Print #1, strTemp
            blnSave = True
        Else
            blnSave = True
        End If
        strTemp = ""
Next
 
  Close #1
  Set Bereich = Nothing
  MsgBox "Export erfolgreich. Datei wurde exportiert nach" & vbCrLf & strDateiname
 
End Sub

Vor Ausführung den Bereich anpassen (im Code jetzt A1:U1000)!

 Leave a Reply