Excel link zu PDF und zu wert springen?
Hallo,
Ich hoffe ich könnt mir helfen.
Ich möchte gerne in die Zelle A4 einen link zu einer PDF setzen (sagen wir diese ist am Desktop und heisst TEST)
Und beim öffnen der PDF soll der Benutzer automatisch zu der Textpassage springen was IDENT mit dem Wert von der Zelle A1 ist.
Danke
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
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
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
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
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.
Danke, für was sind die sende Keys?