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

aus Excel-Tabellenblatt Blatt als PDF

aus Excel-Tabellenblatt Blatt als PDF
25.03.2021 16:35:00
Heiko
https://www.herber.de/bbs/user/145120.xlsm
Ziel: Excel-Tabellenblatt per Makro als PDF versenden, an eine Mailadresse die im Blatt steht und in einen Pfad abspeichert der auch im Blatt steht.
Ich habe mir aus bestehenden Codes die man hier zur Verfügung gestellt hat, einige Zusammengestellt um in einer
Excel-Tabelle folgendes zu erreichen:
1. Mail Button anklicken--- funktioniert
2. Excel-Blatt soll als PDF abgespeichert werden unter dem Pfad den ich in Zelle R1 eintrage (Pfad sollte man ändern können) (bisher muss ich den Pfad im Makro hinterlegen)
3. Pdf soll an Mailadresse aus Zelle D16 geschickt werden--- funktioniert
4. Mailstandardtext gebe ich im Makro an --- funktioniert
Hat jemand eine Idee wie ich den Pfad in eine Excel-Zelle eintrage und das Makro den Pfad zum Speichern ausliest?
Gruß

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: aus Excel-Tabellenblatt Blatt als PDF
25.03.2021 17:25:05
Werner
Hallo,
das hier:
  • Const MyPath As String = "D:\Test-Ablage"

  • löschen.
    Code:
    
    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
    Dim MyPath        As String
    'define temporary Path and Filename
    With Worksheets("Bestellung")
    If .Range > ("R1")  "" Then
    MyPath = Worksheets("Bestellung").Range("R1")
    Else
    MsgBox "Fehler: Speicherpfad in Zelle R1 fehlt."
    Exit Sub
    End If
    End With
    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
    End Sub
    

    Gruß Werner

    Anzeige
    AW: aus Excel-Tabellenblatt Blatt als PDF
    25.03.2021 18:19:42
    Heiko
    Dann kommt Laufzeitfehler 450:
    Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft
    Wenn ich auf debuggen gehe, springt er zu
    If .Range > ("R1") <> "" Then ----- wird gelb unterlegt
    das ist das Gesamte:
    Option Explicit
    'Const MyPath As String = "D:\Test-Ablage" '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("d16").Value
    'CC-Adressen: keine. Hier kannst du weitere eintragen, direkt oder als Zellreferenz
    MailCC = ""
    'Betreff: Workbook-Name und Datum
    MailSubject = ActiveSheet.Name & " " & Format(Date, "DD.MMM.YYYY")
    'Standardtext, im Maildisplay noch änderbar
    MailText = "Sehr geehrte Damen und Herren,
    beigefügt senden wir Ihnen eine Bestellung.
    Freundliche Grüße
    Hans Musterverkäufer
    Teststrasse
    39999 Teststadt" '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
    'http://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
    Dim MyPath        As String
    'define temporary Path and Filename
    With Worksheets("Bestellung")
    If .Range > ("R1")  "" Then
    MyPath = Worksheets("Bestellung").Range("R1")
    Else
    MsgBox "Fehler: Speicherpfad in Zelle R1 fehlt."
    Exit Sub
    End If
    End With
    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
    End Sub
    


    Anzeige
    AW: aus Excel-Tabellenblatt Blatt als PDF
    25.03.2021 19:40:49
    Werner
    Hallo,
    das "größer" gehört da auch nicht hin, keine Ahnung wie das da reingerutscht ist.
  • If .Range("R1") "" Then

  • Gruß Werner

    AW: aus Excel-Tabellenblatt Blatt als PDF
    25.03.2021 18:31:07
    Alwin
    ich habe nur die nötigen Veränderungen in deiner Ausgangsprogrammierung vorgenommen:
    'Makro zum senden des einzelnen Tabellenblattes als PDF direkt aus Excel
    'hab ich mir aus den Foren gezogen
    'https://www.herber.de/forum/archiv/1320to1324/1320717_Tabellenblatt_als_PDf_versenden.html
    Option Explicit
    Dim MyPath As String
    Sub SendSheetAsPDF()
    Dim MailTo As String
    Dim MailCC As String
    Dim MailSubject As String
    Dim MailText As String
    MyPath = Sheets("Bestellung").Range("R1")
    'Email Adresse aus f14 auslesen
    MailTo = ActiveSheet.Range("d16").Value
    'CC-Adressen: keine. Hier kannst du weitere eintragen, direkt oder als Zellreferenz
    MailCC = ""
    'Betreff: Workbook-Name und Datum
    MailSubject = ActiveSheet.Name & " " & Format(Date, "DD.MMM.YYYY")
    'Standardtext, im Maildisplay noch änderbar
    MailText = "Sehr geehrte Damen und Herren,
    beigefügt senden wir Ihnen eine Bestellung.
    Freundliche Grüße
    Hans Musterverkäufer
    Teststrasse
    39999 Teststadt" '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
    'http://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
    AW: aus Excel-Tabellenblatt Blatt als PDF
    25.03.2021 18:40:19
    Alwin
    Sorry habe gerade gesehen dass sich die Formussoftware geändert hat. Damit ist das leider etwas schlecht zu lesen.
    anbei die korrigierte Datei:
    https://www.herber.de/bbs/user/145125.xlsm

    AW: aus Excel-Tabellenblatt Blatt als PDF
    25.03.2021 19:50:41
    Heiko
    Alwin vielen Dank,
    ist es auch noch möglich, dass man es so einstellt, dass es egal ist wie das Excel-Tabellenblatt heißt.
    Momentan muss es Bestellung heißen. Vielleicht gibt es in der Datei aber mehrere Tabellenblätter.
    z.B. Blatt Bestellung Müller, Blatt Bestellung Meier, Blatt Bestellung Schulze
    Im Grunde soll immer eine PDf von der Seite gespeichert und per Mail versand werden, auf der ich den Makro-Button anklicke, also
    das aktive Tabellenblatt.
    Kann man das verstehen was ich meine?

    Anzeige
    AW: aus Excel-Tabellenblatt Blatt als PDF
    25.03.2021 20:14:07
    Heiko
    Sorry Alwin, ich hätte noch eine Bitte.
    Geht es auch noch, dass beim Speichernamen, zusätzlich der Blattnamen mit ausgegeben wird?

    AW: aus Excel-Tabellenblatt Blatt als PDF
    25.03.2021 20:04:32
    Alwin
    Wenn du in jedem Arbeitsblatt dieselbe Oberfläche verwenden willst, nimm statt Sheets("Bestellung") dann einfach AktiveSheet. Aber wozu das eigentlich. Es ist einfacher ins Adressfeld einfach via Dropdown und SVERWEIS aus einer Adressliste eines weiteren Arbeitsblattes die Anschrift und weiter dazu gehörige Daten einzulesen. Der Rest unterliegt sowieso ständigen Anpassungen.

    AW: aus Excel-Tabellenblatt Blatt als PDF
    25.03.2021 20:29:24
    Heiko
    Stimmt da hast Du recht.
    Man möchte es nur so haben. Ich versuche noch mal meine Kollegen zu überzeugen.
    Danke

    Anzeige
    AW: aus Excel-Tabellenblatt Blatt als PDF
    26.03.2021 09:38:38
    Alwin
    anbei noch die Ergänzung Arbeitsblattname in PDF Datei:
    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 & "\" & ActiveSheet.Name & "_" & 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
    AW: aus Excel-Tabellenblatt Blatt als PDF
    26.03.2021 14:07:02
    Heiko
    Dann kommt eine Fehlermeldung:
    Fehler beim Kompilieren
    Syntaxfehler
    und diese Stelle wird rot markiert:
    'define temporary Path and Filename
    AWS = MyPath & "\" & ActiveSheet.Name & "_" & Format(Date, "YYYYMMDD") & "_" & Format(Time, " _
    hhmmss") & "_" & WorksheetFunction.Substitute(ActiveWorkbook.Name, ".xlsm", "")
    Das ist jetzt der gesamte Code:
    Option Explicit
    Dim MyPath As String
    Sub SendSheetAsPDF()
    Dim MailTo As String
    Dim MailCC As String
    Dim MailSubject As String
    Dim MailText As String
    MyPath = Sheets("Bestellung").Range("R1")
    'Email Adresse aus f14 auslesen
    MailTo = ActiveSheet.Range("d16").Value
    'CC-Adressen: keine. Hier kannst du weitere eintragen, direkt oder als Zellreferenz
    MailCC = ""
    'Betreff: Workbook-Name und Datum
    MailSubject = ActiveSheet.Name & " " & Format(Date, "DD.MMM.YYYY")
    'Standardtext, im Maildisplay noch änderbar
    MailText = "Sehr geehrte Damen und Herren,
    beigefügt senden wir Ihnen eine Bestellung.
    Freundliche Grüße
    Hans Musterverkäufer
    Teststrasse
    39999 Teststadt" '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
    'http://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 & "\" & ActiveSheet.Name & "_" & 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
    AW: aus Excel-Tabellenblatt Blatt als PDF
    26.03.2021 16:35:42
    Heiko
    Alwin,
    super, super klasse.
    Vielen, vielen dank.
    Jetzt habe ich nur noch eine Frage. Ich versteh den letzten Teil des Codes nicht. Wie gesagt hatte ich den Code ja
    entnommen, aus einem anderen Beitrag dieses Forums und jetzt umgebaut um auf meine Bedürfnisse.
    Am Ende des Codes steht mit Hochstrich:
    '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
    Nach Deiner Hilfe wird das Tabellenblatt als PDF in ein Verzeichnis aus Zelle R1 geschrieben. Da wird doch nichts gelöscht, oder
    versteh ich es einfach nicht :-(
    Kannst Du mir einen Rat geben?

    Anzeige
    AW: aus Excel-Tabellenblatt Blatt als PDF
    26.03.2021 17:25:21
    Alwin
    Kill AWS macht nichts anderes als die für das E-Mail generierte Pdf-Datei nach dem Versand zu löschen.

    AW: aus Excel-Tabellenblatt Blatt als PDF
    26.03.2021 17:37:58
    Heiko
    Prima,
    Du hast mir sehr geholfen. Vielen, vielen Dank!
    Großen Respekt von mir!!!
    gruß und Danke
    heiko

    311 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige