Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1264to1268
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Exceltabelle mit Outlook als Textdatei versenden

Exceltabelle mit Outlook als Textdatei versenden
Thomas
Hallo liebe VBA-Experten!
Ich möchte aus einer Excelarbeitsmappe eine bestimmte Exceltabelle mit dem Namen "Daten"
mit Outlook versenden.
Den Quellcode zum Versenden habe ich:
Sub MailVersenden()
Dim outl As Object
Dim Mail As Object
Set outl = CreateObject("Outlook.Application")
Set Mail = outl.CreateItem(0)
Mail.Subject = "QMC"
Mail.Body = "Hallo" & Chr(13) & _
"anbei QMC im aktuellen Monat " & _
" Mit freundlichen Grüßen" & Chr(13) & _
" TL "
Mail.Display
Set outl = Nothing
Set Mail = Nothing
End Sub
Soweit, so gut! Jetzt soll aber die Exceltabelle "Datei" in eine Textdatei umkonvertiert werden und als
Anlage versandt werden.
Wer kann mir hier weiter helfen?
Vielen Dank
Thomas
AW: Exceltabelle mit Outlook als Textdatei versenden
02.06.2012 15:44:57
fcs
Hallo Thomas,
hier dein Makro mit den Ergänzungen für das Erstellen der Textdatei.
Gruß
Franz
Sub MailVersenden()
Dim outl As Object
Dim Mail As Object
Dim strPfad As String, strTextFile As String
On Error GoTo Fehler
'Verzeichnis und Name für Textdatei ggf. anpassen
strPfad = ThisWorkbook.Path
strTextFile = strPfad & Application.PathSeparator & "QMC_" & Format(Date, "YYYY-MM-DD") _
& ".txt"
'Fileformat für Textdatei und Anzeige für Warnungen ggf. anpassen
If fncMakeTextFile(wks:=ActiveWorkbook.Worksheets("Daten"), strFileName:=strTextFile, _
lngFileFormat:=xlTextWindows, bolDisplayAlerts:=False) = True Then
Set outl = CreateObject("Outlook.Application")
Set Mail = outl.CreateItem(0)
Mail.Subject = "QMC"
Mail.Body = "Hallo" & Chr(13) & _
"anbei QMC im aktuellen Monat " & _
" Mit freundlichen Grüßen" & Chr(13) & _
" TL "
Mail.Attachments.Add strTextFile, 1 ' 1 = olByValue
Mail.Display
Set outl = Nothing
Set Mail = Nothing
Else
MsgBox "Mail wurde nicht erstellt!", vbInformation + vbOKOnly, "Blatt ""Daten"" versenden"
End If
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
End Sub
Function fncMakeTextFile(wks As Worksheet, strFileName As String, _
Optional lngFileFormat As Long = xlTextWindows, _
Optional bolLocal As Boolean = True, _
Optional bolDisplayAlerts As Boolean = True) As Boolean
Dim wbTxt As Workbook
'Werte für Parameter lngFileformat
'xlCSV          = 6  CSV
'xlTextMac      = 19 Macintosh-Text
'xlTextWindows  = 20 Windows Text
'xlTextMSDOS    = 21 MSDOS-Text
'xlCSVMac       = 22 CSV (Macintosh)
'xlCSVWindows   = 23 CSV (Windows)
'xlCSVMSDOS     = 24 CSV (MSDOS)
'xlTextPrinter  = 36 Druckertext
'xlUnicodeText  = 42 Unicode Text
'xlCurrentPlatformText = -4158 Aktueller Plattformtext
On Error GoTo Fehler
'Tabellenblatt in neue Arbeitsmappe kopieren
wks.Copy
Set wbTxt = ActiveWorkbook
'Textdatei erstellen
Application.DisplayAlerts = bolDisplayAlerts
wbTxt.SaveAs Filename:=strFileName, FileFormat:=lngFileFormat, Local:=bolLocal
wbTxt.Close savechanges:=False
Application.DisplayAlerts = True
fncMakeTextFile = True
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
fncMakeTextFile = False
End Select
End With
End Function

