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

Forumthread: VBA - Pdf Öffnen

VBA - Pdf Öffnen
30.01.2020 07:43:13
Mike
Guten Morgen zusammen,
ich habe zusammen mit einem Kollegen ein Makro geschrieben was mir erlaubt beim Doppelklick auf eine Zelle eine PDF auf der gewünschten Seite zu öffnen.
Das Makro brauch einen bestimmten Pfad um Adobe zu öffnen, was erstmal kein Problem darstellt.
Mein Problem ist jetzt das wir teilweise im Netzwerk arbeiten und nicht jeder den selben Pfad für dieses Programm hat. Gibt es die Möglichkeit mehrere Pfade zu prüfen und den passenden dann zu öffnen?
hier mein Code:
Sub pdfOffnen_1()
Dim strPdfDat As String, Seite As Long
Dim objWMI As Object, objProcessList As Object, objProcess As Object
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set objProcessList = objWMI.ExecQuery("Select * from Win32_Process " & _
"WHERE Name LIKE 'AcroRd%'")
On Error Resume Next
For Each objProcess In objProcessList
Call objProcess.Terminate(0)
Next
Set objProcessList = Nothing
Set objWMI = Nothing
'Pfad zum Acrobat Reader (anpassen!)
Const strAcroRd As String = "D:\Apps\Adobe\Acrobat\Reader\AcroRd32.exe"
'pdf-Datei
strPdfDat = "G:\WM-BR\Diverses\01_ZU BEARBEITEN\TEST\Arbeitsplatzbeschreibungen.pdf"
'Seite
Seite = 1
'Acrbat Reader aufrufen
Shell Chr(34) & strAcroRd & Chr(34) & " /A page=" & Seite & " " & Chr(34) & strPdfDat &  _
Chr(34), vbMaximizedFocus
End Sub

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Pdf Öffnen
30.01.2020 08:07:02
Nepumuk
Hallo Mike,
ein Beispiel:
Option Explicit

Private Declare Function FindExecutableA Lib "shell32.dll" ( _
    ByVal lpFile As String, _
    ByVal lpDirectory As String, _
    ByVal lpResult As String) As Long

Private Const MAX_PATH As Long = 260

Public Sub Test()
    
    Dim lngReturn As Long
    Dim strTemp As String * MAX_PATH
    Dim strExecutable As String
    
    lngReturn = FindExecutableA("G:\Eigene Dateien\Eigene PDF\Boxplot.pdf", vbNullString, strTemp)
    
    If lngReturn > 32 Then
        strExecutable = Left$(strTemp, InStr(strTemp & vbNullChar, vbNullChar) - 1)
    Else
        MsgBox "Kein Programm zum Öffnen von PDF's gefunden.", _
            vbCritical, "Programmabbruch"
        Exit Sub
    End If
    MsgBox strExecutable
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA - Pdf Öffnen
30.01.2020 08:23:27
Mike
Vielen Dank für die schnelle Antwort aber leider findet er kein Programm
AW: VBA - Pdf Öffnen
30.01.2020 08:32:17
Nepumuk
Hallo Mike,
hast du auch den Pfad zum PDF geändert?
Gruß
Nepumuk
AW: VBA - Pdf Öffnen
30.01.2020 08:36:18
Mike
Natürlich hab ich den Pfad geändert ;)
Anzeige
AW: VBA - Pdf Öffnen
30.01.2020 09:14:09
Nepumuk
Hallo Mike,
kann ich nicht nachvollziehen. Ich habe es gerade nochmal getestet und es funktioniert bei mir einwandfrei.
Userbild
Gruß
Nepumuk
AW: VBA - Pdf Öffnen
30.01.2020 09:46:48
Mike
Das Problem ist dass die meisten meiner Kollegen nicht auf dem Desktop arbeiten sondern mit virtuellem Desktop. Dort kann ich mit dem C:\ nichts anfangen. Also brauche ich eine Lösung die beide Eventualitäten abdeckt.
Anzeige
AW: VBA - Pdf Öffnen
30.01.2020 09:52:56
Nepumuk
Hallo Mike,
dazu fällt mir nichts ein. Ich lass die Frage offen.
Gruß
Nepumuk
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

PDF mit VBA in Excel öffnen


Schritt-für-Schritt-Anleitung

