2010-12-02 38 views
0

J'ai trouvé un code VBA en ligne qui ouvre une page de document PDF interne (lecteur partagé) dans IE (par exemple, à la page 8 du fichier PDF). Je voudrais afficher un texte dans la cellule pour qu'un utilisateur clique (par exemple "Cliquez ici pour voir").Afficher le lien textuel pour ouvrir une page PDF spécifique à partir d'Excel

Problème: La cellule affiche actuellement '0' et je dois aller à la barre de fonctions et appuyer sur [Entrée] pour exécuter.

Excel Version: 2003

appel Fonction:

=GoToPDFpage("S:\...x_2011.pdf",8) 

code VBA:

Function GoToPDFpage(Fname As String, pg As Integer) 
Set IE = CreateObject("InternetExplorer.Application") 
With IE 
.Navigate Fname & "#page=" & pg 
.Visible = True 
End With 
End Function 

: EDIT:

J'étais capable d'afficher du texte, mais ce n'est toujours pas un lien comme je le voulais.

="Click to view" & GoToPDFpage("S:\...x_2011.pdf",8) 

Nous vous remercions de votre aide.

+0

Salut Fiona, il pourrait être un moyen plus facile de répondre à vos besoins. Est-il possible que vous ayez vos noms de fichiers et numéros de pages dans des colonnes séparées pour chaque rangée? L'idée est d'avoir un bouton "Cliquez ici pour voir" et dans la colonne à côté du nom du fichier et dans la colonne suivante le numéro de la page. – CaBieberach

Répondre

0

Essayez Menu-> Données-> Validation des données. Dans le 2ème onglet, vous pouvez écrire votre message.

+0

Merci de votre contribution. Votre suggestion crée un champ contextuel. Je regardais pour voir si je peux mettre un lien de texte dans la cellule qui dit "Click to View". Lorsque l'utilisateur clique dessus, Excel exécutera la fonction ci-dessus et ouvrira la page PDF. – Fiona

+0

Ok, j'étais capable d'afficher du texte, mais ce n'est pas un lien. = "Cliquer pour voir" & GoToPDFpage ("S: \ ... x_2011.pdf", 8) Vous voulez être capable de cliquer sur ce texte pour déclencher la fonction GoToPDFpage. Merci. – Fiona

0

Si vous n'avez pas un classeur/feuille de calcul haute complexe, vous pouvez essayer ce qui suit:

Tourner la cellule « Cliquez pour voir » dans un lien hypertexte avec des caractéristiques suivantes.

  • Faire le point de se
  • Le texte à l'intérieur de la cellule doit toujours être la chaîne page = plus le nombre que vous ce que le pdf d'ouvrir dans. Par exemple .: page = 8

Ensuite, allez au module workseet et collez le code suivant:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 

    If Left(ActiveCell.Value, 4) = "Page" Then 

     GoToPDFpage Range("A1").Value, Mid(ActiveCell.Value, 6) 
     'This code asumes that the file address is writen in the cell A1 

    End If 
    ' 
End Sub 
' 

Le code écrit ci-dessus se déclenchera chaque fois que vous exécutez un lien hypertexte dans la feuille de calcul.
Comme le lien hypertexte pointe toujours vers lui-même, la valeur "Activecell.Value" aura toujours le numéro de page que vous voulez ouvrir. Je suppose que vous pouvez mettre l'adresse du fichier dans la cellule A1. Vous pouvez modifier cette partie pour qu'elle pointe vers n'importe quelle autre cellule. (y compris: la cellule à droite de l'hyperlien actuel, etc.)

Cela peut ne pas être la meilleure option, mais si vous avez seulement besoin d'une fonctionnalité rapide dans quelques cellules, cela pourrait suffire.

J'espère que ça aide!


EDIT: Pour faire de chaque référence HLink lui-même, vous pouvez sélectionner toutes les cellules où vous avez les liens puis exécutez cette procédure:

Sub RefHLink() 
    Dim xCell As Range 

    For Each xCell In Selection 

     ActiveSheet.Hyperlinks.Add Anchor:=xCell, Address:="", SubAddress:= _ 
     xCell.Address, ScreenTip:="Click Here", TextToDisplay:="Page=" 
    Next xCell 

End Sub 
+0

Merci. Je vais essayer ça. J'ai en fait une colonne de <60 lignes qui ont chacune besoin d'un "lien hypertexte" vers différentes pages PDF. – Fiona

+0

Ensuite, vous pouvez mettre le chemin du fichier pdf à droite de chaque cellule et ensuite modifier cette ligne: "Range (" A1 "). Value" avec la ligne suivante: "Activecell.Offset (0,1) .Value". – CaBieberach

+0

Désolé, finalement eu le temps de jeter un coup d'oeil à ceci. J'ai essayé ceci: = HYPERLINK (GoToPDFpage ("S: \ HP \ HP Analyste \ Kori \ EOC \ 2011 \ kpif_20d_Rx_POP3_2011.pdf", 8), "Cliquez pour voir EOC") ... qui semble fonctionner sauf qu'il ouvre le fichier deux fois. Je n'ai pas inséré le code que vous avez suggéré ci-dessus - juste mon code original. Presque là!! Merci! – Fiona

0

que diriez-vous de laisser Excel écrire un fichier batch puis l'exécuter?

* chemins d'édition au format PDF et AcroRd32.exe

Sub batfile() 
    Dim retVal 
    filePath = "path\pdf.bat" 
    pg = 2 
    Open filePath For Output As #1 
    Print #1, "Start /Max /w " & Chr(34) & "Current E-book" & Chr(34) & " " & Chr(34) & "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" & Chr(34) & " /a " & Chr(34) & "page=" & pg & Chr(34) & " " & Chr(34) & "H:\Documents\RPG\Dragonlance\New folder\Sample File.pdf" & Chr(34) & "" 
    Close #1 
    retVal = Shell(strFilePath) 
End Sub