Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1316to1320
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

Excel als Pdf direkt mailen

Excel als Pdf direkt mailen
25.06.2013 08:07:09
Beat
Hallo,
Gibt es ein Macro das das aktve Excelblatt in ein Pdf umwandelt und direkt per E-Mail an eine bestimmte Adresse sendet?
Vielen Dank für eure Hilfe.
Gruss
Beat

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel als Pdf direkt mailen
25.06.2013 08:10:50
Klaus
Hallo Beat,
Gibt es ein Macro
ja :-P
das das aktve Excelblatt in ein Pdf umwandelt
unter xl2010 geht das sehr einfach mit "speichern als PDF". Prüf bitte mal ob du unter 2007 diese Funktion hast.
und direkt per E-Mail
MS Outlook? Lotus Notes? Webmail? Was ganz anderes? (Für MS-Outlook hab ich eine fertige Lösung rumliegen ...)
an eine bestimmte Adresse sendet?
Welche Adresse? Sagen wir mal, an "Muster@Firma.de". Wo steht die Adresse? Kann sie direkt im Code hinterlegt werden, oder muss sie änderbar sein?
Weitere Informationen:
Betreff? (Vorschlag: Dateiname & Datum & Uhrzeit
Inhalt der Mail? Variable oder fixe Anrede usw..
Grüße,
Klaus M.vdT.

Anzeige
add: Klaus:...Excel als Pdf direkt mailen
25.06.2013 08:35:59
lesshuhn
Hallo Klaus,
also die Variante für Outlook würde mich auch interessieren. Könntest du sie mir einmal mit ein wenig Erklärung zukommen lassen.
gruß
Hartmut

AW: add: Klaus:...Excel als Pdf direkt mailen
25.06.2013 08:45:06
Klaus
Hallo Hartmut,
folgendes Makro (mit freundlicher Hilfe von mumpel, dem Outlook-Experten):
nimmt sich ein Tabellenblatt,
speichert es temporär als Values ohne Formeln und Makros,
öffnet ein "New Mail" in Outlook,
füllt diese mit Betreff, Anrede, Text und Signatur,
hängt das Tabellenblatt dort als Anhang rein,
löscht die temporäre Datei wieder.
Unten habe ich noch ein Beispiel angehängt, wie man das ganze aus laufendem Code komfortabel aufrufen (und variabel gestalten) kann. zB könnte man die Variable sTo die Mailadressen aus einer Zelle auslesen lassen usw usw.
Das ganze als "Sende PDF" umzuschreiben, oder Formate zu kopieren / zu setzen statt nur Werte, ist dann eine Kleinigkeit.
Kommentare und Erklärungen im Code. Alles auf englisch, weil ich einfach mein Standardmakro kopiert habe und keine Lust habe alles fürs Forum zu übersetzen :-)
Grüße,
Klaus M.vdT.
Option Explicit
'Module to send Excel-Sheet directly with outlook
'April 2013 by Klaus M.vdT.
'original Code by mumpel / www.herber.de / 11.04.2013 11:23:25
'https://www.herber.de/forum/messages/1308295.html
Private Sub SendSheetOutlook(wkbOld As Workbook, wksOld As String, sSubject As String, sTo As _
String, sCC As String, sText As String)
Dim olApp         As Object
Dim AWS           As String
Dim olSheetsCount As Integer
Dim olOldBody     As String
'define temporary Path and Filename
AWS = wkbOld.Path & "\" & Format(Date, "YYYYMMDD") & "_" & Format(Time, "hhmmss") & "_" & _
wkbOld.Name
'remember ammount of tables for new sheet
olSheetsCount = Application.SheetsInNewWorkbook
'set ammount of tables to one, so new file will not have 3-x empty tables
Application.SheetsInNewWorkbook = 1
'add new empty workbook. Will be in FOCUS from now on!
Workbooks.Add
'restore ammount of tables to old value
Application.SheetsInNewWorkbook = olSheetsCount
'copy entire sheet
wkbOld.Sheets(wksOld).Cells.Copy
'paste into new sheet as values, save sheet and close sheet under TEMP filename
With ActiveWorkbook
.Sheets(1).Range("A1").PasteSpecial xlPasteValues
.SaveAs Filename:=AWS, FileFormat:=xlOpenXMLWorkbookMacroEnabled
.Close
End With
'Make Email
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
.GetInspector.Display
olOldBody = .htmlBody
.To = sTo
.cc = sCC
.Subject = sSubject
.htmlBody = sText & olOldBody
.Attachments.Add AWS
End With
'remove TEMP file
Kill AWS
End Sub
'************ EXAMPLE ************
Sub SendExample()
'give variables to send-Makro like this!
Dim wkbThisBook As Workbook
Dim sSheet As String
Dim sText As String
Dim sTo As String
Dim sCC As String
Dim sSubject As String
Set wkbThisBook = ActiveWorkbook
sSheet = "Sheet1"
sTo = "Frank.Farmer@trash.de ; Karl.Ransaier@ist.tot"
sCC = ""
sText = "Dear Colleages br find mail attached br more text" 'use HTML Tags!
sSubject = "Todays File"
Call SendSheetOutlook(wkbThisBook, sSheet, sSubject, sTo, sCC, sText)
'CALL possible in one line!
'Call SendSheetOutlook(ActiveWorkbook, "Sheet1", "Todays File", "Frank Farmer ; Karl Ransaier ", _
"", "Dear Colleages  find mail attached ")
End Sub