Um eine PDF-Datei mit Excel VBA zu öffnen, kannst du das folgende Vorgehen nutzen. Hier ist ein Beispiel, das zeigt, wie du ein Makro erstellen kannst:

  1. Öffne Excel und gehe in den VBA-Editor (drücke ALT + F11).

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject", wähle "Einfügen" und dann "Modul".

  3. Füge den folgenden Code ein:

    Sub pdfOffnen_1()
       Dim strPdfDat As String, Seite As Long
       Dim objWMI As Object, objProcessList As Object, objProcess As Object
    
       Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
       Set objProcessList = objWMI.ExecQuery("Select * from Win32_Process WHERE Name LIKE 'AcroRd%'")
    
       On Error Resume Next
       For Each objProcess In objProcessList
           Call objProcess.Terminate(0)
       Next
    
       Set objProcessList = Nothing
       Set objWMI = Nothing
    
       ' Pfad zur Acrobat Reader anpassen
       Const strAcroRd As String = "D:\Apps\Adobe\Acrobat\Reader\AcroRd32.exe"
       ' pdf-Datei
       strPdfDat = "G:\WM-BR\Diverses\01_ZU BEARBEITEN\TEST\Arbeitsplatzbeschreibungen.pdf"
       ' Seite
       Seite = 1
    
       ' Acrobat Reader aufrufen
       Shell Chr(34) & strAcroRd & Chr(34) & " /A page=" & Seite & " " & Chr(34) & strPdfDat & Chr(34), vbMaximizedFocus
    End Sub
  4. Passe den Pfad zur PDF-Datei und zum Acrobat Reader an.

  5. Führe das Makro aus, um die PDF-Datei zu öffnen.


Häufige Fehler und Lösungen

  • Problem: Das Programm zum Öffnen von PDFs wird nicht gefunden.

    • Lösung: Überprüfe den Pfad zum Acrobat Reader. Stelle sicher, dass der Pfad korrekt ist und das Programm installiert ist.
  • Problem: Die PDF wird nicht geöffnet.

    • Lösung: Vergewissere dich, dass der Pfad zur PDF-Datei korrekt gesetzt ist und dass die Datei existiert.
  • Problem: Unzureichende Berechtigungen bei Netzwerkpfaden.

    • Lösung: Stelle sicher, dass du die notwendigen Berechtigungen hast, um auf den Netzwerkordner zuzugreifen.

Alternative Methoden

Wenn du die PDF nicht mit dem Acrobat Reader öffnen möchtest, kannst du auch eine andere Methode verwenden. Du kannst die FindExecutable-Funktion verwenden, um den Standard-PDF-Öffner deines Systems zu nutzen:

Private Declare Function FindExecutableA Lib "shell32.dll" ( _
    ByVal lpFile As String, _
    ByVal lpDirectory As String, _
    ByVal lpResult As String) As Long

Sub OpenPdfWithDefaultApp()
    Dim lngReturn As Long
    Dim strTemp As String * 260
    Dim strFilePath As String
    strFilePath = "G:\WM-BR\Diverses\01_ZU BEARBEITEN\TEST\Arbeitsplatzbeschreibungen.pdf"

    lngReturn = FindExecutableA(strFilePath, vbNullString, strTemp)

    If lngReturn > 32 Then
        Shell strTemp & " " & strFilePath, vbNormalFocus
    Else
        MsgBox "Kein Programm zum Öffnen von PDF's gefunden.", vbCritical, "Programmabbruch"
    End If
End Sub

Praktische Beispiele

Hier sind einige Beispiele, wie du mit Excel VBA eine PDF-Datei öffnen kannst:

  • Beispiel 1: Öffnen einer PDF mit Doppelklick auf eine Zelle.

    Du kannst das oben demonstrierte Makro so anpassen, dass es beim Doppelklick auf eine Zelle ausgeführt wird.

  • Beispiel 2: Öffnen einer PDF-Datei in einer Variablen:

    Dim pdfPath As String
    pdfPath = "C:\DeinPfad\deineDatei.pdf"
    Shell "explorer.exe " & pdfPath, vbNormalFocus

Tipps für Profis

  • Verwende Fehlerbehandlungsroutinen: Um sicherzustellen, dass dein Makro auch bei unerwarteten Fehlern stabil läuft, füge On Error GoTo-Anweisungen hinzu.
  • Teste auf verschiedenen Systemen: Wenn du in einem Netzwerk arbeitest, teste deine Lösungen auf verschiedenen Systemen, um sicherzustellen, dass sie überall funktionieren.
  • Nutze Umgebungsvariablen: Anstatt feste Pfade zu verwenden, kannst du Umgebungsvariablen wie Environ("USERPROFILE") nutzen, um Benutzerprofile dynamisch zu verwenden.

FAQ: Häufige Fragen

1. Wie kann ich eine PDF-Datei öffnen, ohne den Pfad zu kennen? Du kannst die FindExecutable-Funktion verwenden, um den Standard-PDF-Öffner zu ermitteln und die PDF so zu öffnen.

2. Was mache ich, wenn der Acrobat Reader nicht installiert ist? Stelle sicher, dass ein PDF-Öffner installiert ist. Du kannst auch alternative Programme verwenden, um die PDF zu öffnen, indem du deren Pfade anpasst.

3. Kann ich eine PDF direkt von einem Netzwerkpfad öffnen? Ja, wenn du die richtigen Berechtigungen hast und der Pfad korrekt ist, kannst du auch PDF-Dateien von Netzwerkpfaden öffnen.

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