Excel link zu PDF und zu wert springen?

2 Antworten

Hallo,

ein PDF Dokument auszulesen um direkt zur gesuchten Textstelle springen zu können scheint (zumindest in Excel 2010, welches ich verwende) nicht ohne Drittprogramm zu gehen. Also müsste das Dokument geöffnet werden und erst danach die Textstelle gefunden werden, z.B indem man über Sendkeys die Suchen-Funktion im PDF steuert:

In A4 steht der Pfad der Datei "C:\Beispielpfad\Desktop\TEST.pdf, allerdings wird sie nicht direkt verlinkt sondern auf die Zelle selbst um nur das VBA-Event auszulösen (Einfügen -> Hyperlink-> Aktuelles Dokument-> "Geben Sie den Zellbezug ein" : A4)

und diesen Code ins Tabellenblatt einfügen:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

If Target.Range.Address = "$A$4" Then
    ActiveSheet.Range("A1").Copy
    ActiveWorkbook.FollowHyperlink Target.Range.Value
    SendKeys "^{f}"
    SendKeys "^{v}"
    SendKeys "~"
    
End If

End Sub
aikon2018 
Fragesteller
 19.05.2021, 06:03

Danke, für was sind die sende Keys?

0
DanKirpan  19.05.2021, 08:02
@aikon2018

Bitte

Die Sendkeys sagen es sollen Strg+F, Strg+V und Enter gedrückt werden, also die Shortcuts für Suchenfunktion aufrufen und Zwischenablage einfügen

0
aikon2018 
Fragesteller
 19.05.2021, 19:43
@aikon2018

Eines noch, wie müsste ich den Code verändern wenn ich diesen Effekt von a1 bis a150 haben möchte.

Also sprich in etwas verändert=

A1 - a150 stehen immer die Werte welche in der PDF gesucht werden und und der Spalte D1 - D150 immer der link

0
DanKirpan  20.05.2021, 08:36
@aikon2018

Du müsstest den Bereich erweitern in dem das Makro auslöst und den Kopierbereich vom Target abhängig machen:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

If Not Intersect(Target.Range, ActiveSheet.Range("D1:D150")) Is Nothing Then
    Target.Range.Offset(0, -3).Copy
    ActiveWorkbook.FollowHyperlink Target.Range.Value
    SendKeys "^{f}"
    SendKeys "^{v}"
    SendKeys "~"
End If

End Sub

und da du vermutlich eher wenig Lust haben wirst die nötigen 150 Links auf die jeweilige Zelle per Hand zu setzen:

Sub hyperlinkssetzen()

For i = 1 To 150
    If ActiveSheet.Range("D" & i) <> "" Then
        With ActiveSheet
            ActiveSheet.Hyperlinks.Add Anchor:=.Range("D" & i), Address:="", SubAddress:=ActiveSheet.Name & "!D" & i, TextToDisplay:=.Range("D" & i).Value
        End With
    End If
Next i

End Sub
0

Man kann PDF Dateien mit einem "Anker" öffnen:
c:\test.pdf#page=3
Das PDF sollte natürlich so viele Seiten haben, wie die Stelle wo man hin möchte.
Dies geht auch Online mit einem WebLink.