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)!
Echt jetzt? Man braucht ein Skript, um Daten über eine Standardfunktion von einem Microsoft-Programm in eine anderes Microsoft-Programm zu bekommen? Die beide die gleichen Regeln kennen? Woher bekommt Outlook denn csv, wenn nicht meist aus Excel?
Kurz hatte ich überlegt, von Libre-Office auf MS Office zu wechseln, aber danke, nein.
Leider ist es wahr. Excel kann auch andererseits keine CSV richtig importieren mit Feldinhalten in Anführungszeichen und zwar dann, wenn innerhalb der Inhalte auch Anführungszeichen vorkommen. Klar ist das ein Problem, aber LibreOffice Calc kann es.