Anzeige
AW: Exceltabelle mit Outlook als Textdatei versenden
02.06.2012 19:52:54
Thomas
Hallo Franz!
Vielen Dank für deine Hilfe!! Funktioniert ausgezeichnet.
Es gibt nur noch ein kleines Problem. In einigen Feldern wird in der Tabelle "Daten" das Ergebnis durch eine Function ermittelt. So habe ich z. B in den Zellen E3 / E4 / E5 der Tabelle eine Function hinterlegt, die das Ergebnis wieder gibt. Man müsste also die "Formeln" in "Werte" umwandeln und dann erst in eine Textdatei konvertieren. Nach dem Konvertieren sollen die Formeln wieder in die die Zelle eingegetragen werden, denn mit der Tabelle "Daten" wird immer gerechnet. Gibt es hier noch einen Weg? Mit meinen bescheidenen VBA-Kenntnissen komme ich hier leider nicht mehr weiter!
Anzeige
AW: Exceltabelle mit Outlook als Textdatei versenden
02.06.2012 20:37:49
Thomas
Hallo Franz!
Vielen Dank für deine Hilfe!! Funktioniert ausgezeichnet.
Es gibt nur noch ein kleines Problem. In einigen Feldern wird in der Tabelle "Daten" das Ergebnis durch eine Function ermittelt. So habe ich z. B in den Zellen E3 / E4 / E5 der Tabelle eine Function hinterlegt, die das Ergebnis wieder gibt. Man müsste also die "Formeln" in "Werte" umwandeln und dann erst in eine Textdatei konvertieren. Nach dem Konvertieren sollen die Formeln wieder in die die Zelle eingegetragen werden, denn mit der Tabelle "Daten" wird immer gerechnet. Gibt es hier noch einen Weg? Mit meinen bescheidenen VBA-Kenntnissen komme ich hier leider nicht mehr weiter!
Anzeige
AW: Exceltabelle mit Outlook als Textdatei versenden
02.06.2012 21:52:31
fcs
Hallo Thomas,
ich hab die Makros etwas angepasst.
Das Blatt "Daten" wird jetzt innerhalb der Arbeitsmappe kopiert, dann alle Formeln durch Werte ersetzt. Diese Kopie ohne Formeln wird dann in eine neue Mappe verschoben und die Textdatei erzeugt.
Gruß
Franz
Sub MailVersenden()
Dim outl As Object
Dim Mail As Object
Dim strPfad As String, strTextFile As String
Dim wksDaten As Worksheet
On Error GoTo Fehler
'Verzeichnis und Name für Textdatei ggf. anpassen
strPfad = ThisWorkbook.Path
strTextFile = strPfad & Application.PathSeparator & "QMC_" & Format(Date, "YYYY-MM-DD") _
& ".txt"
'Kopie von Blatt "Daten erstellen und Formeln durch Werte ersetzen
Worksheets("Daten").Copy before:=ActiveWorkbook.Sheets(1)
Set wksDaten = ActiveWorkbook.Sheets(1)
With wksDaten.UsedRange
.Value = .Value
End With
'Fileformat für Textdatei und Anzeige für Warnungen ggf. anpassen
If fncMakeTextFile(wks:=wksDaten, strFileName:=strTextFile, _
lngFileFormat:=xlTextWindows, bolDisplayAlerts:=False, bolCopy:=False) = True Then
Application.DisplayAlerts = True
Set outl = CreateObject("Outlook.Application")
Set Mail = outl.CreateItem(0)
Mail.Subject = "QMC"
Mail.Body = "Hallo" & Chr(13) & _
"anbei QMC im aktuellen Monat " & _
" Mit freundlichen Grüßen" & Chr(13) & _
" TL "
Mail.Attachments.Add strTextFile, 1 ' 1 = olByValue
Mail.Display
Set outl = Nothing
Set Mail = Nothing
Else
MsgBox "Mail wurde nicht erstellt!", vbInformation + vbOKOnly, _
"Blatt ""Daten"" versenden"
End If
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
Set wksDaten = Nothing
End Sub
Function fncMakeTextFile(wks As Worksheet, strFileName As String, _
Optional lngFileFormat As Long = xlTextWindows, _
Optional bolLocal As Boolean = True, _
Optional bolCopy As Boolean = True, _
Optional bolDisplayAlerts As Boolean = True) As Boolean
Dim wbTxt As Workbook
'bolLocal: True = Lokale Einstellungen für Trennzeichen verwenden (bei CSV)
'bolCopy:  True = Kopie des Tabellenblattes wird in neuer Arbeitsmappe erstellt _
False = Tabellenblatt wird in neue Arbeitsmappe verschoben
'Werte für Parameter lngFileformat
'xlCSV          = 6  CSV
'xlTextMac      = 19 Macintosh-Text
'xlTextWindows  = 20 Windows Text
'xlTextMSDOS    = 21 MSDOS-Text
'xlCSVMac       = 22 CSV (Macintosh)
'xlCSVWindows   = 23 CSV (Windows)
'xlCSVMSDOS     = 24 CSV (MSDOS)
'xlTextPrinter  = 36 Druckertext
'xlUnicodeText  = 42 Unicode Text
'xlCurrentPlatformText = -4158 Aktueller Plattformtext
On Error GoTo Fehler
'Tabellenblatt in neue Arbeitsmappe verschieben/kopieren
If bolCopy = True Then
wks.Copy
Else
wks.Move
End If
Set wbTxt = ActiveWorkbook
'Textdatei erstellen
Application.DisplayAlerts = bolDisplayAlerts
wbTxt.SaveAs Filename:=strFileName, FileFormat:=lngFileFormat, Local:=bolLocal
wbTxt.Close savechanges:=False
Application.DisplayAlerts = True
fncMakeTextFile = True
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
fncMakeTextFile = False
End Select
End With
End Function

Anzeige
AW: Exceltabelle mit Outlook als Textdatei versenden
02.06.2012 23:26:36
Thomas
Hallo Franz!
Es erscheint: Fehler Nr. 1004 "die Methode "Move" für das Objekt Worksheet ist fehltgeschlagen!"
Aber trotzdem Franz, du hast mir schon so viel geholfen. Dafür bedanke ich mich sehr.
AW: Exceltabelle mit Outlook als Textdatei versenden
03.06.2012 12:36:02
Thomas
Hallo Franz!
Ich habe eine Lösung gefunden. Ich benutze ja eine Hilfstabelle, in der ein Diagramm erzeugt wird,
welches ich auf einer UserForm anzeigen lasse. In diese Hilfstabelle werden ja die Daten als "Werte"
schon eingespielt, um das Diagramm darzustellen. Ich exportiere eben diese Tabelle als .txt Datei.
Funktioniert einwandfrei.
Dir nochmals vielen Dank für deine Bemühungen!! Du hast mir sehr weitergeholfen!!!
Thomas
Anzeige

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige