Bonjour,
Je peux imaginer que le titre laisse un peu perplexe. Voilà mon problème.
J'ai développé un outil permettant de convertir des documents Word en documents PDF, plus sûrs à utiliser par le client final.
Ces documents peuvent contenir des liens hypertexte pour faire le lien avec d'autres documents Word (exemple : un document Menu réliés aux documents spécifiques).
Mon outil balaie donc le dossier saisi par l’utilisateur (et les sous-dossiers) et pour chaque document trouvé corrige les liens hypertexte pour qu'il pointe sur une PDF au lieu d'un Word (puisqu'on traite toute l'arborescence) puis sauvegarde au format PDF.
Initialement, le code utilisé était le suivant :
Sur nos postes, le résultat était concluant : les documents étaient convertis en PDF et les liens en interne les reliaient correctement entre eux.
Problème : sur certains environnements du client, les liens ne fonctionnent plus. Soit ils demandent l’ouverture de Internet Explorer et les liens retour ne fonctionnent plus, soit ils sont tout simplement sans effet.
J'ai comparé avec l'ancienne version de l'outil (développé sous ACCESS) et la seule différence que j'y ai vu, c'est qu'il recréait les liens (suppression/création) au lieu de les modifier.
Je me suis donc lancé dans le correctif du code. Mais je ne vois pas pourquoi ça cloche.
J'ai balayé un certains nombre de forum, dont celui-ci dont j'ai remarqué les retours pertinents, mais je n'ai pas trouvé la solution à mon problème spécifique. Quand j'essaie des solutions proposée, ça ne fonctionne pas.
Voilà le nouveau code :
Tel qu'il est là, je récupère l'erreur critique 91 (variable objet ou variable de bloc With non définie). Sinon, c'est le code de création du lien qui ne fonctionne plus, notamment à cause du paramètre "Anchor".
Pensez-vous pouvoir m'aider à débloquer la situation ?
Pour information, j'ai joint la totalité du code lié au bouton de mon écran.
Désolé pour ce long message mais il me semblait utile de vous expliquer l'objet réel de l'outil.
Merci d'avance de vos retours.
Je peux imaginer que le titre laisse un peu perplexe. Voilà mon problème.
J'ai développé un outil permettant de convertir des documents Word en documents PDF, plus sûrs à utiliser par le client final.
Ces documents peuvent contenir des liens hypertexte pour faire le lien avec d'autres documents Word (exemple : un document Menu réliés aux documents spécifiques).
Mon outil balaie donc le dossier saisi par l’utilisateur (et les sous-dossiers) et pour chaque document trouvé corrige les liens hypertexte pour qu'il pointe sur une PDF au lieu d'un Word (puisqu'on traite toute l'arborescence) puis sauvegarde au format PDF.
Initialement, le code utilisé était le suivant :
VB:
Dim WordApp As Object: Dim WordDoc As Object:Dim nbHP As Long
' Ouverture du document word
Set WordApp = CreateObject("word.Application")
WordApp.Visible = False
Set WordDoc = WordApp.Documents.Open(FichierTraite)
'+---------------------------------------------------------------------------------------------+
'! Modification des liens hypertexte pour acceder aux fichiers PDF plutot qu'aux fichiers Word !
'+---------------------------------------------------------------------------------------------+
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
Sur nos postes, le résultat était concluant : les documents étaient convertis en PDF et les liens en interne les reliaient correctement entre eux.
Problème : sur certains environnements du client, les liens ne fonctionnent plus. Soit ils demandent l’ouverture de Internet Explorer et les liens retour ne fonctionnent plus, soit ils sont tout simplement sans effet.
J'ai comparé avec l'ancienne version de l'outil (développé sous ACCESS) et la seule différence que j'y ai vu, c'est qu'il recréait les liens (suppression/création) au lieu de les modifier.
Je me suis donc lancé dans le correctif du code. Mais je ne vois pas pourquoi ça cloche.
J'ai balayé un certains nombre de forum, dont celui-ci dont j'ai remarqué les retours pertinents, mais je n'ai pas trouvé la solution à mon problème spécifique. Quand j'essaie des solutions proposée, ça ne fonctionne pas.
Voilà le nouveau code :
Code:
Dim WordApp As Object: Dim WordDoc As Object:Dim nbHP As Long: Dim HPAdress As String: Dim TexteSel As Object
' Ouverture du document word
Set WordApp = CreateObject("word.Application")
WordApp.Visible = False
Set WordDoc = WordApp.Documents.Open(FichierTraite)
'+---------------------------------------------------------------------------------------------+
'! Modification des liens hypertexte pour acceder aux fichiers PDF plutot qu'aux fichiers Word !
'+---------------------------------------------------------------------------------------------+
nbHP = WordDoc.Hyperlinks.Count 'nombre de liens hypertextes dans le fichier word
For j = 1 To nbHP
HPAdress = WordDoc.Hyperlinks(j).Address
TexteSel = WordDoc.Hyperlinks(j).TextToDisplay
HPAdress = Replace(HPAdress, ".docx", ".pdf")
HPAdress = Replace(HPAdress, ".doc", ".pdf")
WordDoc.Hyperlinks(j).Delete
WordDoc.Hyperlinks(j).Add Anchor:=TexteSel, Address:=HPAdress
Next j
Tel qu'il est là, je récupère l'erreur critique 91 (variable objet ou variable de bloc With non définie). Sinon, c'est le code de création du lien qui ne fonctionne plus, notamment à cause du paramètre "Anchor".
Pensez-vous pouvoir m'aider à débloquer la situation ?
Pour information, j'ai joint la totalité du code lié au bouton de mon écran.
Désolé pour ce long message mais il me semblait utile de vous expliquer l'objet réel de l'outil.
Merci d'avance de vos retours.