Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

EXCEl Externes Programm mit Hyperlink öffnen, am besten noch bestimmten Zellinhalt als Parameter übergeben

Frage Microsoft Microsoft Office

Mitglied: Fahrrad

Fahrrad (Level 1) - Jetzt verbinden

13.05.2014, aktualisiert 15.05.2014, 6711 Aufrufe, 15 Kommentare

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
Mitglied: Meierjo
14.05.2014 um 11:14 Uhr
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
Bitte warten ..
Mitglied: Fahrrad
14.05.2014 um 11:28 Uhr
Hallo Meierjo

Vielen Dank für Deine Antwort!!

>>wieso der Foxit Reader, wenn der nicht als Standard registriert ist?
Es ist auf dem Firmenrechner eine aktuelle Version vom Foxit installiert, welche dieses Featur enicht mehr bietet. Deshalb möchte ich eben nur diese ältere Version nicht registrieren und nur das Feature nutzen.

>>Ist der Acrobat-Reader als Standard installiert??
Nein, soll/darf auch nicht rauf.

>>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

Dies habe ich soweit auch schon anderweitig genutzt, aber das Paket des Acrobat Readers is mir, nur um diese Funktion zu utzen, zu groß und wie geschrieben auch nicht vorhanden.

Mir schwebt als "elegante" Lösung ein Hyperlink vor, welcher mir mit einem Mausklick die entsprechende Seite des PDFs öffnet.
Über CMD bekomme ich es mit Foxit auch hin, aber das ist für mich eher von-hinten-durch-die-Brust-ins-Auge.

VG
Fahrrad
Bitte warten ..
Mitglied: Meierjo
14.05.2014 um 11:42 Uhr
Hallo

Also, das heisst, es geht um mehrere Dateien, die in der Excel-Tabelle stehen, oder immer um die selbe Datei?

Du möchtest in der4 Excel-Tabelle einen Hyperlink, welcher das PDF an der entsprechenden Seite öffnet?

grus
Bitte warten ..
Mitglied: 115420
14.05.2014, aktualisiert um 18:42 Uhr
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.
01.
Option Explicit 
02.
Option Compare Text 
03.
 
04.
Const ColPage = "C"                        'Spalte mit Seitenzahl 
05.
Const BaseFolder = "X:\Temp\Temp1\"        'Backslash am Ende beachten 
06.
 
07.
Const PdfTool = "X:\Foxitreader\Foxitreader.exe" 
08.
Const PdfOption = " -n " 
09.
 
10.
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 
11.
    Dim sFile As String, sPage As String, sCmdLine As String 
12.
         
13.
    sFile = BaseFolder & Range(Target.SubAddress).Value & ".pdf" 
14.
    sPage = Trim(Split(Cells(Target.Range.Row, ColPage).Text, "-")(0)) 
15.
     
16.
    With CreateObject("Scripting.FileSystemObject") 
17.
        If .GetExtensionName(sFile) Like "pdf" Then 
18.
            If .FileExists(sFile) Then 
19.
                If .FileExists(PdfTool) Then 
20.
                    sCmdLine = Chr(34) & PdfTool & """ """ & sFile & Chr(34) & PdfOption & sPage 
21.
                    CreateObject("WScript.Shell").Run sCmdLine, vbMaximizedFocus 
22.
                Else 
23.
                    MsgBox "Pdf-Tool nicht gefunden!", vbExclamation, "Fehler . . ." 
24.
                End If 
25.
            Else 
26.
                MsgBox "Pdf-Datei nicht gefunden!", vbExclamation, "Fehler . . ." 
27.
            End If 
28.
        End If 
29.
    End With 
30.
End Sub
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]
Bitte warten ..
Mitglied: Fahrrad
14.05.2014 um 12:58 Uhr
Hallo meierjo

>>Also, das heisst, es geht um mehrere Dateien, die in der Excel-Tabelle stehen, oder immer um die selbe Datei?
nein, das wäre ja zu einfach :o).... Es handelt sich um diverse PDFs, auf die jeweils (einzeln) verlinkt werden soll

>>Du möchtest in der4 Excel-Tabelle einen Hyperlink, welcher das PDF an der entsprechenden Seite öffnet?
Ja, genau das ist mein Ziel, aber eben mit Foxit.

VG
Fahrrad
Bitte warten ..
Mitglied: Meierjo
14.05.2014 um 13:37 Uhr
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
Bitte warten ..
Mitglied: 115420
15.05.2014, aktualisiert um 11:34 Uhr
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:
01.
Option Explicit 
02.
 
03.
Const ColLink = "A"                         'Spalte: Titel (Doppelklick) 
04.
Const ColPage = "C"                         'Spalte: Seitenzahl 
05.
Const ColName = "G"                         'Spalte: Pdf-Name 
06.
 
07.
Const RowStart = 2                          'Pdf-Namen ab Zeile 2 
08.
 
09.
Const BaseFolder = "X:\Temp\Temp1\"         'Backslash am Ende beachten 
10.
 
11.
Const PdfTool = "X:\Foxitreader\Foxitreader.exe" 
12.
Const PdfOption = " -n " 
13.
 
14.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, ByRef Cancel As Boolean) 
15.
    Dim sFile As String, sPage As String, sCmdLine As String 
16.
     
17.
    If Not Application.Intersect(Columns(ColLink), Target) Is Nothing Then 
18.
        If Target.Row >= RowStart And Cells(Target.Row, ColName).Text <> "" Then 
19.
            Cancel = True 
20.
            sFile = BaseFolder & Cells(Target.Row, ColName).Text & ".pdf" 
21.
            sPage = Trim(Split(Cells(Target.Row, ColPage).Text, "-")(0)) 
22.
     
23.
            With CreateObject("Scripting.FileSystemObject") 
24.
                If .FileExists(sFile) Then 
25.
                    If .FileExists(PdfTool) Then 
26.
                        sCmdLine = Chr(34) & PdfTool & """ """ & sFile & Chr(34) & PdfOption & sPage 
27.
                        CreateObject("WScript.Shell").Run sCmdLine, vbMaximizedFocus 
28.
                    Else 
29.
                        MsgBox "Pdf-Tool nicht gefunden!", vbExclamation, "Fehler . . ." 
30.
                    End If 
31.
                Else 
32.
                    MsgBox "Pdf-Datei nicht gefunden!", vbExclamation, "Fehler . . ." 
33.
                End If 
34.
            End With 
35.
        End If 
36.
    End If 
37.
End Sub

Grüße
Spatzenhirn

[edit]
Code geändert:

Spalte A = Titel mit Doppelklick
Spalte G = Pdf-Name
[/edit]
Bitte warten ..
Mitglied: Fahrrad
15.05.2014 um 10:34 Uhr
hallo Spatzenhirn,

Vielen Dank für Deine Hilfe / Geduld!

Diese Lösung hat was, auf jeden Fall, aber ein kleines aber: schöner wäre die Doppleklickaktion für Spalte A mit dem Namen bzw. Titel.

VG
Fahrrad
Bitte warten ..
Mitglied: 115420
15.05.2014 um 10:39 Uhr
Hallo Fahrrad!

Ja und woher bekomme ich dann den Namen der Pdf-Datei?

Grüße
spatzenhirn
Bitte warten ..
Mitglied: Fahrrad
15.05.2014 um 11:15 Uhr
Hallo Spatzenhirn,

hm gute Frage nächste Frage;o).... Vielleicht hast Du noch einen anderen (VBA-)Trick auf Lager o)?

Bei meiner Priorisierung kommt die Spalte mit dem PDF Namen erst ein wenig weiter hinten, aber ich kann sie auch weiter nach vorne ziehen, wäre nur schön gewesen

Besten Dank

VG
Fahrrad
Bitte warten ..
Mitglied: 115420
15.05.2014 um 11:18 Uhr
Hallo Fahrrad!

OK und welche Spalte wäre das dann?

Grüße
spatzenhirn
Bitte warten ..
Mitglied: Fahrrad
15.05.2014 um 11:21 Uhr
Hallo Spatzenhirn,

derzeit ist in Spalte A der Name / Titel des Stücks enthalten und in Spalte G der Name des PDFs.

VG
Fahrrad
Bitte warten ..
Mitglied: 115420
LÖSUNG 15.05.2014, aktualisiert um 11:39 Uhr
Hallo Fahrrad!

Letzten Code entsprechend geändert

Wenn's das dann war, bitte den Thread noch als gelöst markieren. Danke

Grüße
spatzenhirn
Bitte warten ..
Mitglied: Fahrrad
15.05.2014 um 11:40 Uhr
Hallo Spatzenhirn,

DAS ist jetzt die perfekte Lösung ohne Hyperlink für mic, sehr elegant!.

Ich kann Dir meinen Dank für die gesparte Zeit und Mühe gar nicht ausdrücken!!!!

VG
Fahrrad
Bitte warten ..
Mitglied: 115420
15.05.2014 um 11:45 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
gelöst SAP Externes Programm Parameterübergabe an Skript in Variable (2)

Frage von Erik72 zum Thema Batch & Shell ...

Microsoft Office
Mehr als 20 Excel Dateien öffnen gleichzeitig (7)

Frage von PizzaPepperoni zum Thema Microsoft Office ...

Microsoft Office
32 Bit CAD Programm und Excel 64 Bit geht nicht (5)

Frage von GrueneSosseMitSpeck zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel 2010 Zellen mit bestimmten Inhalt mit Makro formartierten (5)

Frage von packmann2016 zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (10)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...