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

Forumthread: Acrobat schließen

Acrobat schließen
Dackweiler
Hallo Zusammen,
ich habe bei Nebumuk folgenden Code zum Schließen von Arcobat gefunden.
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As  _
String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal Hwnd As Long,  _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Sub beenden()
PostMessage FindWindow(vbNullString, "Adobe Reader - [A]"), &H10, 0&, 0&
End Sub
Was muß ich tun um ihn für andere (beliebige) PDF-Reader anwenden zu können.
Teilweise gibt es unterschiedliche Programme auf den PCs auf denen das Excel-Programm laufen soll.
Danke für Eure Hilfe
Günter
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Acrobat schließen
07.10.2009 21:37:57
Anton
Hallo Günter,
probier sowas:

Const MAX_FILENAME_LEN = 260
Private Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" _  
  (ByVal lpFile As String, _  
  ByVal lpDirectory As String, _  
  ByVal lpResult As String) As Long    
Sub PDF_Reader_schliessen()  
  Dim i As Long, s2 As String    
  Const sFile = "C:\Programme\Adobe\Acrobat 7.0\Help\DEU\Reader.pdf"   'anpassen
  If Dir(sFile) = "" Then  
    MsgBox "Datei nicht gefunden!", vbCritical
    Exit Sub  
  End If  
  s2 = String(MAX_FILENAME_LEN, 32)
  i = FindExecutable(sFile, vbNullString, s2)
  If i > 32 Then  
    sProgramm = Left$(s2, InStr(s2, Chr$(0)) - 1)
    sProgramm = Mid(sProgramm, InStrRev(sProgramm, "\") + 1)
    Programm_killen sProgramm
  Else
    MsgBox "pdf Dateien ist keine Anwendung zugeordnet!"
  End If  
End Sub  
Function Programm_killen(strProgramm)
  Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\.\root\cimv2")
  Set colProcessList = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = '" & strProgramm & "'")
  For Each objProcess In colProcessList  
    objProcess.Terminate
  Next
End Function  

mfg Anton
Anzeige
AW: Acrobat schließen
09.10.2009 17:46:55
Günter
Hallo Anton,
nachdem ich die Variablen deklariert habe funktioniert es.
Danke
Günter
;
Anzeige
Anzeige

Infobox / Tutorial

Acrobat und PDF-Reader schließen: Lösungen und Tricks


Schritt-für-Schritt-Anleitung

Um den Adobe Reader oder andere PDF-Reader zu schließen, kannst du den folgenden VBA-Code verwenden. Dieser Code hilft, den Prozess zu beenden, auch wenn der Adobe Reader Prozess sich nicht beendet.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Rechtsklick auf „VBAProject (deine Datei)“ > Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal Hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Sub beenden()
    PostMessage FindWindow(vbNullString, "Adobe Reader - [A]"), &H10, 0, 0
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Führe das Makro „beenden“ aus, um den Adobe Reader zu schließen.

Häufige Fehler und Lösungen

  • Fehler: Der Adobe Reader lässt sich nicht schließen.

    • Lösung: Stelle sicher, dass der genaue Fenstertitel im FindWindow-Befehl verwendet wird. Überprüfe den Titel des offenen Fensters, um sicherzustellen, dass er mit dem im Code angegebenen Titel übereinstimmt.
  • Fehler: Fehlermeldung bei der Ausführung des Makros.

    • Lösung: Überprüfe, ob die Variablen korrekt deklariert sind und dass du die richtigen Berechtigungen hast, um Makros auszuführen.

Alternative Methoden

Wenn du einen anderen PDF-Reader als Adobe verwendest, kannst du den Code anpassen, um den spezifischen Fenstertitel des gewünschten Readers zu verwenden. Hier ist ein Beispiel für den Code, der anpassbar ist:

Public Sub PDF_Reader_schliessen()
    Dim hwnd As Long
    hwnd = FindWindow(vbNullString, "Fenstertitel des PDF-Readers")
    If hwnd <> 0 Then
        PostMessage hwnd, &H10, 0, 0
    Else
        MsgBox "PDF-Reader lässt sich nicht schließen!", vbCritical
    End If
End Sub

Praktische Beispiele

Hier ist ein Beispiel für das Schließen eines PDFs mit einer spezifischen Datei:

Sub PDF_Reader_schliessen()
    Dim sFile As String
    sFile = "C:\Pfad\zu\deiner\Datei.pdf"
    If Dir(sFile) = "" Then
        MsgBox "Datei nicht gefunden!", vbCritical
    Else
        ' Hier kannst du die Schließlogik hinzufügen
        Call beenden
    End If
End Sub

Tipps für Profis

  • Verwende die MsgBox vbCritical, um Benutzern kritische Fehlermeldungen anzuzeigen, falls etwas schiefgeht.
  • Überlege, ob du die Anwendung des Codes für verschiedene PDF-Reader durch Parameterübergabe anpassen kannst, um die Flexibilität zu erhöhen.
  • Stelle sicher, dass du über Administratorrechte verfügst, um Prozesse zu beenden, da dies bei einigen Systemkonfigurationen erforderlich sein kann.

FAQ: Häufige Fragen

1. Frage: Warum lässt sich der Adobe Reader nicht schließen?
Antwort: Oft liegt es daran, dass das Fenster nicht im erwarteten Zustand oder unter dem angegebenen Titel läuft. Überprüfe den Fenstertitel.

2. Frage: Gibt es eine Möglichkeit, alle offenen PDF-Reader gleichzeitig zu schließen?
Antwort: Ja, du kannst eine Schleife über alle offenen Fenster implementieren und PostMessage für jedes Fenster aufrufen, das einen bestimmten Titel enthält.

3. Frage: Funktioniert dieser Code in allen Excel-Versionen?
Antwort: Ja, der Code sollte in allen aktuellen Excel-Versionen funktionieren, die VBA unterstützen.

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