Bonjour,
Tout d'abord, j'ai pas mal voyagé dans vos forums avant de poster ma question. Et merci pour la qualité des réponses apportées.
J’ai développé un outil en VBA lancé sous Excel pour formater des documents Word en documents PDF.
Ce nouvel outil est une refonte d’un outil qui faisait la même chose mais dont le moteur devenait obsolète.
Les documents Word à transformer contiennent des liens hypertexte permettant de lancer d'autres documents Word, transformés eux aussi en PDF. Une fois livrés au client, il s'est avéré que les liens ne fonctionnaient plus alors que dans notre environnement, nous n'avons eu aucun problème. Je me suis alors aperçu que lorsqu'on veut activer un lien, la textbox de Warning nous avertit de l'ouverture d'un "site" (le document s'ouvre après correctement en PDF) alors que dans les documents PDF, transformés avec l'ancienne version de l'outil, cette même box avertit de l'ouverture d'un "document".
J’ai comparé l’ancien outil avec le nouveau et je me suis aperçu d’une différence dans la mise à jour des hyperliens Word.
J’ai donc essayé de caler mon code avec ce qui avait été fait mais je rencontre des problèmes de traduction, sûrement liés aux différences de versions des 2 Excel (Windows 98 pour la 1ère, Windows 7 et Office 2013 pour la seconde).
Ci-dessous le code que j’ai écrit pour effectuer cette mise à jour :
Lors de l’exécution, j’obtiens une erreur 450 sur l’instruction Hyperlinks.Add « Nombre d’arguments incorrect ou affectation de propriété incorrecte).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 For j = 1 To nbHP WordDoc.Hyperlinks(j).Range.Select HPLien = WordDoc.Hyperlinks(j).Address HPLien = Replace(HPLien, ".docx", ".pdf") HPLien = Replace(HPLien, ".doc", ".pdf") WordDoc.Hyperlinks(j).Delete WordDoc.Hyperlinks.Add Anchor:=Selection.Range, Address:=HPLien Selection.collapse Direction:=0 Next j
Pour information, le code dans la nouvelle version de l'outil et avant que je le modifie, était le suivant (beaucoup plus simple) :
Autre chose, le code de l'ancienne version de l'outl, que j'ai donc essayé d'adapter, est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 nbHP = WordDoc.Hyperlinks.Count 'nombre de liens hypertextes dans le fichier word For j = 1 To nbHP WordDoc.Hyperlinks(j).Address = Replace(WordDoc.Hyperlinks(j).Address, ".docx", ".pdf") WordDoc.Hyperlinks(j).Address = Replace(WordDoc.Hyperlinks(j).Address, ".doc", ".pdf") Next j
où aHyper = variable déclarée en Hyperlink
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 For Each aHyper in ActiveDocument.hyperlinks aHyper.Range.Fields(1).Result.Select Cible$ = aHyper.Address Cible$ = RemplacerSousChaine$(Cible$, cheminOld$, cheminNew$) aHyper.Delete ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _ Cible$, SubAdress:="" Selection.Collapse direction:=wdCollapseEnd Next
Cible$ = variable déclarée en String
RemplacerSousChaine$ = fonction de modification de chaine de caractère
Merci d'avance de votre aide.
Bruno
Partager