Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Problem mit Shell functionsaufruf
#1
Hallo zusammen,

hab einen Code zum öffnen einer bestimmten PDF Seite geschrieben, zudem öffnet es sich bei klick (Hyperlink).
Die Seitenzahl steht in der Zelle links vom Link und in der Zelle selbst ist der Pfad inkl. Datei.

hab das Problem das bei vielen meiner Dateien der Link auf die PDF Seite funktioniert, allerdings auch bei einigen nicht.
Diesen Fehler kann ich mir nicht erklären.
Vielleicht könnt ihr mir weiterhelfen

Code:
in der Tabelle:


Option Explicit

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
   OpenPDF Target.Parent.Value, Target.Parent.Offset(0, -1).Value
End Sub






modul1:


Sub AddHyperLinks()
  Dim x As Integer
  Dim y As Integer: y = get_last_row("Tabelle1", 22)
  Dim id As String
  Dim name As String
  For x = 3 To y
    id = Cells(x, 1)
    name = Cells(x, 2)
    With ThisWorkbook.Sheets("Tabelle1")
      .Hyperlinks.Add Anchor:=.Range("V" & x), _
     Address:=""
    End With
   
  Next x
End Sub
Function get_last_row(sheetname As String, column_number As Integer) As Long
  get_last_row = Sheets(sheetname).Cells(Rows.Count, column_number).End(xlUp).Row
End Function






modul2:


Option Explicit
Function OpenPDF(sFile As String, _
                 Optional page)
    On Error GoTo Error_Handler
    Dim WSHShell        As Object
    Dim sAcrobatPath    As String
    Dim sParameters     As String
    Dim sCmd            As String
 
    'Determine the path to Acrobat Reader
    Set WSHShell = CreateObject("Wscript.Shell")
    sAcrobatPath = WSHShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AcroRd32.exe\")
 
    'Build our parameters
    If Not IsMissing(page) Then
        If Len(sParameters) = 0 Then
            sParameters = "page=" & page
        Else
            sParameters = sParameters & "&" & "page=" & page
        End If
    End If
  
 
    'Open our PDF
    If Len(sParameters) = 0 Then 'No parameters
        Shell sAcrobatPath & " " & Chr(34) & sFile & Chr(34), vbNormalFocus
    Else 'Parameters
        'Open the file using Shell (no prompt)
        sCmd = sAcrobatPath & " /A " & Chr(34) & sParameters & Chr(34) & " " & Chr(34) & sFile & Chr(34)
        Shell sCmd, vbNormalFocus
        '        'Open the file using FollowHyperlink (user will get prompts)
        '        sCmd = Replace(sFile, "\", "/") & "#" & sParameters
        '        Application.FollowHyperlink sCmd
    End If
 
Error_Handler_Exit:
    On Error Resume Next
    Set WSHShell = Nothing
    Exit Function
 
Error_Handler:
    MsgBox "The following error has occured." & vbCrLf & vbCrLf & _
           "Error Number: " & Err.Number & vbCrLf & _
           "Error Source: OpenPDF" & vbCrLf & _
           "Error Description: " & Err.Description, _
           vbCritical, "An Error has Occured!"
    Resume Error_Handler_Exit
End Function

Es handelt sich um einen Laufzeitfehler '13': Typen unverträglich

und der Debugger schickt mich in diese Linie:  OpenPDF Target.Parent.Value, Target.Parent.Offset(0, -1).Value


Danke für jeden Versuch
Antworten Top
#2
Hallöchen,

da wären die Inhalte interessant. Weniger vom pdf dafür mehr vom Target usw. Smile Hast Du die Dir schon mal in der Überwachung angeschaut? (Haltepunkt in die Codezeile legen und im Code prüfen oder zur Überwachung hinzufügen und dort anschauen)
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
https://www.clever-excel-forum.de/Thread...ausfuehren
Die Datei, auf der das basieren dürfte, in #8
Antworten Top
#4
Code:
sub M_snb()
    ActiveWorkbook.FollowHyperlink "G:\OF\Beispel.PDF"
end sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#5
Hi snb,

und damit wird dann direkt auf eine bestimmten Seite der PDF gesprungen?
Antworten Top
#6
Ja selbstverständlich: die erste.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#7
Hi,

ich habe Markus so verstanden, daß er durch Verweis auf einen Zellinhalt im Hyperlink eine Seite definieren will, die dann angesprungen werden soll.
Antworten Top
#8
Kann sein; ist einfach zu erledigen in Foxit Reader:


Code:
Sub M_snb()
    ' open page 7
     Shell "F:\Program Files\Foxit Software\Foxit Reader\foxit reader.exe  G:\OF\Beispiel.pdf -n 7"
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#9
Hallöchen,

für den Adobe Reader sollte die Syntax so aussehen

AcroRd32.exe /A "page=page_number" filename.pdf

Kann's nur nicht testen, hab den nicht installiert.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#10
Zitat:AcroRd32.exe /A "page=page_number" filename.pdf

Genau das passiert in der Funktion 
' Procedure : OpenPDF
' Author    : Daniel Pineault, CARDA Consultants Inc.


Aber der OP ist ja ein erfahrener C++ und  Java Programmierer, nur mit VBA ist er etwas überfordert (Das war bissige Ironie)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste