Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: pdf Versand per VBA - pdf Dateibenennung?

pdf Versand per VBA - pdf Dateibenennung?
18.12.2019 14:05:38
Lukas
Hallo zusammen,
ich habe eine Datei, in welcher per Schaltfläche (Formularelemente) ein Knopf eingebaut ist, der ein Makro ausführt, zum konvertieren der Datei in pdf und automatischer Erstellung einer Mail mit der pdf Datei als Anhang. Geht alles wunderbar, habe mir die Infos hier im Forum und sonst wo auf Google gesucht, jedoch habe ich Probleme, die pdf Datei automatisch umbenennen zu lassen. Ich füge mal meinen Code ein:
Sub Schaltfläche10_Klicken()
'** Dimensionierung der Variablen
Dim strPDF As String
Dim OutlookApp As Object, strEmail As Object
'** Vorgaben definieren
Set OutlookApp = CreateObject("Outlook.Application")
Set strEmail = OutlookApp.CreateItem(0)
'** PDF erzeugen
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Montagecheckliste, Quality:= _
xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
'** E-Mail versenden
strPDF = ThisWorkbook.Path & "\Montagecheckliste.pdf"
With strEmail
.Subject = "Montagecheckliste für Auftrag" 'Betreffzeile
.body = "Guten Tag, anbei die Montagecheckliste für oben genannten Auftrag. Schöne Grüße"
.Attachments.Add strPDF
.Display
'.Send 'Damit wir die E-Mail sofort versendet
Kill strPDF
End With
'** Objektvariablen wieder löschen
Set OutlookApp = Nothing
Set strEmail = Nothing
End Sub
ich bin jetzt so weit gekommen, dass die Datei "Montagecheckliste" heißt, dazu muss man das je an zwei Stellen ändern sonst kommt ein Fehler.
Ich hätte nun aber gerne als Zusatz, dass zum "Montagecheckliste" auch noch eine Auftragsnummer - das ist B4 in meiner Mappe - dazugefügt wird. Ich schaffs mit meinen laienhaften VBA Kenntnissen nicht, fand auch bei Google nichts. Vermutlich muss man nur die richtige Anführungszeichen und "und-Zeichen" Kombi eingeben, und dann eben dieser Zusatz: ActiveSheet.Range("B4")
Vielleicht könnt ihr mir helfen wie ich das korrekt umsetze, gerne bei Bedarf auch ein ganz neuer Code.
Besten Dank
lg Lukas
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: pdf Versand per VBA - pdf Dateibenennung?
18.12.2019 14:25:20
ede
Hallo zurück,
versuch mal so:

'** PDF erzeugen
strPDF = ThisWorkbook.Path & "\Montagecheckliste" & ActiveSheet.Range("B4") & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPDF, Quality:= _
xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
'** E-Mail versenden
'strPDF = ThisWorkbook.Path & "\Montagecheckliste.pdf"
Gruss
ede
Anzeige
AW: pdf Versand per VBA - pdf Dateibenennung?
18.12.2019 14:31:30
volti
Hallo Lukas,
ich würde den vollständiges Pfad/Datei ziemlich weit oben in der Variablen strPDF zusammensetzen (s.Code)
Weiter hinten kann das dann weg...
Sub Schaltfläche10_Klicken()
'** Dimensionierung der Variablen
Dim strPDF As String
Dim OutlookApp As Object, strEmail As Object
strPDF = ThisWorkbook.Path & "\Monatscheckliste_" & ActiveSheet.Range("$B$4" _
).Value & ".PDF"
'** Vorgaben definieren
Set OutlookApp = CreateObject("Outlook.Application")
Set strEmail = OutlookApp.CreateItem(0)
'** PDF erzeugen
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPDF _
, Quality:= _
xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
'** E-Mail versenden
With strEmail
.Subject = "Montagecheckliste für Auftrag" 'Betreffzeile
.body = "Guten Tag, anbei die Montagecheckliste für oben genannten Auftrag. Schöne Grüße"
.Attachments.Add strPDF
.Display
'.Send 'Damit wir die E-Mail sofort versendet
Kill strPDF
End With
'** Objektvariablen wieder löschen
Set OutlookApp = Nothing
Set strEmail = Nothing
End Sub
PS: Noch ein Tipp. strEmail würde ich z.B. oEmail nennen, denn das ist ja kein String, sondern ein Objekt.
viele Grüße
Karl-Heinz
Anzeige
AW: pdf Versand per VBA - pdf Dateibenennung?
18.12.2019 14:56:26
Lukas
Hallo Karl-Heinz,
danke für die rasche Antwort, habe den Code jetzt entsprechend umgebaut, jedoch funktioniert das immer noch nicht, ich habe jetzt "Montagecheckliste_" also um "_Underline" ergänzt. aber die Auftragsnummer fehlt noch. Vielleicht ist dir mit den ganzen Zeichen irgendwo ein Fehler passiert? :) Danke schon mal.
lg Lukas
Anzeige
AW: pdf Versand per VBA - pdf Dateibenennung?
18.12.2019 15:22:37
volti
Hallo Lukas,
es wird erwartet, dass die Auftragsnummer im aktiven Blatt in Zelle $B$4 steht, so wie von Dir vorgegeben. Ist diese Zelle evtl. leer oder ein anderes Blatt als das gerade aktive gemeint?
Falls das Blatt bekannt und immer das gleiche ist, solltest Du vielleicht eher dieses hier nehmen:
strPDF = ThisWorkbook.Path & "\Monatscheckliste_" & ThisWorkbook.Sheets("MeinBlatt").Range("$B$4" _
).Value & ".PDF"

Und "MeinBlatt" natürlich anpassen...
VG KH
Anzeige
AW: pdf Versand per VBA - pdf Dateibenennung?
19.12.2019 07:39:46
Lukas
Guten Morgen KH,
so das ist mir nun echt mega peinlich, ich bin vl ein Depp... wie du schon schreibst, sollte in dem Feld natürlich auch eine Nummer drin stehen :) funktioniert jetzt tadellos, der Code mit Active sheet passt natürlich so, das habe ich mir im Vorfeld schon alles angesehen.
Hätte jetzt aber gleich noch eine Frage, da die Mappe jetzt um Namen erweitert wird, ich werde mittels sverweis auf den Namen ein Feld machen, wo dann die Mailadresse dazu erscheint. Kann ich die auch gleich per Code einbauen, dass die Mailadresse gleich im Mail Entwurf drin steht?
LG Lukas
Anzeige
AW: pdf Versand per VBA - pdf Dateibenennung?
19.12.2019 08:46:42
Pierre
Hallo Lukas,
sollte recht simpel so funktionieren:
.to = Sheets("DEINETABELLE").Range("ZELLE").Value
Blattname und Zelle anpassen.
Gruß Pierre
AW: pdf Versand per VBA - pdf Dateibenennung?
19.12.2019 10:25:58
Lukas
besten dank funktioniert super :)
danke für die schnelle Hilfe, und frohe Feiertage!
bitteschön und dir auch schöne Feiertage! (owT)
19.12.2019 10:49:56
Pierre
Anzeige
AW: bitteschön und dir auch schöne Feiertage! (owT)
19.12.2019 15:01:18
Lukas
so sorry ich muss nochmals lästig sein... die pdf Datei Benennung soll jetzt doch nur die Auftragsnummer aus der Mappe enthalten, sonst nichts. Aktuell steht da:
strPDF = ThisWorkbook.Path & ActiveSheet.Range("B4" _
).Value & ".PDF"
wobei B4 das gewünschte Feld ist, Activesheet passt auch.
lösche ich das "Thisworkbook.Path" funktioniert es gar nicht mehr. Ersetzen durch Text in "" auch nicht. gibts da auch eine einfache Lösung? :)
Anzeige
AW: bitteschön und dir auch schöne Feiertage! (owT)
19.12.2019 15:42:22
Werner
Hallo Lukas,
und warum willst du bitte ThisWorkbook.Path löschen? Das ist doch der Pfad in den deine PDF gespeichert wird.
strPDF = ThisWorkbook.Path & "\" & ActiveSheet.Range("B4").Value & ".PDF"
Gruß Werner
AW: bitteschön und dir auch schöne Feiertage! (owT)
19.12.2019 15:45:52
Lukas
Hallo Werner, konnte das jetzt selbst lösen, ich dachte das wäre für die Bezeichnung, dass der Speicherpfad die Bezeichnung wird (was ja auch so ist, aber was ich nicht wollte) und daher wollte ich das löschen, das klappt aber eh gar nicht.
nur dadurch bedingt, dass ich sonst keinen Dateinamen hab, hat er mir immer den Pfad als Namen dazu gegeben, habe es jetzt wie folgt abgeändert, jetzt passt es:
strPDF = ThisWorkbook.Path & "\" & ActiveSheet.Range("B4" _
).Value & " " & ActiveSheet.Range("B6" _
).Value & ".pdf"
Anzeige
dann schöne Weihnachten. o.w.T.
19.12.2019 15:49:13
Werner
;

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

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