Hallo,
ich habe den Code nochmal sauber dargestellt. Vielleicht kann einer weiterhelfen?
ich habe mehrere PDF Dateien im Adobe Acrobat Reader geöffnet. Ich möchte die aktuell geöffnete PDF abspeichern und den Dateinamen ändern
in dem ich das heutige Datum mit _YYYYMMDD im Dateinamen am Ende ergänze eben nicht über Speichern unter, sondern über einen Button
(z.B. Schnellzugriffsleiste)in einer Excel Arbeitsmappe, die immer auf ist. Die geöffnete PDF Datei finden kann ich mit folgendem Code.
Dabei werden aber nur die Titelleisten der geöffneten Windows ausgelesen. Aber mir fehlt der Pfad zu dieser Datei, damit ich speichern könnte. Hat einer eine Idee wie ich noch den Pfad der aktuell geöffneten PDF Datei bestimmen kann?
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&
Debug.Print fn
MsgBox "Geöffnete Datei: " + fn
'name (fn, fn & "_SUPER")
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
|