Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Vorher Word-Datei öffnen jetzt PDF Datei

Vorher Word-Datei öffnen jetzt PDF Datei
13.09.2024 19:03:07
Stefan
Hallo zusammen,

ich habe ein Problem - bis dato habe ich immer eine Word Datei durch klick auf einen Button geöffnet jetzt möchte ich aber anstatt der Word Datei eine PDF Datei öffnen.

In Summe soll aber das gleiche Schema wie davor umgesetzt werden - wenn die PDF Datei schon geöffnet ist, soll sie nicht noch ein zweites mal geöffnet werden, sondern die offene Datei in den Vordergrund gerückt werden.

Kann mir jemand helfen? Den bisher verwendeten Code zum Öffnen der Word Datei habe ich angefügt.

Vielen Dank



Option Explicit

Sub XL_öffnet_WordFile() 'Öffnet Word-Datei

Dim wdApp As Object
Dim wdDoc As Object
Dim myFile As String
Dim myPath As String
Dim oDok As Object

myPath = "H:\Test\"
myFile = "Test.docx"

'Word initialisieren
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If Err > 0 Then
'Word ist noch nicht gestartet
Set wdApp = CreateObject("Word.Application")
Set wdDoc = wdApp.Documents.Open(Filename:=myPath & myFile, ReadOnly:=True)
Else
'Word läuft bereits
For Each oDok In wdApp.Documents
'ist das bestimmte Dokument geöffnet?
If wdApp.Documents(oDok.Name) = myFile Then
wdApp.Documents(oDok.Name).Activate
Exit For
End If
Next
End If

' ...... Hier Deine Aktivitäten

wdApp.Visible = True
wdApp.Activate

'aufräumen
Set wdDoc = Nothing
Set wdApp = Nothing

End Sub



Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vorher Word-Datei öffnen jetzt PDF Datei
13.09.2024 23:55:03
ralf_b
Adobe ist kein Teil der Officefamilie.
Deshalb kannst du nicht einfach mal so per VBA prüfen ob irgendwo auf deinem Rechner die pdf Datei schon geöffnet ist.
Das geht nur wenn du eine Acrobatlizenz hast und damit Zugriff auf die Bibliotheken, oder mittels Windowsapi funktionen.

probier mal das hier, Dateiname und Pfad noch anpassen
Sub XL_öffnet_PDFFile() 'Öffnet PDF-Datei


Dim myFile As String
Dim myPath As String
Dim pdfFilePath As String

myPath = "H:\Test\"
myFile = "Test.pdf"
pdfFilePath = myPath & myFile

'Überprüfen, ob die PDF-Datei existiert
If Dir(pdfFilePath) = "" Then
MsgBox "Die Datei '" & myFile & "' wurde nicht gefunden.", vbExclamation
Exit Sub
End If

'PDF-Datei öffnen
Shell "explorer.exe """ & pdfFilePath & """", vbNormalFocus

End Sub
Anzeige
AW: Vorher Word-Datei öffnen jetzt PDF Datei
14.09.2024 06:45:29
Stefan
Guten Morgen Ral,

funktioniert super und genau so wie es soll. Vielen lieben Dank!

Gruß
Stefan
AW: Vorher Word-Datei öffnen jetzt PDF Datei
13.09.2024 23:55:54
volti
Hallo Stefan,

hier mal eine Idee zu Deinem Anliegen.

Der Vorschlag berücksichtigt auch die Klassenabfrage ggf. zur Sicherheit; habe ich jetzt aber weggelassen, weil Variable msClassname=leer

Code:


Private Declare PtrSafe Function EnumWindows Lib "user32" ( _ ByVal lpEnumFunc As LongPtr, ByVal lParam As LongPtr) As Long Private Declare PtrSafe Function EnumChildWindows Lib "user32" ( _ ByVal hWndParent As LongPtr, ByVal lpEnumFunc As LongPtr, _ ByVal lParam As LongPtr) As Long Private Declare PtrSafe Function GetWindowTextA Lib "user32" ( _ ByVal hwnd As LongPtr, ByVal lpString As String, _ ByVal cch As Long) As Long Private Declare PtrSafe Function GetClassNameA Lib "user32" ( _ ByVal hwnd As LongPtr, ByVal lpClassName As String, _ ByVal nMaxCount As Long) As Long Private Declare PtrSafe Function ShellExecuteA Lib "Shell32.dll" ( _ ByVal hwnd As LongPtr, ByVal lpOperation As String, _ ByVal lpFile As String, ByVal lpParameters As String, _ ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr Private Declare PtrSafe Function SetForegroundWindow Lib "user32" ( _ ByVal hwnd As LongPtr) As Long Dim msCaption As String, msClassname As String Dim mhWnd As LongPtr Private Function EnumWindowProc(ByVal hwnd As LongPtr, lParam As LongPtr) As Long Dim sClassname As String * 260, sWindowText As String * 260 Dim l As Long mhWnd = 0 l = GetClassNameA(hwnd, sClassname, 260) ' Klassennamen holen If Left$(sClassname, l) Like msClassname & "*" Then l = GetWindowTextA(hwnd, sWindowText, 260) ' Fenstertext holen If Left$(sWindowText, l) Like "*" & msCaption & "*" Then SetForegroundWindow hwnd ' App in den Vordergrund mhWnd = hwnd: EnumWindowProc = 0: Exit Function End If End If EnumWindowProc = 1 End Function Sub Test() Dim sDateiname As String sDateiname = "C:\Users\volti\Documents\Adobedokumente\Poento.pdf" msCaption = Mid$(sDateiname, InStrRev(sDateiname, "\") + 1) '& " - Adobe Acrobat Reader" EnumWindows AddressOf EnumWindowProc, 0 If mhWnd = 0 Then ShellExecuteA 0&, "Open", sDateiname, 0, 0, &H9& ' &H9=SW_RESTORE End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Vorher Word-Datei öffnen jetzt PDF Datei
14.09.2024 06:43:32
Stefan
Guten Morgen Karl-Heinz,

funktioniert super! Auch wenn ich davon so gut wie nichts verstehe aber es tut das was es tun soll.

Vielen lieben Dank!

Gruß
Stefan
;

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

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