Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: offene PDF datei schliessen

offene PDF datei schliessen
Benedikt
Guten Tag zusammen.
Der Aktuelle Bereich des Terminkalenders wird als PDF gespeichert und auf einem Monitor angezeigt.
mit nachfolgendem Macro wird der aktuelle Bereich einer Tabelle als PDF gespeichert. Mit OpenAfterPublish:=True wird das gespeicherte PDF geöffnet und angezeigt.
Wie kann ich vorgängig die bereits offene PDF Datei schliessen?
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"O:\Hugo 2010\Terminkalender\Terminplan aktuell.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Vielen Dank für eure Hilfe und einen schönen Nachmittag
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Falls du sie gar nicht erst sehen willst, ...
20.05.2012 18:47:54
Luc:-?
…Benedikt,
dann OpenAfterPublish:=False; ansonsten wirst du sie wohl selbst schließen müssen oder eine kleine Zeitverzögerung, nach der die PDF-Datei geschlossen wird (Stichworte ggf Wait bzw Sleep und Close), in dein Pgm einbauen müssen.
Gruß Luc :-?
AW: offene PDF datei schliessen
22.05.2012 10:31:19
Benedikt
Danke an Luc
Leider komme ich nicht weiter wie ich diese PDF Datei vor dem ausführen des Code schliessen kann.
Offene Excel Dateien Ja aber dieses verflixte PDF schaffe ich nicht.
"O:\Hugo 2010\Terminkalender\Terminplan aktuell.pdf"
Weiss jemand wie es geht?
Vielen Dank für eure Hilfe
Gruss Benedikt
Anzeige
AW: offene PDF datei schliessen
22.05.2012 12:28:56
fcs
Hallo Benedikt,
die Suche durch alle geöffneten Anwendungen, ob dort der PDF_Viewer mit der Datei geöffnet ist und diese dann zu schliessen, ist etwas aufwendiger zu programmieren. Man kann den Fehler aber relativ einfach abfangen und eine entsprechende Meldung anzeigen.
Gruß
Franz
Sub TestClosePDF()
On Error GoTo Fehler
Dim strFilePDF As String
strFilePDF = "O:\Hugo 2010\Terminkalender\Terminplan aktuell.pdf"
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFilePDF, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case -2147018887
If MsgBox("Bitte erst im PDF-Viewer die Datei" & vbLf _
& strFilePDF & vbLf & "schließen!" & vbLf & vbLf _
& "Danach dann hier mit ""OK"" weiter", _
vbInformation + vbOKCancel, _
"PDF-Datei erstellen") = vbOK Then
Resume
End If
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
End Sub

Anzeige
AW: offene PDF datei schliessen
22.05.2012 12:00:49
R.Przybilla
Hi Benedikt,
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:="test.pdf", OpenAfterPublish:=True
Application.Wait Time + CDate("00:00:03")
SendKeys "%{F4}", True
hat bei mir funktioniert
Aber vllt kannst du erklären, warum du das gleich wieder geschlossen haben willst. Denn brauchst du das erst gar nicht öffnen?
Gruß Ralf
Anzeige
AW: offene PDF datei schliessen
22.05.2012 14:09:38
Benedikt
Hi Ralph
Vielen Dank für deine Hilfe
Also folgendes soll ablaufen: Die PDF Datei ist aktuell geöffnet und wird auf einem Monitor angezeigt.
In einem Excelsheet werden täglich neue Termine Eingetragen. Beim Schliessen der Exceldatei wird diese automatisch als PDF gespeichert und soll die bestehende ersetzen. Nur läuft das Macro nicht durch, solange noch die Datei"Terminplan aktuell.pdf" offen ist.
Also sollte ich die Datei schliessen und gegen die neue ersetzen welche bis zum nächsten ersetzen offen bleibt.
Also mein Problemchen ist wirklich nur die offene PDF Datei vorgängig zu schliessen.
Einen schönen Nachmittag
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Offene PDF-Datei schließen in Excel


Schritt-für-Schritt-Anleitung

  1. PDF-Datei identifizieren: Stelle sicher, dass du den genauen Pfad der offenen PDF-Datei kennst, die geschlossen werden soll. In diesem Beispiel verwenden wir den Pfad: O:\Hugo 2010\Terminkalender\Terminplan aktuell.pdf.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  3. Neues Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (dein Dokumentname)" und wähle Einfügen > Modul.

  4. Code einfügen: Füge den folgenden Code in das Modul ein, um die offene PDF-Datei zu schließen, bevor du eine neue PDF erstellst:

    Sub CloseOpenPDF()
        Dim strFilePDF As String
        strFilePDF = "O:\Hugo 2010\Terminkalender\Terminplan aktuell.pdf"
    
        On Error Resume Next
        ' Sucht den PDF-Viewer und schließt die Datei
        Dim pdfApp As Object
        Set pdfApp = GetObject(, "AcroExch.App")
        If Not pdfApp Is Nothing Then
            Dim pdfDoc As Object
            Set pdfDoc = pdfApp.GetActiveDoc()
            If Not pdfDoc Is Nothing Then
                pdfDoc.Close
            End If
        End If
        On Error GoTo 0
    
        ' PDF neu erstellen
        Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFilePDF, Quality:= _
            xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
            OpenAfterPublish:=True
    End Sub
  5. Makro ausführen: Schließe den VBA-Editor und führe das Makro CloseOpenPDF aus, wenn du deine PDF-Datei aktualisieren möchtest.


Häufige Fehler und Lösungen

  • Fehler beim Schließen der PDF: Wenn das Makro die PDF-Datei nicht schließen kann, stelle sicher, dass der PDF-Viewer (z.B. Adobe Reader) geöffnet ist und die Datei tatsächlich im Vordergrund angezeigt wird.

  • PDF wird nicht erstellt: Wenn das neue PDF nicht erstellt wird, überprüfe den Pfad und stelle sicher, dass du die Berechtigungen zum Schreiben in diesen Ordner hast.


Alternative Methoden

  • Warten und Schließen: Eine einfache Möglichkeit, das Problem zu umgehen, besteht darin, eine kurze Wartezeit einzubauen, bevor die neue PDF erstellt wird. Verwende Application.Wait, um eine Verzögerung einzufügen:

    Application.Wait (Now + TimeValue("0:00:03"))
    SendKeys "%{F4}", True ' Schließt das aktuelle Fenster
  • PDF direkt nicht öffnen: Wenn du das PDF nicht öffnen möchtest, setze OpenAfterPublish:=False in deinem Selection.ExportAsFixedFormat Befehl.


Praktische Beispiele

  • Beispiel 1: Schließe eine offene PDF und erstelle eine neue Datei:

    Sub UpdatePDF()
        CloseOpenPDF ' Schließt die offene PDF
    End Sub
  • Beispiel 2: Wenn du eine neue PDF-Datei erstellen möchtest, ohne die alte zu schließen, kannst du einfach den Befehl ohne die Schließlogik verwenden:

    Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:="neues_pdf.pdf", OpenAfterPublish:=False

Tipps für Profis

  • Automatisierung: Du kannst das Schließen und Erstellen von PDFs automatisieren, indem du diese Makros in einer Schleife oder bei bestimmten Ereignissen (z.B. beim Speichern der Datei) ausführst.

  • Fehlerbehandlung: Implementiere eine umfassende Fehlerbehandlung, um Benutzern hilfreiche Informationen zu geben, falls beim Erstellen oder Schließen der PDF etwas schiefgeht.


FAQ: Häufige Fragen

1. Wie kann ich überprüfen, ob eine PDF-Datei geöffnet ist? Du kannst den PDF-Viewer über GetObject ansprechen und überprüfen, ob ein Dokument aktiv ist.

2. Was mache ich, wenn der PDF-Viewer nicht gefunden wird? Stelle sicher, dass der PDF-Viewer (z.B. Adobe Reader) installiert und geöffnet ist. Andernfalls kann das Makro die offene PDF-Datei nicht schließen.

3. Kann ich auch andere Dateiformate schließen? Das Schließen anderer Formate funktioniert ähnlich, jedoch musst du sicherstellen, dass der entsprechende Viewer oder die Anwendung aufgerufen wird.

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