Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Tabellenblatt als PDf versenden

Tabellenblatt als PDf versenden
02.07.2013 13:08:40
Beat
Hallo zusammen,
Ich habe bereit folgendes Problem geschildert.
Ich möchte aus einem Tabellenblatt die E-Mailadresse auslesen(F14),
Disselbe Tabellenblatt als PDF an diese E-Mailadresse versenden.
ich habe von Klaus sehr gute Infos bekommen, komme aber doch nicht weiter.
Vielleicht kannst du Klaus mir nochmals helfen.
Vielen Dank.
Beat
https://www.herber.de/forum/archiv/1316to1320/t1319477.htm#1320601
Userbild
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 f14 auslesen
MailTo = ActiveSheet.Range("F14").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

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
xl2007 oder 2010?
02.07.2013 13:23:47
Klaus
Hallo Beat,
wie gesagt, bei mir ging der Code. Lad bitte mal die Datei selbst hoch!
Hast du jetzt xl2007 oder xl2010?
Grüße,
Klaus M.vdT.

AW: xl2007 oder 2010?
02.07.2013 14:21:46
Beat
Hallo Klaus,
ich habe Office 2010
Hier die Datei
https://www.herber.de/bbs/user/86168.xlsm
Gruss
Beat

Anzeige
läuft einwandfrei
02.07.2013 14:35:26
Klaus
Hallo Beat,
das Makro läuft bei mir einwandfrei durch. Wenn du möchtest und die Mail-Adresse stimmt, kann ich ja mal auf "senden" clicken ...
Sorry, Fehler nicht reproduzierbar und damit kann ich dir dann auch nicht helfen!
Offtopic: solche Rekordercodes
Sub Ausblenden_ab21()
' Ausblenden_ab21 Makro
Rows("36:45").Select
Selection.EntireRow.Hidden = True
End Sub

lassen sich ganz wunderbar verkürzen, und es ist auch nicht nötig dass Excel die Zeilen dafür anfasst:
Sub Ausblenden_ab21()
' Ausblenden_ab21 Makro
Rows("36:45").Hidden = True
End Sub

Dazu empfehle ich folgenden Link:
http://www.online-excel.de/excel/singsel_vba.php?f=78
Grüße,
Klaus M.vdT.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Excel Tabellenblatt als PDF per E-Mail versenden


Schritt-für-Schritt-Anleitung

Um ein Excel Tabellenblatt als PDF per E-Mail zu versenden, kannst du das folgende VBA-Makro verwenden. Dieses Makro liest die E-Mail-Adresse aus einer bestimmten Zelle (in diesem Fall F14) und versendet das aktive Tabellenblatt als PDF-Anhang.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject (deine Datei)" klickst und "Modul einfügen" wählst.
  3. Kopiere den folgenden Code in das Modul:
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 F14 auslesen
    MailTo = ActiveSheet.Range("F14").Value
    'CC-Adressen: keine
    MailCC = ""
    'Betreff: Workbook-Name und Datum
    MailSubject = ActiveWorkbook.Name & " " & Format(Date, "DD.MMM.YYYY")
    'Standardtext, im Maildisplay noch änderbar
    MailText = "Hallo Welt, hier ist eine Datei!"

    Call SendSheetOutlook(MailSubject, MailTo, MailCC, MailText)
End Sub

Private Sub SendSheetOutlook(sSubject As String, sTo As String, sCC As String, sText As String)
    Dim olApp As Object
    Dim AWS 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)
        .To = sTo
        .CC = sCC
        .Subject = sSubject
        .HTMLBody = sText
        .Attachments.Add AWS
        .Send
    End With
    'remove TEMP file
    'Kill AWS 'Auskommentieren, wenn das PDF behalten werden soll
End Sub
  1. Passe den MyPath an, um den Speicherort für die PDF-Dateien festzulegen.
  2. Schließe den VBA-Editor und führe das Makro SendSheetAsPDF aus.

Häufige Fehler und Lösungen

  • Kein E-Mail-Client geöffnet: Stelle sicher, dass Microsoft Outlook installiert und geöffnet ist, da das Makro Outlook verwendet, um E-Mails zu versenden.
  • Fehler bei der E-Mail-Adresse: Überprüfe, ob die E-Mail-Adresse in Zelle F14 korrekt eingegeben ist.
  • Dateipfad nicht gültig: Achte darauf, dass der angegebene Pfad in MyPath existiert und du Schreibrechte hast.

Alternative Methoden

Wenn du kein VBA verwenden möchtest, kannst du das Excel Tabellenblatt manuell als PDF speichern und dann die PDF-Datei per E-Mail versenden:

  1. Wähle das Tabellenblatt aus und gehe zu Datei > Exportieren > PDF/XPS-Dokument erstellen.
  2. Speichere die Datei und öffne dein E-Mail-Programm, um die PDF-Datei als Anhang zu senden.

Praktische Beispiele

  • Einzelnes Tabellenblatt als PDF versenden: Das obige Makro versendet das aktive Tabellenblatt. Achte darauf, dass das gewünschte Blatt aktiv ist, bevor du das Makro ausführst.
  • PDF-Datei an mehrere Empfänger senden: Du kannst die MailCC-Variable anpassen, um CC-Empfänger hinzuzufügen.

Tipps für Profis

  • Automatisierung: Du kannst das Makro so anpassen, dass es automatisch in regelmäßigen Abständen E-Mails versendet.
  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen in dein Makro ein, um Probleme beim Versenden von E-Mails besser zu diagnostizieren.

FAQ: Häufige Fragen

1. Wo finde ich den VBA-Editor? Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

2. Kann ich auch mehrere Tabellenblätter als PDF versenden? Ja, du kannst eine Schleife in das Makro einfügen, um mehrere Blätter nacheinander zu exportieren und zu versenden.

3. Funktioniert das Makro auch in Excel 2016? Ja, das Makro funktioniert in Excel 2010 und neueren Versionen. Achte darauf, dass die VBA-Einstellungen korrekt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige