Excel VBA PDF mit mehreren Tabellenblättern speichern und Link per Mail versenden
Hi zusammen,
ich habe in meinem Excel-Portfolio einiges bzgl. PDF per VBA generieren, diese per Mail verschicken etc.
(Alles aus der Historie gesammelt) - das know how von mir sieht so aus, dass ich ungefähr weiß was möglich ist,
bzw. dies abschätzen kann, und mich dann im Netz schlau mache, wie man dies umsetzen kann...
Hier habe ich allerdings keinen blassen Schimmer wie ich vorgehen sollte...
Ich möchte gerne per CommandButton Folgendes machen:
Speichern eines PDF´s von Tabellenblatt "Tabelle2" und "Tabelle5" an einem vorgegebenen Speicherort
Als Filename soll die Zelle "O3" und "_" und "AA3" des ursprünglichen Tabellenblattes "Tabelle2" dienen.
Danach soll eine Mail generiert werden, mit exakt diesem Link dorthin (vorgegebene Empfänger, body etc... )
ich habe in meinem Excel-Portfolio einiges bzgl. PDF per VBA generieren, diese per Mail verschicken etc.
(Alles aus der Historie gesammelt) - das know how von mir sieht so aus, dass ich ungefähr weiß was möglich ist,
bzw. dies abschätzen kann, und mich dann im Netz schlau mache, wie man dies umsetzen kann...
Hier habe ich allerdings keinen blassen Schimmer wie ich vorgehen sollte...
Ich möchte gerne per CommandButton Folgendes machen:
Speichern eines PDF´s von Tabellenblatt "Tabelle2" und "Tabelle5" an einem vorgegebenen Speicherort
Als Filename soll die Zelle "O3" und "_" und "AA3" des ursprünglichen Tabellenblattes "Tabelle2" dienen.
Danach soll eine Mail generiert werden, mit exakt diesem Link dorthin (vorgegebene Empfänger, body etc... )
Please also mark the comments that contributed to the solution of the article
Content-Key: 436012
Url: https://administrator.de/contentid/436012
Printed on: April 25, 2024 at 16:04 o'clock
10 Comments
Latest comment
dass ich ungefähr weiß was möglich ist,
bzw. dies abschätzen kann, und mich dann im Netz schlau mache, wie man dies umsetzen kann...
Und wieso machst du das nicht??bzw. dies abschätzen kann, und mich dann im Netz schlau mache, wie man dies umsetzen kann...
Naja, bidde für dich zum basteln ...
Sub SaveAsPDFAndMail()
Dim strFilePath as String, arrSheets as Variant, sh as String
With Sheets("Tabelle2")
strFilePath = Environ("TEMP") & "\" & .Range("O3").Value & "_" & .Range("AA3").Value & ".pdf"
arrSheets = Array("Tabelle2", "Tabelle5")
For Each sh In arrSheets
Sheets(sh).Select
Sheets(sh).UsedRange.Select
Next
Sheets(arrSheets).Select
Selection.ExportAsFixedFormat Filename:=strFilePath, Type:=xlTypePDF, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=False
With CreateObject("Outlook.Application").CreateItem(0)
.Subject = "Pdf im Anhang"
.To = "user@domain.tld"
.Body = "Anbei das Dokument"
.Attachments.Add strFilePath
.Display
'.Send
End With
End With
End Sub
Hallo,
https://www.google.com/search?q=windows+umgebungsvariable+setzen
Gruß,
Peter
Zitat von @Flitzer:
ich bin der Typ VBA´ler der sich häppchenweise alles zusammensucht und dies dann irgendwie verhackstückt...
Dann solltest du ja genug Zeit gehabt haben es mak zu Lernen...ich bin der Typ VBA´ler der sich häppchenweise alles zusammensucht und dies dann irgendwie verhackstückt...
Im u.g. Code fehlt die Deklaration der Variablen, hier komme ich nicht weiter.
Ich sehe unten keinen Code.Und mir ist nicht ganz bewusst, wo ich den festen Laufwerkspfad eintrage - Vermutlich "TEMP" ersetzen oder?
Im code von @139374 ist vom Pfad den die Umgebungsvariable mit Namen TEMP enthält. Falls du keinen Umgebungsvariable namnes TEMP hast... Mach ein CMD Fenster (KJonsolenfenster) auf und gebe dort mal "set"und Eingabetaste ein. Dan siehst du ob es eine Umgebungsvariable namens TEMP bei dir gibt. Enn nicht, eine Umgebungsvaraible namens TEMP anlegen und dort mit deinen Pfad füllen. Der code oben funktioniert.https://www.google.com/search?q=windows+umgebungsvariable+setzen
Gruß,
Peter
richtig. Du nicht.
Hallo,
Wenn schon einer sagt das er debuging betreibt dann sollte er mehr draufhaben als hier vorexerziert.
Gruß,
Peter
Zitat von @Flitzer:
Variable nicht definiert erscheint beim Abspielen und Debug geht auf "strFilePath"
Welche genaue Fehlermeldung kommt den bei deinen Code oder dürfen wir uns eine Fehlernummer aussuchen?Variable nicht definiert erscheint beim Abspielen und Debug geht auf "strFilePath"
Dim strfilepath As String
Bedeutet das eine Variable als StrFilepath benamst wird, wobei das str uns Menschen darauf hinweisen soll das dort ein Stringwert enthalten sein sollte. Auch ein nichts kann ein Stringwert darstellen. Bis jetzt ist nur die leere Variable mit NICHTS als Wert Definiert.Nun gibt es eine Fehlermeldung... Laufzeitfehler 1004
Wo? In welcher Zeile deines Codes? Bei welche Funktion, Variable oder sonstetwas?Das Dokument wurde nicht gespeichert, ist möglicherweise geöffnet oder beim Speichern ein Fehler aufgetreten
Mit sicherheit ist er nicht mehr geöffnet wenn du dein VBA Code beendest.Wenn schon einer sagt das er debuging betreibt dann sollte er mehr draufhaben als hier vorexerziert.
Gruß,
Peter
m u.g. Code fehlt die Deklaration der Variablen, hier komme ich nicht weiter.
Nicht zwingend notwendig, einfach oben das Option Explicit in deinem Projekt entfernen, dann ist eine vorherige Deklaration nicht zwingend . Ich trage sie dir aber gerne nach.Und mir ist nicht ganz bewusst, wo ich den festen Laufwerkspfad eintrage - Vermutlich "TEMP" ersetzen oder?
Das Konstrukt Environ("TEMP") liefert wie der Name schon vermuten lässt den temporären Pfad als String zurück. Jetzt weist du was zu tun ist. Wenn nicht besuche doch einen VBA Kurs! Das ist hier ja ein Admin-Forum und kein "bring mir Programmieren bei Forum". Und als Entwickler, welchen du dich schimpfst, solltest du den Satz "Lese ich mich ein" zur Genüge kennen. Also hinsetzen, Zeile für Zeile durcharbeiten, und bei Unklarheiten in der Doku nachschlagen, und schon hast du deine Lernerfolge. ich bin der Typ VBA´ler der sich häppchenweise alles zusammensucht und dies dann irgendwie verhackstückt...
Allerschlechteste Voraussetzungen! Ohne Grundlagen wirst du immer wieder irgendwo hängen bleiben, also einmal "richtig" anfangen als dauernd nur halbherzig.