EXCEl Externes Programm mit Hyperlink öffnen, am besten noch bestimmten Zellinhalt als Parameter übergeben
Hallo zusammen,
ich hoffe hier ein paar Excel Spezies können mir weiterhelfen :o)
Ich möchte in einer Excel Tabelle per Hyperlinks verschiedene PDFs öffnen, der PDF Viewer ist / soll jeodch nicht für PDFs regsitriert sein, da diese alte Foxit Version noch bestimmte Seiten direkt öffnen kann, allerdings ein Sicherheistrisiko darstellt und entsprechend nicht als Standardviewer eingerichtet ist.
Der Pfad zum Foxit Reader ist zB X:\Foxitreader\Foxitreader.exe
Der Pfad zu den PDFs ist zB X:\Temp\Temp1\Test.pdf
In Spalte C ist die jeweilige Seitenzahl des jeweiligen PDFs angegeben.
Ich möchte, sofern ohne VBA möglich, also mit C2=50 die 50. Seite des PDFs öffnen:
X:\Foxitreader\Foxitreader.exe X:\Temp\Temp1\Test.pdf - n C2
Wenn's nicht geht, geht es vieelcith per VBA als Funktion, in der sowohl das PDF als auch die Seitenzhal variable sein müßten
Ich würd emich über eine Lösung freuen
VG
Fahhrad
ich hoffe hier ein paar Excel Spezies können mir weiterhelfen :o)
Ich möchte in einer Excel Tabelle per Hyperlinks verschiedene PDFs öffnen, der PDF Viewer ist / soll jeodch nicht für PDFs regsitriert sein, da diese alte Foxit Version noch bestimmte Seiten direkt öffnen kann, allerdings ein Sicherheistrisiko darstellt und entsprechend nicht als Standardviewer eingerichtet ist.
Der Pfad zum Foxit Reader ist zB X:\Foxitreader\Foxitreader.exe
Der Pfad zu den PDFs ist zB X:\Temp\Temp1\Test.pdf
In Spalte C ist die jeweilige Seitenzahl des jeweiligen PDFs angegeben.
Ich möchte, sofern ohne VBA möglich, also mit C2=50 die 50. Seite des PDFs öffnen:
X:\Foxitreader\Foxitreader.exe X:\Temp\Temp1\Test.pdf - n C2
Wenn's nicht geht, geht es vieelcith per VBA als Funktion, in der sowohl das PDF als auch die Seitenzhal variable sein müßten
Ich würd emich über eine Lösung freuen
VG
Fahhrad
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 237949
Url: https://administrator.de/contentid/237949
Ausgedruckt am: 23.11.2024 um 13:11 Uhr
15 Kommentare
Neuester Kommentar
Hallo Fahrrad
wieso der Foxit Reader, wenn der nicht als Standard registriert ist?
Ist der Acrobat-Reader als Standard installiert??
Wenn ja, kannst du zB über:
c:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe /A page=10 "C:\PDF\Test.pdf"
die 10. Seite von Test.pdf öffnen
Diesen Parameter kannst du zB als Formel in eine andere Zelle schreiben lassen, und diese dann in ein CMD-Fenster kopieren
Gruss
wieso der Foxit Reader, wenn der nicht als Standard registriert ist?
Ist der Acrobat-Reader als Standard installiert??
Wenn ja, kannst du zB über:
c:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe /A page=10 "C:\PDF\Test.pdf"
die 10. Seite von Test.pdf öffnen
Diesen Parameter kannst du zB als Formel in eine andere Zelle schreiben lassen, und diese dann in ein CMD-Fenster kopieren
Gruss
Hallo Meierjo und Fahrrad!
Das geht nicht ganz so einfach, da ein Hyperlink auf eine Datei direkt ohne Einfussmöglichkeit das Pdf-Standard-Programm startet.
Die einzige Möglichkeit wäre eine Zelle, die nur den Pfad der Pdf-Datei enthält und eine andere Zelle, die einen Hyperlink (Aktuelles Dokument>Zellbezug) auf die Zelle mit dem Pfad enthält. In diesem Fall wird ein Event (FollowHyperlink) ausgelöst, der per VBA-Code abgefangen werden kann und somit die Möglichkeit bietet, einen Hyperlink nach Deinen Vorstellungen zu emulieren...
In folgendem Beispiel, muss die Spalte C die Seitenzahl beinhalten und der Hyperlink auf die Zelle mit dem Pdf-Pfad zeigen, also z.B. B2=Pfad, C2=Seitenzahl und D2=Hyperlink auf B2.
Wobei der Code im VBA-Editor in das jeweilige Tabellenblatt z.B. Tabelle1 eingefügt wird.
Soweit sich die Pdf-Dateien alle im gleichen Pfad befinden, könnte man noch einen Konstanten Basis-Pfad hinzufügen, sodass in den Zellen nur der Dateiname steht?
Grüße
Spatzenhirn
[edit]
In Bezug auf PN von Fahrrad noch einen konstanten Pdf-Ordnerpfad hinzugefügt, sodass die Pfad-Zelle nur noch den Dateinamen enthalten muss
[/edit]
[edit2]
In Bezug auf PN noch eingebaut:
Als Pfadangabe nur Dateiname ohne Dateiendung
Als Seitenangabe nur der Wert vor'm Trennzeichen (-), falls der Inhalt z.B. im Format '10-15' angegeben ist
[/edit2]
Das geht nicht ganz so einfach, da ein Hyperlink auf eine Datei direkt ohne Einfussmöglichkeit das Pdf-Standard-Programm startet.
Die einzige Möglichkeit wäre eine Zelle, die nur den Pfad der Pdf-Datei enthält und eine andere Zelle, die einen Hyperlink (Aktuelles Dokument>Zellbezug) auf die Zelle mit dem Pfad enthält. In diesem Fall wird ein Event (FollowHyperlink) ausgelöst, der per VBA-Code abgefangen werden kann und somit die Möglichkeit bietet, einen Hyperlink nach Deinen Vorstellungen zu emulieren...
In folgendem Beispiel, muss die Spalte C die Seitenzahl beinhalten und der Hyperlink auf die Zelle mit dem Pdf-Pfad zeigen, also z.B. B2=Pfad, C2=Seitenzahl und D2=Hyperlink auf B2.
Option Explicit
Option Compare Text
Const ColPage = "C" 'Spalte mit Seitenzahl
Const BaseFolder = "X:\Temp\Temp1\" 'Backslash am Ende beachten
Const PdfTool = "X:\Foxitreader\Foxitreader.exe"
Const PdfOption = " -n "
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Dim sFile As String, sPage As String, sCmdLine As String
sFile = BaseFolder & Range(Target.SubAddress).Value & ".pdf"
sPage = Trim(Split(Cells(Target.Range.Row, ColPage).Text, "-")(0))
With CreateObject("Scripting.FileSystemObject")
If .GetExtensionName(sFile) Like "pdf" Then
If .FileExists(sFile) Then
If .FileExists(PdfTool) Then
sCmdLine = Chr(34) & PdfTool & """ """ & sFile & Chr(34) & PdfOption & sPage
CreateObject("WScript.Shell").Run sCmdLine, vbMaximizedFocus
Else
MsgBox "Pdf-Tool nicht gefunden!", vbExclamation, "Fehler . . ."
End If
Else
MsgBox "Pdf-Datei nicht gefunden!", vbExclamation, "Fehler . . ."
End If
End If
End With
End Sub
Soweit sich die Pdf-Dateien alle im gleichen Pfad befinden, könnte man noch einen Konstanten Basis-Pfad hinzufügen, sodass in den Zellen nur der Dateiname steht?
Grüße
Spatzenhirn
[edit]
In Bezug auf PN von Fahrrad noch einen konstanten Pdf-Ordnerpfad hinzugefügt, sodass die Pfad-Zelle nur noch den Dateinamen enthalten muss
[/edit]
[edit2]
In Bezug auf PN noch eingebaut:
Als Pfadangabe nur Dateiname ohne Dateiendung
Als Seitenangabe nur der Wert vor'm Trennzeichen (-), falls der Inhalt z.B. im Format '10-15' angegeben ist
[/edit2]
Hallo
@115420
Ja, stimmt, habs grade ausprobiert, funktioniert so wie ich gedacht habe, nicht
@Fahrrad
die Lösung von Spatzenhirn ist somit die einzige praktikable Lösung
Gruss
@115420
Ja, stimmt, habs grade ausprobiert, funktioniert so wie ich gedacht habe, nicht
@Fahrrad
die Lösung von Spatzenhirn ist somit die einzige praktikable Lösung
Gruss
Hallo Fahrrad!
In Bezug auf Deine letzte PN schlage ich eine andere Strategie vor und zwar das Öffnen der Pdf-Dateien per Doppelklick anstelle von Hyperlinks. D.h. wenn Du in der Spalte mit den Pdf-Namen einen Doppelklick auf eine Zelle mit Inhalt ausführst, dann wird die betreffende Pdf-Datei geöffnet, ansonsten behält der Doppelklick seine ursprüngliche Funktion.
Die Spalte mit den Pdf-Namen (aktuell ab Zeile 2) kannst Du ja mit einer Hyperlink-Farbe und Unterstrich formatieren...
Natürlich könnte man die Hyperlinks bei ca. 10.000 Einträgen automatisch generieren, aber insgesamt gesehen ist das Ganze dann doch zu umständlich, von daher ist die Doppelklick-Funktion die bessere Lösung...
Hier der Doppelklick-Code:
Grüße
Spatzenhirn
[edit]
Code geändert:
Spalte A = Titel mit Doppelklick
Spalte G = Pdf-Name
[/edit]
In Bezug auf Deine letzte PN schlage ich eine andere Strategie vor und zwar das Öffnen der Pdf-Dateien per Doppelklick anstelle von Hyperlinks. D.h. wenn Du in der Spalte mit den Pdf-Namen einen Doppelklick auf eine Zelle mit Inhalt ausführst, dann wird die betreffende Pdf-Datei geöffnet, ansonsten behält der Doppelklick seine ursprüngliche Funktion.
Die Spalte mit den Pdf-Namen (aktuell ab Zeile 2) kannst Du ja mit einer Hyperlink-Farbe und Unterstrich formatieren...
Natürlich könnte man die Hyperlinks bei ca. 10.000 Einträgen automatisch generieren, aber insgesamt gesehen ist das Ganze dann doch zu umständlich, von daher ist die Doppelklick-Funktion die bessere Lösung...
Hier der Doppelklick-Code:
Option Explicit
Const ColLink = "A" 'Spalte: Titel (Doppelklick)
Const ColPage = "C" 'Spalte: Seitenzahl
Const ColName = "G" 'Spalte: Pdf-Name
Const RowStart = 2 'Pdf-Namen ab Zeile 2
Const BaseFolder = "X:\Temp\Temp1\" 'Backslash am Ende beachten
Const PdfTool = "X:\Foxitreader\Foxitreader.exe"
Const PdfOption = " -n "
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, ByRef Cancel As Boolean)
Dim sFile As String, sPage As String, sCmdLine As String
If Not Application.Intersect(Columns(ColLink), Target) Is Nothing Then
If Target.Row >= RowStart And Cells(Target.Row, ColName).Text <> "" Then
Cancel = True
sFile = BaseFolder & Cells(Target.Row, ColName).Text & ".pdf"
sPage = Trim(Split(Cells(Target.Row, ColPage).Text, "-")(0))
With CreateObject("Scripting.FileSystemObject")
If .FileExists(sFile) Then
If .FileExists(PdfTool) Then
sCmdLine = Chr(34) & PdfTool & """ """ & sFile & Chr(34) & PdfOption & sPage
CreateObject("WScript.Shell").Run sCmdLine, vbMaximizedFocus
Else
MsgBox "Pdf-Tool nicht gefunden!", vbExclamation, "Fehler . . ."
End If
Else
MsgBox "Pdf-Datei nicht gefunden!", vbExclamation, "Fehler . . ."
End If
End With
End If
End If
End Sub
Grüße
Spatzenhirn
[edit]
Code geändert:
Spalte A = Titel mit Doppelklick
Spalte G = Pdf-Name
[/edit]
Hallo Fahrrad!
Ja und woher bekomme ich dann den Namen der Pdf-Datei?
Grüße
spatzenhirn
Ja und woher bekomme ich dann den Namen der Pdf-Datei?
Grüße
spatzenhirn
Hallo Fahrrad!
OK und welche Spalte wäre das dann?
Grüße
spatzenhirn
OK und welche Spalte wäre das dann?
Grüße
spatzenhirn
Hallo Fahrrad!
Letzten Code entsprechend geändert
Wenn's das dann war, bitte den Thread noch als gelöst markieren. Danke
Grüße
spatzenhirn
Letzten Code entsprechend geändert
Wenn's das dann war, bitte den Thread noch als gelöst markieren. Danke
Grüße
spatzenhirn
Hallo Fahrrad!
OK, dann sind ja jetzt alle Missverständnisse beseitigt und wenn Du mit dieser Lösung zufrieden bist, dann bin ich es auch
Grüße
spatzenhirn
OK, dann sind ja jetzt alle Missverständnisse beseitigt und wenn Du mit dieser Lösung zufrieden bist, dann bin ich es auch
Grüße
spatzenhirn