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

Prüfen ob PDF Dokument mit selben Namen geöffnet

Forumthread: Prüfen ob PDF Dokument mit selben Namen geöffnet

Prüfen ob PDF Dokument mit selben Namen geöffnet
21.04.2016 09:38:32
phlp
Moin zusammen,
ich lasse meine Excel Datei über einen Button in ein PDF Dokument mit einem vorgegeben Dokumentennamen umwandeln. Das funktioniert auch ohne Probleme.
Nur wenn das PDF Dokument bereits geöffnet ist und ich nochmal auf den Button klicke bekomme ich die Meldung "Laufzeitfehler 1004: Anwendungs- oder objektdefinierter Fehler".
Erscheint mir auch logisch, es können ja keine 2 PDF Dokumente mit dem selben Namen geöffnet sein.
Ich würde mir jetzt eine Funktion wünschen, mit der ich überprüfen kann, ob bereits ein Dokument geöffnet ist, das den selben Namen hat wie das Dokument das ich erstellen möchte.
Gibt es da eine Möglichkeit?
Vielen Dank schon mal für eure Hilfe!

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen ob PDF Dokument mit selben Namen...
21.04.2016 13:37:31
Michael
Hallo!
Google soll angeblich starke Such-Algorithmen haben ;-); die zeigen dann auf bspw. https://support.microsoft.com/en-us/kb/291295
Könntest Du also zB so prüfen (schematisch):
Sub BeispielCheckObDateiBereitsOffen()
Dim DieDatei As Boolean
DieDatei = IstDateiOffen("Y:\DeinPfad\DeineDatei.pdf")
If DieDatei = True Then
MsgBox "Datei ist schon geöffnet"
Else
MsgBox "Datei ist noch nicht geöffnet"
End If
End Sub
Function IstDateiOffen(DateiName As String) As Boolean
Dim DateiNr As Long
Dim FehlerNr As Long
On Error Resume Next
DateiNr = FreeFile()
Open DateiName For Input Lock Read As #DateiNr
Close DateiNr
FehlerNr = Err
On Error GoTo 0
Select Case FehlerNr
Case 0
IstDateiOffen = False
Case 70
IstDateiOffen = True
Case Else
Error FehlerNr
End Select
End Function
LG
Michael
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Prüfen, ob ein PDF-Dokument mit demselben Namen geöffnet ist


Schritt-für-Schritt-Anleitung

Um zu überprüfen, ob ein PDF-Dokument mit demselben Namen bereits geöffnet ist, kannst du den folgenden VBA-Code verwenden. Dieser Code prüft, ob die Datei bereits in einem anderen Programm geöffnet ist, bevor du versuchst, sie zu erstellen.

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Sub BeispielCheckObDateiBereitsOffen()
    Dim DieDatei As Boolean
    DieDatei = IstDateiOffen("Y:\DeinPfad\DeineDatei.pdf") ' Passe den Pfad und Dateinamen an
    If DieDatei = True Then
        MsgBox "Datei ist schon geöffnet"
    Else
        MsgBox "Datei ist noch nicht geöffnet"
    End If
End Sub

Function IstDateiOffen(DateiName As String) As Boolean
    Dim DateiNr As Long
    Dim FehlerNr As Long
    On Error Resume Next
    DateiNr = FreeFile()
    Open DateiName For Input Lock Read As #DateiNr
    Close DateiNr
    FehlerNr = Err
    On Error GoTo 0
    Select Case FehlerNr
        Case 0
            IstDateiOffen = False
        Case 70
            IstDateiOffen = True
        Case Else
            Error FehlerNr
    End Select
End Function
  1. Ersetze "Y:\DeinPfad\DeineDatei.pdf" mit dem tatsächlichen Pfad und Dateinamen deines PDF-Dokuments.
  2. Schließe den VBA-Editor und führe das Makro aus, um zu testen, ob die Datei bereits geöffnet ist.

Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Anwendungs- oder objektdefinierter Fehler: Dieser Fehler tritt auf, wenn das PDF-Dokument bereits geöffnet ist. Stelle sicher, dass du die Prüffunktion verwendest, bevor du das PDF-Dokument erstellen möchtest.

  • Excel-Datei angeblich von mir geöffnet: Manchmal kann es zu Verwirrungen kommen, wenn andere Anwendungen auf die Datei zugreifen. Stelle sicher, dass alle Anwendungen, die das PDF verwenden könnten, geschlossen sind.


Alternative Methoden

Falls du keinen VBA-Code verwenden möchtest, kannst du auch manuell prüfen, ob das PDF-Dokument geöffnet ist:

  1. Öffne den Task-Manager (Strg + Shift + Esc).
  2. Suche nach dem entsprechenden PDF-Viewer-Prozess (z. B. Adobe Acrobat).
  3. Wenn der Prozess aktiv ist, ist das PDF-Dokument wahrscheinlich geöffnet.

Diese Methode ist jedoch nicht so effizient wie die VBA-Prüfung.


Praktische Beispiele

  • Beispiel 1: Du hast eine Excel-Datei zur Rechnungsstellung, die ein PDF-Dokument mit dem Namen "Rechnung_2023.pdf" erstellt. Verwende den bereitgestellten VBA-Code, um vor dem Erstellen der Rechnung zu prüfen, ob das PDF bereits geöffnet ist.

  • Beispiel 2: Ein Makro in einer Excel-Datei soll täglich Berichte als PDF speichern. Implementiere die Funktion zur Überprüfung, um sicherzustellen, dass die Berichte nicht überschrieben werden, wenn sie geöffnet sind.


Tipps für Profis

  • Verwende die Option Explicit-Anweisung am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.

  • Nutze die MsgBox-Meldungen, um die Benutzerführung zu verbessern. Ersetze sie eventuell durch eine benutzerdefinierte UserForm für eine ansprechendere Benutzeroberfläche.

  • Halte deinen Code modular und gut kommentiert, um Wartungsarbeiten zu erleichtern.


FAQ: Häufige Fragen

1. Was passiert, wenn ich den Code ausführe und das PDF-Dokument geöffnet ist?
Der Code gibt eine Meldung aus, dass die Datei bereits geöffnet ist, und verhindert somit einen Fehler beim Erstellen des neuen PDFs.

2. Kann ich die Funktion auch für andere Dateitypen verwenden?
Ja, die Funktion kann leicht angepasst werden, um auch andere Dateitypen zu überprüfen. Ändere einfach den Dateinamen in der Funktion entsprechend.

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