Anzeige
AW: add: Klaus:...Excel als Pdf direkt mailen
25.06.2013 08:59:02
lesshuhn
Hallo Klaus,
erst einmal Danke dafür.
Ich werde es schnellstmöglich einmal ausprobieren.
Vielleicht hast du ja auch eine Lösung für mein Problem hier im Forum.
Danke nochmal und grüße vom Niederrhein
Hartmut

AW: add: Klaus:...Excel als Pdf direkt mailen
25.06.2013 20:33:45
Beat
Hallo Klaus,
also unter Excel 2007 gibt es "speichern als PDF".
Ich Arbeite mit Windows Life Mail.
Die E-Mailadresse steht auf dem Tabellenblatt zB. in "A1" und ist jedesmal verschieden, also muss abänderbar sein.
Betreff: Dateiname + Datum ist ok.
Inhalt der Mail wäre mit fixem Inhalt natürlich super, aber ich muss dem Inhalt sicher jedesmal noch einiges anfügen.
Genügt dir das?
Vielen dank für deine Hilfe
Gruss
Beat

Anzeige
Excel als PDF mailen mit "Windows Life Mail" ?
26.06.2013 08:23:15
Klaus
Hallo Beat,
die Adresse steht in A1 des Blattes, und dieses Blatt willst du versenden? Nun gut ... ich kenn ja deine Datei nicht.
"Windows Life Mail"
Sorry, da kann ich dir nicht helfen. Ich habe keine Ahnung, was das ist ...
Falls es dir trotzdem hilft (und fürs Archiv), poste ich hier einen Code um das aktive Blatt als PDF mittels Outlook zu verschicken - der Code ist getestet unter xl2010 mit Outlook2010.
Ich stelle aber den Beitrag wieder auf offen, ändere den Betreff und hoffe, dass jemand eine "Windows Life Mail" Lösung hat.
Option Explicit
Const MyPath As String = "C:\TestTmp\"    'Hier den Pfad anpassen, unter dem du die PDFs  _
speichern willst!
Sub SendSheetAsPDF()
Dim MailTo As String
Dim MailCC As String
Dim MailSubject As String
Dim MailText As String
'Email Adresse aus A1 auslesen
MailTo = ActiveSheet.Range("A1").Value
'CC-Adressen: keine. Hier kannst du weitere eintragen, direkt oder als Zellreferenz
MailCC = ""
'Betreff: Workbook-Name und Datum
MailSubject = ActiveWorkbook.Name & " " & Format(Date, "DD.MMM.YYYY")
'Standardtext, im Maildisplay noch änderbar
MailText = "Hallo Welt, (br) hier ist eine Datei!"   'HTML! die (br) gegen HTML-Zeilenumbruch  _
tauschen
Call SendSheetOutlook(MailSubject, MailTo, MailCC, MailText)
End Sub
'Makro to send Excel-Sheet directly with outlook
'April 2013 by Klaus M.vdT.
'MODIFIED June 2013: Send pdf, not xlsx!
'original Code by mumpel / www.herber.de / 11.04.2013 11:23:25
'https://www.herber.de/forum/messages/1308295.html
Private Sub SendSheetOutlook(sSubject As String, sTo As String, sCC As String, sText As String)
Dim olApp         As Object
Dim AWS           As String
Dim olOldBody     As String
'define temporary Path and Filename
AWS = MyPath & "\" & Format(Date, "YYYYMMDD") & "_" & Format(Time, "hhmmss") & "_" &  _
WorksheetFunction.Substitute(ActiveWorkbook.Name, ".xlsm", "")
'export File as PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=AWS, Quality:=xlQualityStandard,  _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
AWS = AWS & ".pdf"
'Make Email
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
.GetInspector.Display
olOldBody = .htmlBody
.To = sTo
.cc = sCC
.Subject = sSubject
.htmlBody = sText & olOldBody
.Attachments.Add AWS
End With
'remove TEMP file
'wenn du das PDF behalten möchtest, diese Zeile auskommentieren!
'sonst wird das temporäre PDF wieder gelöscht
Kill AWS
End Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: Excel als PDF mailen mit "Windows Life Mail" ?
01.07.2013 13:47:32
Beat
Hallo zusammen,
Ich habe das Makro bei mir im Geschäft (wo ich Outlook 2010 habe)getestet, aber ich bekomme jeweils eine Fehlermeldung.
Siehe Bild im Anhang.
Was mache ich falsch?
Userbild
Vielen dank für eure Hilfe
Beat

AW: Excel als PDF mailen mit "Windows Life Mail" ?
01.07.2013 14:08:33
Klaus
Hi,
Du hast nur das obere Makro kopiert! In meinem Beitrag sind aber zwei Makros. Das untere, da wo das
*-Viereck drüber steht, musst du ebenfalls kopieren.
Grüße,
Klaus M.vdT.

AW: Excel als PDF mailen mit "Windows Life Mail" ?
01.07.2013 14:29:42
Beat
jezt habe ich alle kopiert, und trotzdem gibt es eine Fehlermeldung "Laufzeitfehler 1004"
Userbild
Gruss
Beat

Anzeige
SaveAs *.PDF in 2007 anders?
01.07.2013 15:19:29
Klaus
Hi Beat,
dazu kann ich nicht viel sagen, da exakt diese Zeile bei mir funktioniert hat. Vielleicht geht das PDF-Erstellen in 2007 ja anders als in 2010? Mach mal folgendes:
- neues Blatt erstellen, da schreibst du in A1 "Hallo Welt"
- den Makrorekorder an
- clicke auf speichern, speichern unter, speichern als, *.PDF
- speichere irgendwo hin
- Makrorekorder aus
- poste das entstandene Makro hier
bei mir (xl2010) kommt das heraus:
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\TestTMP\Book1.pdf", Quality:=xlQualityStandard, IncludeDocProperties:= _
True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Den Teil Filename:= "C:\TestTMP\Book1.pdf" habe ich dann durch die Variable AWS ersetzt, damit ist das der Code der oben steht. Vielleicht, hoffentlich, geht das mit dem 2007er Code genauso einfach?
Grüße,
Klaus M.vdT.

Anzeige
Thread geht morgen ins Archiv
01.07.2013 15:36:34
Klaus
Hallo Beat,
in einer viertelstunde oder so mach ich mich in den Feierabend auf. Morgen ist der Thread dann Weg ...
falls wir uns nicht mehr lesen, machst du morgen fix einen neuen Thread auf, kopierst das Makro-bisher darein und dann gehts weiter, ja?
Grüße,
Klaus M.vdT.

AW: SaveAs *.PDF in 2007 anders?
01.07.2013 15:46:58
Beat
Hallo Klaus,
im grossen und ganzen habe ich das selbe bekommen.
Sub Test1()
' Test1 Makro
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Dokumente und Einstellungen\bhaeberli\Desktop\Test1.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End Sub

Es wird auch richtig auf dem Desktop gespeichert,
Gruss
Beat

Anzeige
AW: SaveAs *.PDF in 2007 anders?
01.07.2013 15:58:02
Klaus
Hi,
dann probier doch mal, den Pfad durch die variable "AWS" zu ersetzen und ansonsten exakt deinen Rekordercode zu nehmen:
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
AWS, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Vielleicht bringt es auch was, wenn du die Zeile
AWS = AWS & ".pdf" probehalber mal VOR das PDF-Export setzt anstatt danach? Kann man nur ausprobieren.
So, endgültig mein letzter Post für heute! Morgen bitte in einem neuem Thread weitermachen :-)
Viel Erfolg!
Klaus M.vdT.
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige