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

Forumthread: VBA - Speichern/Druck als PDF - Fehler

VBA - Speichern/Druck als PDF - Fehler
20.12.2022 13:31:47
Toni
Liebe Community,
ich habe folgende Herausforderung. Ich möchte aus einem worksheet eine PDF ablegen. Der Name soll vorbelegt sein (Fixer Teil & ausgelesenes Jahr), der Pfad soll durch den Nutzer ausgewählt werden. Wenn der Name der Datei durch den Nutzer geändert wird, wird dieser übernommen.
Ich habe dabei zwei Probleme.
1. Der Dialog wird aufgerufen und der Name vorbelegt - das funktioniert
Nach dem Bestätigen bricht das Makro jedoch in dieser Zeile ab:
ActiveSheet.ExportAsFixedFormat OutputFileName:=.SelectedItems(1), ExportFormat:=wdExportFormatPDF, OpenAfterExport:=True, IncludeDocProps:=True, UseISO19005_1:=False
2. Mein zweites Problem ist, dass die Checkboxes (ActiveX) im PDF nicht zu sehen sind. Offenbar erkennt er diese nicht. Liegt es an einer Einstellung?
Ich könnte mir vorstellen, alternativ einen Druck über "Microsoft Print to PDF" (an NE01:) anzustarten, scheitere hier jedoch am Code. Der ABlauf wäre der gleiche. Ich bekomme noch den Drucker voreingestellt und den ersten Dialog geöffnet, nicht aber den Datainamen vorbelegt.
Mein Code:

Private Sub CommandButton4_Click()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogSaveAs)
With fd
.InitialFileName = "IKS_Stichproben_SK_Jahr_" & Tabelle1.Range("B5").Value
.FilterIndex = 26 'PDF
If .Show = True Then
ActiveSheet.ExportAsFixedFormat OutputFileName:=.SelectedItems(1), ExportFormat:=wdExportFormatPDF, OpenAfterExport:=True, IncludeDocProps:=True, UseISO19005_1:=False
End If
End With
End Sub
Meine Datei:
https://www.herber.de/bbs/user/156854.xlsm
Großen Dank om Voraus,
Toni
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Speichern/Druck als PDF - Fehler
20.12.2022 14:06:12
peterk
Hallo
zu 1: Du verwendest WORD Syntax

ActiveSheet.ExportAsFixedFormat Filename:=.SelectedItems(1), Type:=xlTypePDF, OpenAfterPublish:=True, IncludeDocProperties:=True
zu 2: Ich weis auch nicht wieso die Controls nicht gedruckt werden.
Peter
Anzeige
AW: VBA - Speichern als PDF - Checkbox weg
20.12.2022 15:02:37
Toni
Hallo Peter,
vielen Dank für die Antwort. Das war offenbar das Problem. Jetzt gibt es nur noch das Problem mit den Checkboxes. Wenn ich ein PDF drucke, sind diese mit dabei. Beim Speichern als PDF nicht. Es liegt nicht am Kompatibilitätsmodus (PDF A) - dieser ist ausgestellt.
Beste Grüße
Toni
Anzeige
AW: VBA - Speichern als PDF - Checkbox weg
20.12.2022 16:20:54
peterk
Hallo
Ich hab mal etwas herumprobiert.
Wenn ich Deine Vorlage in ein neues Blatt kopiere und die Checkboxen dann auch kopiere (falls sie nicht mitkopiert werden) sind sie auch im PDF zu sehen (kopieren des ganzen Blattes bringt nix). Du musst dann auch die Makros ins neue Blatt kopieren.
Peter
Anzeige
AW: VBA - Problem Speichern PDF/ Checkbox leeren
21.12.2022 13:57:16
Toni
Hallo Peter,
vielen Dank, das hat geholfen. Ich habe noch zwei Probleme.
1. Mein Makro zum leeren der Felder funktioniert bei den Checkboxes nun nicht mehr. Diese werden nicht zurückgesetzt.

Private Sub CommandButton2_Click()
Dim Antwort As Integer
Antwort = MsgBox("Möchten Sie alle Felder leeren?", vbQuestion + vbYesNo)
If Antwort = vbYes Then
ActiveSheet.UsedRange.Select
For Each Zelle In Selection
If Zelle.Locked = False Then
If Zelle.MergeCells Then
If Zelle.Address = Zelle.MergeArea(1).Address Then
Zelle.MergeArea.ClearContents
End If
Else
Zelle.ClearContents
End If
Dim c As Object
For Each c In ActiveSheet.OLEObjects
If InStr(1, c.Name, "CheckBox") > 0 Then
c.Object.Value = False
End If
Next
End If
Next Zelle
MsgBox "Ihre Daten wurden gelöscht!"
Else
MsgBox "Ihre Daten wurden nicht gelöscht"
End If
ActiveSheet.Range("b5").Select
End Sub
2. Das PDF-Speichern funktioniert nun. Wenn der Dateiname bereits vorhanden ist, kommt die Abfrage, ob überschrieben werden soll. Bei Bestätigung bricht er trotzdem ab. ich vermute hier fehlt etwas für den Fall des Überschreibens im Code?

Private Sub CommandButton1_Click()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogSaveAs)
With fd
.InitialFileName = "IKS_Stichproben_SK_Jahr_" & Tabelle3.Range("B5").Value
.FilterIndex = 26 'PDF
If .Show = True Then
ActiveSheet.ExportAsFixedFormat Filename:=.SelectedItems(1), Type:=xlTypePDF, OpenAfterPublish:=True, IncludeDocProperties:=True
End If
End With
End Sub
Besten Dank
Toni
Anzeige
AW: VBA - Problem Speichern PDF/ Checkbox leeren
21.12.2022 15:03:05
peterk
Hallo
Also bei mir funktioniert folgender Code (das Zurücksetzen der Checkboxen sollte ausserhalb der Schleife geschehen!)

Private Sub CommandButton2_Click()
Dim Antwort As Integer
Antwort = MsgBox("Möchten Sie alle Felder leeren?", vbQuestion + vbYesNo)
If Antwort = vbYes Then
For Each Zelle In ActiveSheet.UsedRange
If Zelle.Locked = False Then
If Zelle.MergeCells Then
If Zelle.Address = Zelle.MergeArea(1).Address Then
Zelle.MergeArea.ClearContents
End If
Else
Zelle.ClearContents
End If
End If
Next Zelle
Dim c As Object
For Each c In ActiveSheet.OLEObjects
If InStr(1, c.Name, "CheckBox") > 0 Then
c.Object.Value = False
End If
Next
MsgBox "Ihre Daten wurden gelöscht!"
Else
MsgBox "Ihre Daten wurden nicht gelöscht"
End If
ActiveSheet.Range("b5").Select
End Sub
Zu 2: Das PDF ist wahrscheinlich noch im Reader geöffnet und kann daher nicht überschrieben werden.
Peter
Anzeige
AW: VBA - Problem Speichern PDF/ Checkbox leeren
21.12.2022 15:29:28
Toni
Hallo Peter,
besten Dank fürs Testen. Bei mir funktioniert es leider nicht. Zwar werden die Checkboxes nun im PDF mit angezeigt, aber nicht mehr geleert/zurückgesetzt.
https://www.herber.de/bbs/user/156880.xlsm
Beste Grüße
Toni
Anzeige
AW: VBA - Problem Speichern PDF/ Checkbox leeren
21.12.2022 15:49:17
peterk
Hallo
Da Deine CheckBoxen gruppiert sind mußt Du etwas anders vorgehen

Private Sub CommandButton2_Click()
Dim Antwort As Integer
Antwort = MsgBox("Möchten Sie alle Felder leeren?", vbQuestion + vbYesNo)
If Antwort = vbYes Then
For Each Zelle In ActiveSheet.UsedRange
If Zelle.Locked = False Then
If Zelle.MergeCells Then
If Zelle.Address = Zelle.MergeArea(1).Address Then
Zelle.MergeArea.ClearContents
End If
Else
Zelle.ClearContents
End If
End If
Next Zelle
Dim ole As OLEObject
Dim shp As Shape
Dim i As Integer
For Each shp In ActiveSheet.Shapes
If InStr(1, shp.Name, "Group") > 0 Then
For i = 1 To shp.GroupItems.Count
Set ole = shp.GroupItems(i).OLEFormat.Object
If InStr(1, ole.Name, "CheckBox") > 0 Then
ole.Object.Value = False
End If
Next
End If
Next shp
For Each ole In ActiveSheet.OLEObjects
If InStr(1, ole.Name, "CheckBox") > 0 Then
ole.Object.Value = False
End If
Next ole
MsgBox "Ihre Daten wurden gelöscht!"
Else
MsgBox "Ihre Daten wurden nicht gelöscht"
End If
ActiveSheet.Range("b5").Select
End Sub
Peter
Anzeige
AW: VBA - Problem Speichern PDF/ Checkbox leeren
04.01.2023 15:04:21
Toni
Hallo PEter,
lieben Dank und ein frohes neues Jahr. Ich war zwischenzeitig im Weihnachtsurlaub. Aktuell hast du all meine Probleme gelöst. Wir schauen mal, ob jetzt alles funktioniert.
Beste Grüße
Toni
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA: Speichern und Drucken als PDF in Excel


Schritt-für-Schritt-Anleitung

Um eine Excel-Arbeitsmappe als PDF zu speichern oder zu drucken, kannst du den folgenden VBA-Code verwenden. Dieser Code öffnet einen Dialog zur Dateispeicherung und verwendet den von dir festgelegten Dateinamen.

Private Sub CommandButton4_Click()
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogSaveAs)
    With fd
        .InitialFileName = "IKS_Stichproben_SK_Jahr_" & Tabelle1.Range("B5").Value
        .FilterIndex = 26 'PDF
        If .Show = True Then
            ActiveSheet.ExportAsFixedFormat OutputFileName:=.SelectedItems(1), ExportFormat:=xlTypePDF, OpenAfterExport:=True, IncludeDocProps:=True, UseISO19005_1:=False
        End If
    End With
End Sub

Stelle sicher, dass du ExportFormat:=wdExportFormatPDF durch ExportFormat:=xlTypePDF ersetzt, um Fehler zu vermeiden.


Häufige Fehler und Lösungen

  1. Export funktioniert nicht: Wenn du die Fehlermeldung erhältst, dass das Speichern als PDF nicht funktioniert, überprüfe, ob du die richtige Exportformat-Option verwendest. Der Code sollte xlTypePDF statt wdExportFormatPDF verwenden.

  2. Checkboxen fehlen im PDF: ActiveX-Checkboxen werden manchmal nicht im PDF angezeigt. Kopiere die Checkboxes in ein neues Blatt, um sicherzustellen, dass sie im PDF sichtbar sind.

  3. Abbruch bei Dateinamen: Wenn der Benutzer einen bereits vorhandenen Dateinamen auswählt, wird eine Abfrage angezeigt, ob die Datei überschrieben werden soll. Stelle sicher, dass das PDF nicht bereits im Reader geöffnet ist, da dies zu Problemen führen kann.


Alternative Methoden

Wenn das Speichern als PDF über den VBA-Code nicht funktioniert, kannst du die "Microsoft Print to PDF"-Funktion verwenden. Hier ist ein einfaches Beispiel:

Private Sub CommandButtonPrint_Click()
    ActiveSheet.PrintOut Copies:=1, ActivePrinter:="Microsoft Print to PDF", Collate:=True
End Sub

Diese Methode ist nützlich, wenn du die PDF-Datei direkt drucken möchtest, anstatt sie zuerst zu speichern.


Praktische Beispiele

Hier sind einige Beispiele zur Verwendung von VBA für den PDF-Export:

  1. Serienbrief als PDF speichern: Wenn du einen Serienbrief erstellt hast, kannst du ihn mit dem folgenden Code speichern:
ActiveSheet.ExportAsFixedFormat Filename:="Serienbrief_" & Format(Date, "YYYYMMDD") & ".pdf", ExportFormat:=xlTypePDF
  1. Speichern unter spezifischem Pfad:
Dim filePath As String
filePath = "C:\Users\DeinBenutzername\Documents\"
ActiveSheet.ExportAsFixedFormat Filename:=filePath & "Bericht.pdf", ExportFormat:=xlTypePDF

Tipps für Profis

  • VBA zur Automatisierung: Automatisiere den PDF-Druckprozess, indem du alle notwendigen Schritte in einem Makro zusammenfasst.
  • Verwende UseISO19005_1: Setze UseISO19005_1:=True, wenn du PDF/A-1b konform speichern möchtest.
  • Fehlerbehandlung: Implementiere Fehlerbehandlung in deinem VBA-Code, um unerwartete Probleme beim Speichern oder Drucken zu vermeiden.

FAQ: Häufige Fragen

1. Warum werden meine Checkboxes im PDF nicht angezeigt? Die Checkboxes müssen möglicherweise in ein neues Blatt kopiert werden, damit sie im PDF sichtbar sind.

2. Wie kann ich den Pfad und Dateinamen für die PDF-Datei vordefinieren? Du kannst den FileDialog verwenden, um den Dateinamen und den Pfad festzulegen, bevor du die PDF speicherst.

3. Was kann ich tun, wenn "Microsoft Print to PDF" nicht funktioniert? Stelle sicher, dass der Drucker korrekt installiert ist und dass keine anderen Programme die PDF-Datei blockieren.

4. Wie kann ich ein Excel-Dokument als PDF speichern? Du kannst die Methode ExportAsFixedFormat verwenden, um das aktive Sheet als PDF zu speichern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige