Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

VBA Pfad aus geöffneter Adobe PDF Datei auslesen


Betrifft: VBA Pfad aus geöffneter Adobe PDF Datei auslesen von: Tom
Geschrieben am: 12.07.2017 17:07:55

Hallo Zusammen,

wie kann ich mittels VBA den Pfad der aktuell geöffneten/er PDF Daten in Adobe Reader auslesen?

Vielen Dank vorab.

Grüße
Tom

  

Betrifft: AW: VBA Pfad aus geöffneter Adobe PDF Datei auslesen von: Anton
Geschrieben am: 12.07.2017 19:49:34

Hallo Tom,

so?:

Sub b()
  Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\.\root\cimv2")
  Set colProcessList = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = 'AcroRd32.exe'")
  For Each objProcess In colProcessList
    Debug.Print objProcess.commandline
  Next
End Sub
mfg Anton


  

Betrifft: AW: VBA Pfad aus geöffneter Adobe PDF Datei auslesen von: Tom
Geschrieben am: 12.07.2017 20:35:56

Hallo Anton,


fast, bei deiner Datei erhalte ich den Pfad von Acrobat, ich benötige den Pfad der geöffneten Datei im Acrobat Reader.

Grüße
Tom


  

Betrifft: AW: VBA Pfad aus geöffneter Adobe PDF Datei auslesen von: Tom
Geschrieben am: 12.07.2017 20:36:45

Sry. nicht bei deiner Datei sondern bei denen Code :)


  

Betrifft: AW: VBA Pfad aus geöffneter Adobe PDF Datei auslesen von: Tom
Geschrieben am: 13.07.2017 16:01:22

Keiner eine Idee?


  

Betrifft: AW: Fensterln? von: mmat
Geschrieben am: 14.07.2017 15:44:18

Hi,

der Ansatz von Anton verfolgt die Idee, alle Prozesse dahingehend zu untersuchen, wie sie aufgerufen wurden. Wenn der Name der PDF-Datei beim Start mitgeliefert wird, dann ist er auch so zu ermitteln. Wenn der Anwender aber seine Datei über "Datei/öffnen" aufmacht, dann ist hier nix.

Eine andere Idee ist, die Titelzeile aller geöffneten Fenster auszulesen und die gewünschte Information hier zu erheben. Da steht zumindest der Dateiname drin. Die API-Funktion EnumWindows arbeitet leider mit einer Call-Back Funktion und ist daher für VBA nicht brauchbar.

Frage an die Gemeinde:
Kennt jemand eine Methode, eine Liste aller geöffneten Fenster (im Windows) aus VBA heraus zu erstellen??

vg, Berti


  

Betrifft: AW: Fensterln? von: Mullit
Geschrieben am: 14.07.2017 16:32:34

Hallo,

aber klaro, EnumWindows geht auch in VBA:

http://www.online-excel.de/excel/singsel_vba.php?f=95

Gruß, Mullit


  

Betrifft: AW: Fensterln? von: mmat
Geschrieben am: 14.07.2017 17:24:29

Danke, wer hätte das gedacht ??

Das muß ich mir mal in Ruhe angucken, dann bereite ich das auch für Tom auf

Diese Woche nicht mehr ...

vg, MM


  

Betrifft: AW: Fensterln? von: Tom
Geschrieben am: 14.07.2017 18:27:40

Vielen Dank euch allen für die Informationen und danke dir MM für das aufbereiten.


  

Betrifft: AW: Fensterln? von: mmat
Geschrieben am: 17.07.2017 10:41:31

Hallo Tom,

anbei der Code. Der findet das erste Fenster, bei dem ".pdf" in der Titelzeile auftaucht. Ich hab das mal auf das wesentliche eingedampft: so geht das. Je nach Umfeld und Einsatzzweck sind hier noch eine Menge Details auszuarbeiten, aber das überlass ich Dir :-)

vg, MM

Option Explicit

Private Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As  _
Long) As Boolean
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
    (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal  _
hwnd As Long) As Long

Dim fn As String

Public Sub SucheFenster()
Dim n As Long
  fn = "keine"
  EnumWindows AddressOf FindWindow, 0&
  MsgBox "Geöffnete Datei: " + fn
End Sub

Private Function FindWindow(ByVal lHwnd As Long, ByVal lParam As Long) As Boolean
Dim sTemp As String, retVal As Long, p As Long
  retVal = GetWindowTextLength(lHwnd)
  sTemp = Space(retVal)
  GetWindowText lHwnd, sTemp, retVal + 1
    
  If retVal <> 0 Then
    p = InStr(UCase(sTemp), ".PDF")
    If (p > 0) Then fn = Left(sTemp, p + 3): FindWindow = False: Exit Function
  End If
  
  FindWindow = True
End Function



  

Betrifft: AW: Fensterln? von: Tom
Geschrieben am: 17.07.2017 14:47:11

Hallo mm,

vielen Dank.
Ich erhalte folgende Fehlermeldung?




Grüße


  

Betrifft: AW: Fensterln? von: Mullit
Geschrieben am: 17.07.2017 17:22:12

Hallo,

der Code gehört in ein Standardmodul.

Gruß, Mullit


  

Betrifft: AW: Fensterln? von: Tom
Geschrieben am: 17.07.2017 17:33:18

Vielen Dank!
Funktioniert!

Grüße


Beiträge aus den Excel-Beispielen zum Thema "VBA Pfad aus geöffneter Adobe PDF Datei auslesen"