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

Per VBA in PDF mit variablem Pfad speichern

Forumthread: Per VBA in PDF mit variablem Pfad speichern

Per VBA in PDF mit variablem Pfad speichern
26.08.2014 19:44:42
Sebastian Koschützke

Hallo Zusammen.
Ich habe ein VBA erstellt welches mir aus Wochenplänen automatisch die entsprechende Rechnung erstellt. Dies funktioniert grundlegend auch wunderbar.
Jetzt muss ich diese Rechnung jedoch per Mail verschicken und dementsprechend ins PDF-Format umwandeln.
Auch hier habe ich mich bereits im Forum schlau gelesen und auch Export klappt dank der hiesigen Forenbeiträge hervorragend.
Zum Problem:
Die Daten sollen im Mediencenter abgelegt und von jedem Benutzer verwendet werden können. Ich habe bereits eine Abfrage nach dem Benutzernamen eingerichtet und als Variable festgelegt.
Somit wird der Speicherpfad (C:\Users\"Benutzername"\etc. variabel gestaltet und auch erkannt.
Wenn ich mit dieser Variabel im Speicherpfad aber nun in das PDF Format exportieren möchte schmeißt Excel mir den Fehler: "Laufzeittypen unverträglich" aus.
Und hier komme ich dann nicht mehr weiter.
Hier der entsprechende Auszug:
ChDir "C:\Users\" & t5 & "\Mediencenter\Geschäftsjahr 2014\Rechnungen 2014"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\" & t5 & "\Mediencenter\Geschäftsjahr 2014\Rechnungen 2014 PDF\Rechnungsnr_" & Sheets("Rechnung Kunde").Range("E18").Value, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Application.DisplayAlerts = True
t5 wird in einer vorherigen Abfrage bestimmt und auch beim Speicherpfad im Excel-Format akzeptiert. Nur hier hapert es.
Hat jemand eine Idee?
Danke.

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Per VBA in PDF mit variablem Pfad speichern
27.08.2014 08:39:59
JoWE
Hallo,
schreibe den kompletten Dateiname zunächst in eine Variable (z.B. fName)
welche Du dann im Eportstatement nutzt:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= fName .....
Gruß
Jochen

Anzeige
;
Anzeige

Infobox / Tutorial

Per VBA in PDF mit variablem Pfad speichern


Schritt-für-Schritt-Anleitung

Um ein Excel-Dokument per VBA in ein PDF-Format zu speichern und dabei einen variablen Pfad auszuwählen, kannst Du folgende Schritte befolgen:

  1. Benutzernamen ermitteln: Stelle sicher, dass Du den Benutzernamen als Variable (t5) korrekt ermittelt hast.
  2. Dateipfad definieren: Setze den Pfad zur Ablage der PDF-Datei. Nutze dafür eine Kombination aus festem und variablem Text:
    Dim fName As String
    fName = "C:\Users\" & t5 & "\Mediencenter\Geschäftsjahr 2014\Rechnungen 2014 PDF\Rechnungsnr_" & Sheets("Rechnung Kunde").Range("E18").Value & ".pdf"
  3. Export als PDF: Verwende die ExportAsFixedFormat-Methode, um das aktive Blatt im PDF-Format zu speichern:
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fName, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
  4. Fehlermeldungen beachten: Stelle sicher, dass der Dateipfad korrekt ist und alle benötigten Ordner existieren.

Häufige Fehler und Lösungen

  • Laufzeitfehler "Typen unverträglich": Dieser Fehler tritt häufig auf, wenn der Dateiname oder Pfad nicht korrekt definiert ist. Überprüfe, ob t5 einen gültigen Benutzernamen enthält und ob der gesamte Pfad existiert.
  • PDF kann nicht gespeichert werden: Achte darauf, dass der Ordner, in den Du speichern möchtest, bereits existiert. Excel kann keine neuen Ordner erstellen.

Alternative Methoden

Falls die obige Methode nicht funktioniert, kannst Du auch andere Ansätze ausprobieren:

  • Dateipfad manuell auswählen: Du kannst ein Dialogfeld verwenden, um einen variablen Speicherort auszuwählen:
    Dim fName As Variant
    fName = Application.GetSaveAsFilename(FileFilter:="PDF Files (*.pdf), *.pdf")
    If fName <> False Then
       ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fName
    End If
  • PDF direkt per E-Mail versenden: Du kannst das PDF erstellen und direkt über Outlook versenden, ohne es zuerst zu speichern.

Praktische Beispiele

Hier ist ein einfaches Beispiel, um den Prozess zu veranschaulichen:

Sub SaveAsPDF()
    Dim t5 As String
    Dim fName As String

    ' Benutzername abfragen
    t5 = Environ("USERNAME")

    ' Dateipfad erstellen
    fName = "C:\Users\" & t5 & "\Mediencenter\Rechnung.pdf"

    ' Exportieren
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fName
End Sub

Dieses Skript speichert das aktive Blatt als PDF in einem Ordner, der den Benutzernamen enthält.


Tipps für Profis

  • Fehlerbehandlung einbauen: Füge Error-Handling in dein Makro ein, um unerwartete Probleme besser zu managen:
    On Error GoTo ErrorHandler
    ' Dein Code hier
    Exit Sub
    ErrorHandler:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
  • PDF-Qualität anpassen: Experimentiere mit der Quality-Eigenschaft, um die Dateigröße und die Bildqualität zu optimieren.

FAQ: Häufige Fragen

1. Wie kann ich den Pfad für die PDF-Datei dynamisch anpassen?
Verwende VBA-Variablen, um den Pfad basierend auf Benutzereingaben oder den aktuellen Benutzernamen zu gestalten.

2. Kann ich mehrere Blätter gleichzeitig als PDF speichern?
Ja, Du kannst eine Array von Blättern angeben und diese mit einer Schleife exportieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige