Comment puis-je créer un lien hypertexte vers des sections spécifiques d'un fichier HTML dans Excel?

8

J'ai un fichier HTML qui contient des ancres. Je peux accéder à une section spécifique via un navigateur si je spécifie le nom de l'ancre, donc lorsque j'écris
file://<html_path>/<html_file>.html#<anchor_name>
dans la zone d'adresse de mon navigateur, le fichier s'ouvre et défile jusqu'à la section correcte.

Si je place le même lien dans une HYPERLINKfonction dans Excel, le lien ouvre simplement la page Web, coupe la #partie et ne fait pas défiler jusqu'à la section spécifiée. Si je place un lien vers une page Web avec une partie d'ancrage dans la HYPERLINKfonction, cela semble fonctionner correctement, donc les http://liens avec #ne seront pas coupés et fonctionneront toujours.

La recherche sur Google renvoie ce message sur le forum et plusieurs articles de la base de connaissances qui indiquent que le hachage ne peut pas être utilisé dans un nom de fichier au bureau, bien qu'il s'agisse d'un nom de fichier valide. La même page indique que cela a été résolu dans Excel 2010 mais j'utilise la version 2010 et c'est apparemment toujours un problème.

Y a-t-il une solution à cela? J'ai l'intention de lier chaque ligne à une section différente dans le fichier cible, et il y a plus de 1000 lignes, donc l'option de diviser le fichier html d'origine en plusieurs ou de générer des URL distinctes pour chaque section et un lien vers à la place créerait un encombrement de des dossiers.

JohnoBoy
la source
Je ne peux pas en faire une réponse car je ne peux pas tester pour le moment mais avez-vous testé en utilisant l'encodage, donc en utilisant '% 23' au lieu de '#'
HTDutchy
Je viens de vérifier cela, cela ne semble pas fonctionner. Excel affiche un message d'erreur "Impossible d'ouvrir le fichier spécifié"
JohnoBoy
@terdon 'Pound sign / key' est un nom valide pour le #personnage, voir l'article WikiPedia , notez également le message du forum et les articles de la base de connaissances qui y sont liés utilisent le même nom
JohnoBoy
@JohnoBoy, il en est ainsi. Je suis corrigé, désolé. N'hésitez pas à annuler ma modification.
terdon

Réponses:

2

Essaye ça. Pour chaque ligne, vous aurez besoin de deux colonnes. Le premier contiendra le nom de votre signet pour chaque ligne. Le second contiendra un hyperlien pointant vers lui-même.

Pour insérer des hyperliens auto-référencés pour de nombreuses lignes, exécutez une macro comme celle-ci:

Sub AddHyperlinksPointingToOwnCell()

   For i = 1 To 100

   Range("A" & i).Select
   ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
       "Sheet1!A" & i, TextToDisplay:="Click Here!"

   ActiveCell.Offset(1, 0).Select

   Next i

End Sub

Vous avez maintenant besoin d'un sous-marin pour ouvrir le navigateur à l'emplacement correct. Modifiez ceci afin que les chemins d'accès au fichier et au navigateur soient corrects:

Sub GoToBookmark()

    Dim ThisRow As Integer
    Dim ThisCol As Integer
    Dim BookmarkName As String

    ThisRow = ActiveCell.Row
    ThisCol = ActiveCell.Column
    BookmarkName = Cells(ThisRow, ThisCol - 1).Value
        'This is looking in the cell to the left for the bookmark name

    If BookmarkName = "" Then
        Exit Sub
    End If

    Shell "C:\Program Files\Internet Explorer\IEXPLORE.EXE " & _
        "C:\PathRoot\Folder\filename.html#" & BookmarkName & ", vbNormalFocus"

End Sub

Enfin, vous devrez ajouter un événement Worksheet_FollowHyperlink pour la feuille contenant votre liste:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    Run ("GoToBookmark")
End Sub

J'espère que cela devrait le faire!

Andi Mohr
la source
Je vais examiner cela et faire un rapport, merci
JohnoBoy
@JohnoBoy - est-ce que cela a fonctionné pour vous?
Johnny Utahh
C'était il y a longtemps, je crois que j'ai complètement abandonné les hyperliens.
JohnoBoy
0

Voici une autre solution pour vous, si vous ne souhaitez pas utiliser le codage VBA, vous pouvez toujours utiliser la fonction Excel "hyperlien". Voici un guide étape par étape pour le faire.

fichier en ligne: Étape 1: disons que votre nom de fichier est: http://en.wikipedia.org/wiki/Intel_Core Étape 2: ajoutez maintenant vos noms d'ancrage dans A1: A4
Core_Duo
Core_Solo
Core_2_Duo
Core_i7
Étape 3: dans la cellule B2, entrez ceci :

=HYPERLINK("http://en.wikipedia.org/wiki/Core_i3#"&A2,"A2")  

Étape 4: cliquez et faites glisser pour appliquer pour le reste des cellules
Testé fonctionnant !!!

kamalam
la source
1
Malheureusement kamalam, l'affiche originale cherchait à le faire pour les fichiers hébergés localement sur le lecteur C :. Si vous réessayez, cela file://C:/ne fonctionne pas. C'est dommage car ce serait beaucoup plus facile si ça fonctionnait!
Andi Mohr
En outre, cela ne fonctionne même pas sur le Web
Gerrat
-1

Si je comprends bien votre question, voici un travail autour de Source = ici Contournement Pour contourner ce problème, appliquez l'une des méthodes suivantes. Méthode 1

Renommez le fichier avec un nom qui n'inclut pas le signe dièse, puis modifiez ou recréez le lien hypertexte.

Pour plus d'informations sur la façon de renommer un fichier dans Windows, consultez votre documentation imprimée Windows ou l'aide en ligne.

Pour modifier le lien hypertexte, procédez comme suit:

Pour Office 2003 et les versions antérieures d'Office: cliquez avec le bouton droit sur la cellule qui contient le lien hypertexte problème. Dans le menu contextuel qui apparaît, pointez sur Hyperlien et cliquez sur Modifier l'hyperlien. Dans la zone Tapez le nom du fichier ou de la page Web, tapez le nom du fichier auquel vous liez. Si vous ne connaissez pas le nom du fichier, cliquez sur Fichier et recherchez le fichier. Cliquez sur OK.

Pour les programmes Office 2007 et Office 2010: cliquez avec le bouton droit sur la cellule qui contient le lien hypertexte problème, puis pointez sur Modifier le lien hypertexte. Dans la zone Adresse, tapez le nom du fichier auquel vous liez. Si vous ne connaissez pas le nom du fichier, utilisez les outils de recherche de la ligne Regarder dans ... pour localiser le fichier. Sélectionnez le fichier, puis cliquez sur OK. Méthode 2

Utilisez la commande Coller en tant que lien hypertexte:

Pour Office 2003 et les versions antérieures: ouvrez le document auquel vous essayez de lier (qui contient le signe # dans le nom). Copiez la cellule à laquelle vous souhaitez créer un lien. Dans votre document, dans le menu Edition, cliquez sur Coller en tant que lien hypertexte.

Pour les programmes Office 2007 et Office 2010: ouvrez le document auquel vous essayez de lier. Il s'agit du document qui contient le signe # dans le nom. Copiez la cellule à laquelle vous souhaitez créer un lien. Dans votre document, cliquez sur la cellule dans laquelle vous souhaitez que l'hyperlien apparaisse. Sous l'onglet Accueil, cliquez sur la flèche sous Coller dans le groupe Presse-papiers, puis cliquez sur Coller en tant que lien hypertexte

si vous utilisez du code VBA, cette ligne peut être utile. J'ai testé it.it fonctionne à la fois sur chrome et firefox
ActiveSheet.Hyperlinks.Add Anchor: = Selection, Address: = "C: \ path \ to \ your \ file.htm" , SubAddress: = "nameOfYourAnchor", TextToDisplay: = "texte à afficher")

ici nameOfYourAnchor sans le # Sym par exemple si votre lien est C: / Users / [User] / Desktop / Intel Core - Wikipedia, l'encyclopédie gratuite.htm # Core_i3 votre code sera ( ActiveSheet.Hyperlinks.Add Anchor: = Selection, Address: = "C: / Users / User / Desktop / Intel Core - Wikipedia, the free encyclopedia.htm", SubAddress: = "Core_i3", TextToDisplay: = "text to display" )
j'espère que cela vous a aidé.

kamalam
la source
Le problème est que le fichier ne contient pas de signe dièse dans son nom. J'utilise le signe dièse pour
créer
2
jetez un oeil aux deux derniers paragraphes.
kamalam
@kamalam, en surface, c'est une solution très soignée. Cependant, je ne peux pas faire fonctionner ce code? Pouvez-vous poster le sous complet qui fonctionne pour vous s'il vous plaît?
Andi Mohr
-1

Les éléments suivants fonctionnent généralement sous Windows 7 avec Excel 2007. Le fichier est colocalisé avec la feuille de calcul. Le contenu de la cellule:

= HYPERLINK ("dump_faults_current_leg_bite.htm # BiteRec_000", "BITE record 1/35")

Certains ordinateurs de bureau rencontrent cependant des problèmes avec ce lien, mais ils obtiennent l'erreur «Impossible d'ouvrir le fichier spécifié».

Toolman
la source