Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: xls in csv umwandeln und per Mail versenden

xls in csv umwandeln und per Mail versenden
07.11.2016 14:55:07
Marcus
Hallo zusammen,
ich habe folgendes Problem:
Ich speichere ein geöffnetes Tabellenblatt als csv ab, öffne die gespeicherte Datei und versende diese als Mail.
Wird die Datei als Mailanhang geöffnet habe ich "Kommas" als Trennzeichen (was nicht gewünscht ist). Öffne ich die
gespeicherte Datei im Explorer mit dem Editor, habe ich "Semikolon" als Trennzeichen.
Irgend etwas scheint beim Anhängen an die Mail die Trennzeichen zu vertauschen...
Jemand eine Idee?
Makro:

Sub Makro1_CSV_SEND2()
' Makro1_CSV_SEND Makro
ActiveSheet.SaveAs Filename:="C:\Temp\AQ03.csv", _
FileFormat:=xlCSV, CreateBackup:=False, local:=True
ChDir "C:\Temp"
Sheet.Open Filename:="C:\Temp\AQ03.csv", local:=True
Application.Dialogs(xlDialogSendMail).Show _
"mustername@musterfirma.com", "Musterbetreff"
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: xls in csv umwandeln und per Mail versenden
07.11.2016 16:11:12
Andreas
Hallo Marcus,
habe mal gelesen, dass es wohl vom Standardformat des Programms abhängt, wie die csv interpretiert werden (also Komma, oder Punkt).
Ein Kollege benötigte mal die Wahlmöglichkeit und ich habe dafür folgendes zusammen gebastelt, evtl. kann man einen Teil davon verwenden.
Sub SaveCSV()
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
strMappenpfad = ActiveWorkbook.FullName
strMappenpfad = Replace(strMappenpfad, ".xls", ".csv")
strDateiname = InputBox("Wie soll die CSV-Datei heißen (c:\test.csv)?", "CSV-Export",  _
strMappenpfad)
If strDateiname = "" Then Exit Sub
strTrennzeichen = InputBox("Welches Trennzeichen soll verwendet werden?", "CSV-Export", ",")
If strTrennzeichen = "" Then Exit Sub
Set Bereich = ActiveSheet.UsedRange
Open strDateiname For Output As #1
For Each Zeile In Bereich.Rows
For Each Zelle In Zeile.Cells
strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen
Next
If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1)
Print #1, strTemp
strTemp = ""
Next
Close #1
Set Bereich = Nothing
MsgBox "Export erfolgreich. Datei wurde exportiert nach" & vbCrLf & strDateiname
End Sub
Grüße
Andreas
Anzeige
AW: xls in csv umwandeln und per Mail versenden
07.11.2016 18:43:41
fcs
Hallo Marcus,
Jemand eine Idee?
Mit dem Parameter Local:=True beim Speichern als CSV_Datei und dem erneuten Öffnen der CSV-Datei stellst du unter VBA sicher, dass als Trennzeichen/Dezimalzeichen in der CSV die in der Systemeinstellung festgelegten Dezimalzeichen und Trennzeichen verwendet werden.
Nach dem erneuten Öffnen der CSV liegt die Datei in der Excel-BenutzerOberflache jedoch als Excel-Arbeitsmappe vor auch wenn als Dateiname noch ".csv" angezeigt wird.
Beim Versand der Mappe als E-Mail-Anhang via eingebautem Dialog wird erneut eine Umwandlung in CSV Durchgeführt. Leider benutzt VBA dabei nach dem Motto "I am American - I use commas as separators" dabei Kommas als Trennzeichen.
Meines Wissens gibt es dabei keine Möglichkeit das zu Steuern.
Als Lösung musst du hier ein E-Mail-Object kreieren und die erzeugte CSV-Datei als Anhang(Attachment) zuweisen.
Für den Versand per MS-Outlook findest du hier unter der RECHERCHE viele Beispiele. Bei anderen E-Mail-Programmen ist die Integrazion in ein VBA-Makro etwas scheieriger.
LG
Franz
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

xls in csv umwandeln und per Mail versenden


Schritt-für-Schritt-Anleitung

  1. Excel-Datei öffnen: Öffne die Excel-Datei, die du in eine CSV-Datei umwandeln möchtest.
  2. Makro erstellen: Öffne den VBA-Editor (ALT + F11) und füge ein neues Modul ein.
  3. Makro kopieren: Kopiere das folgende Makro in das Modul.
Sub Makro1_CSV_SEND2()
    ' Makro um eine Excel-Datei in CSV zu konvertieren und per E-Mail zu versenden
    ActiveSheet.SaveAs Filename:="C:\Temp\AQ03.csv", _
    FileFormat:=xlCSV, CreateBackup:=False, local:=True
    ChDir "C:\Temp"
    Workbooks.Open Filename:="C:\Temp\AQ03.csv", local:=True
    Application.Dialogs(xlDialogSendMail).Show _
    "mustername@musterfirma.com", "Musterbetreff"
End Sub
  1. CSV-Datei speichern: Führe das Makro aus, um die Excel-Datei in eine CSV-Datei zu konvertieren.
  2. E-Mail versenden: Das Makro versendet die CSV-Datei direkt als E-Mail-Anhang.

Häufige Fehler und Lösungen

  • Problem: Trennzeichen in der CSV-Datei sind unerwünscht (Kommas statt Semikolons).

    • Lösung: Stelle sicher, dass du das local:=True beim Speichern verwendest. Dies stellt sicher, dass die in den Systemeinstellungen festgelegten Trennzeichen verwendet werden.
  • Problem: E-Mail-Anhang wird nicht korrekt versendet.

    • Lösung: Erstelle ein E-Mail-Objekt anstelle des eingebauten Dialogs, um die Datei als Anhang zu versenden.

Alternative Methoden

Eine alternative Methode zur Umwandlung der Excel-Datei in CSV und zum Versenden per E-Mail ist die Verwendung eines VBA-Skripts, das die Datei manuell öffnet und als Anhang hinzufügt. Hier ein Beispiel:

Sub SendCSV()
    Dim OutlookApp As Object
    Dim OutlookMail As Object
    Dim strDateiname As String

    ' Speichern der Excel-Datei als CSV
    strDateiname = "C:\Temp\AQ03.csv"
    ActiveSheet.SaveAs Filename:=strDateiname, FileFormat:=xlCSV, CreateBackup:=False, local:=True

    ' E-Mail erstellen
    Set OutlookApp = CreateObject("Outlook.Application")
    Set OutlookMail = OutlookApp.CreateItem(0)

    With OutlookMail
        .To = "mustername@musterfirma.com"
        .Subject = "Musterbetreff"
        .Body = "Hier ist die CSV-Datei."
        .Attachments.Add strDateiname
        .Send
    End With

    MsgBox "E-Mail gesendet."
End Sub

Praktische Beispiele

  1. Einfache CSV-Konvertierung: Wenn du eine einfache Excel-Tabelle hast, die du in eine CSV-Datei umwandeln möchtest, kannst du das oben genannte Makro verwenden.
  2. CSV-Datei mit benutzerdefiniertem Trennzeichen: Verwende Andreas' Vorschlag für ein Makro, das dir erlaubt, das Trennzeichen auszuwählen:
Sub SaveCSV()
    Dim Bereich As Object, Zeile As Object, Zelle As Object
    Dim strTemp As String
    Dim strDateiname As String
    Dim strTrennzeichen As String

    strDateiname = InputBox("Wie soll die CSV-Datei heißen (c:\test.csv)?", "CSV-Export")
    strTrennzeichen = InputBox("Welches Trennzeichen soll verwendet werden?", "CSV-Export", ",")

    ' Export-Logik hier...
End Sub

Tipps für Profis

  • CSV-Datei anpassen: Wenn du spezielle Anforderungen an das Format deiner CSV-Datei hast, passe das VBA-Skript entsprechend an.
  • Automatisierung: Du kannst die Umwandlung und den E-Mail-Versand automatisieren, indem du das Makro in einen Zeitplan einfügst oder auf bestimmte Ereignisse in Excel reagierst.
  • PDF in CSV umwandeln: Wenn du PDF-Dateien in CSV umwandeln möchtest, kannst du spezielle Tools oder Skripte verwenden, um die Umwandlung zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich eine xls-Datei in eine csv-Datei umwandeln?
Du kannst die Datei in Excel öffnen und dann die "Speichern unter"-Option wählen, um das Format auf CSV zu ändern.

2. Warum sind die Trennzeichen in meiner CSV-Datei anders als erwartet?
Das liegt oft an den regionalen Einstellungen deines Systems. Achte darauf, die local:=True-Option zu verwenden, um die richtigen Trennzeichen zu sichern.

3. Wie versende ich die CSV-Datei automatisch per E-Mail?
Du kannst dies mit einem VBA-Makro tun, wie in den obigen Beispielen gezeigt. Stelle sicher, dass du Zugriff auf Outlook hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige