flitzer
Goto Top

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... )

Content-Key: 436012

Url: https://administrator.de/contentid/436012

Printed on: April 25, 2024 at 16:04 o'clock

Mitglied: 139374
139374 Apr 03, 2019 updated at 14:25:38 (UTC)
Goto Top
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??

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
Holderidudoedeldi
Member: Flitzer
Flitzer Apr 03, 2019 at 12:21:09 (UTC)
Goto Top
Hallo Timeout,

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.

Und mir ist nicht ganz bewusst, wo ich den festen Laufwerkspfad eintrage - Vermutlich "TEMP" ersetzen oder?
Member: Pjordorf
Pjordorf Apr 03, 2019 at 12:45:06 (UTC)
Goto Top
Hallo,

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...

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
Member: Flitzer
Flitzer Apr 03, 2019 updated at 13:01:00 (UTC)
Goto Top
    With Sheets("Antrag")  
        strFilePath = Environ("\\bo.com\df\DfsDE\Lo\S\ba\HR\Anh") & "\" & .Range("O8").Value & "_" & .Range("AA8").Value & ".pdf"  

Variable nicht definiert erscheint beim Abspielen und Debug geht auf "strFilePath"

Dim strfilepath As String
Dim arrsheets As Variant
Dim sh As Variant

das habe ich nun deklariert...

Nun gibt es eine Fehlermeldung... Laufzeitfehler 1004

Das Dokument wurde nicht gespeichert, ist möglicherweise geöffnet oder beim Speichern ein Fehler aufgetreten
Member: Kraemer
Kraemer Apr 03, 2019 at 13:14:46 (UTC)
Goto Top
Schlimm - Copy & Paste bis zum verderben. Man nutzt keinen Code, den man nicht verstanden hat!
Member: Flitzer
Flitzer Apr 03, 2019 at 13:17:28 (UTC)
Goto Top
ok danke dennoch... dachte ich mir fast, dass wieder nur solche kommentare kommen.
schade...

aber o.g. code ist eh nicht das was ich suche... gleiche baustelle wie vorher.

möchte kein pdf mailen, sondern einen link, und das pdf vorher ablegen.

aber gut... denke ich komme hier nicht weiter.

merci timout dass du wenigstens einen Anfang hierfür gemacht hast,
Member: Flitzer
Flitzer Apr 03, 2019 at 13:18:49 (UTC)
Goto Top
Ach und Krämer...

dir sei gesagt... ich hoffe du bist nicht verheiratet... kann mir keiner erzählen dass er Frauen versteht... face-smile

Ich darf ja anscheinend auch keine Codes nutzen die ich nicht versteh.
Member: Kraemer
Kraemer Apr 03, 2019 at 13:18:54 (UTC)
Goto Top
Zitat von @Flitzer:
aber gut... denke ich komme hier nicht weiter.
richtig. Du nicht.
Member: Pjordorf
Pjordorf Apr 03, 2019 at 13:33:13 (UTC)
Goto Top
Hallo,

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?

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
Mitglied: 139374
139374 Apr 03, 2019, updated at Apr 06, 2019 at 05:49:47 (UTC)
Goto Top
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 face-wink. 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.