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

Forumthread: Speichern unter variabel als pdf

Speichern unter variabel als pdf
21.04.2015 16:45:13
Stephan
Hallo zusammen,
am Ende einer Prozedur möchte ich den Speichern unter Dialog aufrufen, den Dateityp bereits voreingestellt auf "pdf" haben, das Häkchen bei "Datei nach dem Veröffentlichen öffnen" gesetzt haben und den Dateinamen bereits durch eine Syntax aus dem Code ausgefüllt haben.
Mit
Application.Dialogs(xlDialogSaveAs).Show,57
öffnet sich zwar der Speichern unter Dialog mit voreingestelltem Dateityp "pdf" - jedoch ist das Häkchen "Datei nach dem Veröffentlichen ..." nicht gesetzt.
Ferner funktioniert folgende Logik bei mir nicht:
Dim strDateiname as string
strDateiname = "Test"
Application.Dialogs(xlDialogSaveAs).Show (strDateiname),57
Ich hätte gedacht das nun als Dateiname "Test" vorgeschlagen wird, das entsprechende Feld ist jedoch komplett leer.
Kann mir hier jemand helfen ?
Danke für Eure Mühe.
Stephan

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern unter variabel als pdf
21.04.2015 17:13:44
Nepumuk
Hallo,
warum benutzt du nicht die Methode GetSaveAsFilename nur für den Dateinamen und machst den Rest per ExportAsFixedFormat-Methode?
Gruß
Nepumuk

AW: Speichern unter variabel als pdf
21.04.2015 17:17:53
Stephan
Hallo Nepumuk,
danke für die schnelle Antwort.
Könntest Du mir die entsprechenden Codezeilen kurz hier schreiben - leider bin ich nicht so fit darin ?
Danke für Deine Hilfe !

Anzeige
AW: Speichern unter variabel als pdf
21.04.2015 17:29:53
Nepumuk
Hallo,
klar:
Option Explicit

Public Sub PDF_Export()
    Dim vntReturn As Variant
    vntReturn = Application.GetSaveAsFilename(InitialFileName:="Test.pdf", _
        FileFilter:="PDF-Datei (*.pdf), *.pdf)", Title:="PDF erzeugen")
    If vntReturn <> False Then
        Call ThisWorkbook.ExportAsFixedFormat(Type:=xlTypePDF, _
            Filename:=vntReturn, Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, _
            OpenAfterPublish:=True)
    End If
End Sub

Ich habe angegeben dass die komplette Mappe exportiert wird. Wenn du nur eine Tabelle willst, dann musst du an Stelle von ThisWorkbook die gewünschte Tabelle angeben, z.B. Worksheets("Tabelle1"). Wenn du einen bestimmten Speicherpfad angeben willst, kannst du das in der GetSaveAsFilename-Methode bei InitialFileName. Z.B. "D:\Daten\Test.pdf"

Gruß
Nepumuk

Anzeige
Zusatzfrage
21.04.2015 22:12:16
WalterK
Hallo und schönen Abend,
der Code von Nepumuk passt genau in mein derzeitiges Projekt.
Allerdings hätte ich noch gerne 2 Ergänzungen/Änderungen:
1.) Die pdf-Datei soll immer gespeichert werden und zwar ohne jede Rückfrage. Derzeit muss das Fenster "Speichern unter" bestätigt werden.
2.) Die pdf-Datei soll nicht geöffnet werden.
Lässt sich das noch machen.
Besten Dank für Eure Hilfe und Servus, Walter

Anzeige
AW: Zusatzfrage
22.04.2015 10:43:50
Nepumuk
Hallo Walter,
dann benötigst du nur die ExportAsFixedFormat-Methode dabei setzt du den Parameter OpenAfterPublish auf False.
Gruß
Nepumuk

AW: Zusatzfrage
22.04.2015 12:37:27
WalterK
Hallo Nepumuk,
Nach der Änderung des Parameters auf False wird die Datei nicht mehr geöffnet. Das passt jetzt so.
Gibt es für Punkt 1 auch noch eine Lösung? Es öffnet sich nach dem START des Makros immer ein Fenster wo man auf "Speichern" klicken muss. Im Code selbst habe ich einen Speicherpfad angegeben.
Lässt sich da etwas machen, das gleich gespeichert wird ohne den Button "Speichern" anzuklicken.
Danke für Deine Hilfe und Servus, Walter

Anzeige
AW: Zusatzfrage
22.04.2015 12:57:35
Nepumuk
Hallo,
na dann lass do einfach die Methode GetSaveAsFilename weg.
Gruß
Nepumuk

AW: Speichern unter variabel als pdf
22.04.2015 08:19:43
Stephan
Hallo Nepumuk,
vielen Dank für die schnelle Antwort.
Soweit funktioniert das Ganze nur möchte ich nun die Namensvergabe ( hier "Test.pdf" ) variabel gestalten.
Wenn ich zuvor im Code einen String befülle und den Code dann wie folgt ändere - erhalte ich ein leeres Dateinamensfeld obwohl in der Variablen strDateiname der richtige Name drinsteht:
Public Sub PDF_Export()
Dim vntReturn As Variant
vntReturn = Application.GetSaveAsFilename(InitialFileName:=strDateiname, _
FileFilter:="PDF-Datei (*.pdf), *.pdf)", Title:="PDF erzeugen")
If vntReturn  False Then
Call ThisWorkbook.ExportAsFixedFormat(Type:=xlTypePDF, _
Filename:=vntReturn, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True)
End If
End Sub
Was mache ich falsch ?
Danke für Deine Hilfe !
Stephan

Anzeige
AW: Speichern unter variabel als pdf
22.04.2015 10:24:48
Nepumuk
Hallo Stephan,
kann ich nicht sagen da ich nicht weiß wie dein Programm aussieht, wo und wie die Variable deklariert ist und wo und wie sie gefüllt wird.
Gruß
Nepumuk
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Speichern von Excel-Daten als PDF mit VBA


Schritt-für-Schritt-Anleitung

Um ein Excel-Dokument als PDF zu speichern, kannst Du ein VBA-Makro verwenden. Hier sind die Schritte:

  1. Öffne Excel und drücke Alt + F11, um den VBA-Editor zu öffnen.

  2. Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge folgenden Code in das Modul ein:

    Option Explicit
    
    Public Sub PDF_Export()
       Dim vntReturn As Variant
       Dim strDateiname As String
    
       strDateiname = "Test.pdf" ' Hier kannst Du den gewünschten Dateinamen anpassen
    
       vntReturn = Application.GetSaveAsFilename(InitialFileName:=strDateiname, _
           FileFilter:="PDF-Datei (*.pdf), *.pdf)", Title:="PDF erzeugen")
    
       If vntReturn <> False Then
           Call ThisWorkbook.ExportAsFixedFormat(Type:=xlTypePDF, _
               Filename:=vntReturn, Quality:=xlQualityStandard, _
               IncludeDocProperties:=True, IgnorePrintAreas:=False, _
               OpenAfterPublish:=True)
       End If
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Um das Makro auszuführen, drücke Alt + F8, wähle PDF_Export und klicke auf Ausführen.

Mit diesem Makro wird ein Dialog angezeigt, um den Speicherort auszuwählen, und der Dateityp wird bereits auf PDF gesetzt.


Häufige Fehler und Lösungen

  • Dateityp PDF nicht vorhanden: Stelle sicher, dass Du die richtige Dateierweiterung im Filter angibst.

  • PDF speichern unter funktioniert nicht mehr: Überprüfe, ob die Excel-Version die Funktion unterstützt und ob die Datei nicht schreibgeschützt ist.

  • Leeres Dateinamensfeld: Wenn Du ein leeres Feld bekommst, vergewissere Dich, dass die Variable strDateiname korrekt gesetzt ist, bevor Du das Dialogfeld aufrufst.


Alternative Methoden

Anstatt die GetSaveAsFilename Methode zu verwenden, kannst Du direkt einen Pfad im Code angeben, um die PDF-Datei ohne Dialog zu speichern. Hier ist ein Beispiel:

Public Sub PDF_Speichern()
    Dim strPfad As String
    strPfad = "D:\Daten\Test.pdf" ' Hier den gewünschten Speicherort angeben

    ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=strPfad, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
End Sub

Diese Methode ermöglicht das Speichern der Datei ohne Rückfragen.


Praktische Beispiele

  1. PDF mit variablem Dateinamen speichern:

    Public Sub PDF_Export_Variabel()
       Dim vntReturn As Variant
       Dim strDateiname As String
    
       strDateiname = "Bericht_" & Format(Date, "YYYY-MM-DD") & ".pdf"
       vntReturn = Application.GetSaveAsFilename(InitialFileName:=strDateiname, _
           FileFilter:="PDF-Datei (*.pdf), *.pdf)", Title:="PDF erzeugen")
    
       If vntReturn <> False Then
           Call ThisWorkbook.ExportAsFixedFormat(Type:=xlTypePDF, _
               Filename:=vntReturn, Quality:=xlQualityStandard, _
               IncludeDocProperties:=True, IgnorePrintAreas:=False, _
               OpenAfterPublish:=True)
       End If
    End Sub
  2. PDF ohne Dialog speichern:

    Public Sub PDF_Speichern_Ohne_Dialog()
       Dim strPfad As String
       strPfad = "C:\Users\DeinBenutzername\Documents\Bericht.pdf"
    
       ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
           Filename:=strPfad, Quality:=xlQualityStandard, _
           IncludeDocProperties:=True, IgnorePrintAreas:=False, _
           OpenAfterPublish:=False
    End Sub

Tipps für Profis

  • Nutze die OpenAfterPublish-Option nur, wenn Du die Datei sofort öffnen möchtest. Andernfalls setze sie auf False, um die Datei im Hintergrund zu speichern.

  • Um den Speicherort dynamisch festzulegen, kannst Du den Benutzer mit einem Input-Box-Feld nach dem gewünschten Pfad fragen.

  • Wenn Du häufig PDF-Dateien speicherst, erstelle eine benutzerdefinierte Menüleiste oder Schaltfläche, um den Zugriff auf Deine Makros zu erleichtern.


FAQ: Häufige Fragen

1. Wie kann ich den Datei-Pfad für die PDF-Datei festlegen?
Du kannst den Pfad im Code direkt angeben, z.B. strPfad = "C:\Users\DeinBenutzername\Documents\Dateiname.pdf".

2. Was mache ich, wenn ich die Datei ohne Bestätigung speichern möchte?
Entferne die GetSaveAsFilename Methode und verwende direkt ExportAsFixedFormat mit einem festgelegten Pfad.

3. Wie kann ich das PDF automatisch nach dem Speichern öffnen?
Setze die Option OpenAfterPublish auf True.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige