Question
modification hyperlink dans doc
- stas
-
Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 16
- Remerciements reçus 0
il y a 12 ans 10 mois #14751
par stas
modification hyperlink dans doc a été créé par stas
Hello a tous;
voila je cherche un pt script qui pourrai modifier les hyperlink dans tout les doc.
Apres quelque recherche sur le net

[code:1]
Creer l'objet
Set objWord = CreateObject(\"Word.Application\"«»)
objWord.Visible = True
ouvre l'objet pour lecture
Set objDoc = objWord.Documents.Open(\"d:\public\test.docx\"«») peut on faire ceci d:\public\*.docx
Set colHyperlinks = objDoc.Hyperlinks
pour chaque objet hyperlink dans le pipe?
ForEach ($objHyperlink in $colHyperlinks){
si hyperlink=microsoft alors hyperlink=new microsoft
If ($objHyperlink.Address = \"www.microsoft.com/\"«») Then
($objHyperlink.Address = \"www.microsoft.com/technet/scriptcenter/\"«»)
End If}
Next
[/code:1]
C'est comme ca que je l'ai compris mais cela ne fonctionne pas des erreur dans les () {}
ou autre chose merci pour les explications
voila je cherche un pt script qui pourrai modifier les hyperlink dans tout les doc.
Apres quelque recherche sur le net
[code:1]
Creer l'objet
Set objWord = CreateObject(\"Word.Application\"«»)
objWord.Visible = True
ouvre l'objet pour lecture
Set objDoc = objWord.Documents.Open(\"d:\public\test.docx\"«») peut on faire ceci d:\public\*.docx
Set colHyperlinks = objDoc.Hyperlinks
pour chaque objet hyperlink dans le pipe?
ForEach ($objHyperlink in $colHyperlinks){
si hyperlink=microsoft alors hyperlink=new microsoft
If ($objHyperlink.Address = \"www.microsoft.com/\"«») Then
($objHyperlink.Address = \"www.microsoft.com/technet/scriptcenter/\"«»)
End If}
Next
[/code:1]
C'est comme ca que je l'ai compris mais cela ne fonctionne pas des erreur dans les () {}
ou autre chose merci pour les explications
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 12 ans 10 mois #14756
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:modification hyperlink dans doc
Bonjour,
Curieux mélange que le code que tu viens de poster : ASP, vbscript ?... Mais ce n'est pas du PowerShell
[code:1]
Set objWord = CreateObject(\"Word.Application\"«»)
objWord.Visible = True
Set objDoc = objWord.Documents.Open(\"d:\public\test.docx\"«»)
Set colHyperlinks = objDoc.Hyperlinks
ForEach ($objHyperlink in $colHyperlinks){
If ($objHyperlink.Address = \"www.microsoft.com/\"«») Then
($objHyperlink.Address = \"www.microsoft.com/technet/scriptcenter/\"«»)
End If
Next[/code:1]
Une simple traduction, en PowerShell :
[code:1]$DocFile = \"d:\temp\test.doc\"
$objWord = New-Object -Com Word.Application
$objWord.Visible = $true
$objDoc = $objword.Documents.open($DocFile)
$colHyperlinks = $objDoc.Hyperlinks
Foreach($objHyperlink in $colHyperlinks){
if($objHyperlink.Address -eq \"www.microsoft.com/\"«»){
$objHyperlink.Address = \"www.microsoft.com/technet/scriptcenter/\"
}
}
$wdFormatDocument = 0 # msdn.microsoft.com/en-us/library/bb238158%28v=office.12%29.aspx
$objDoc.SaveAs($DocFile,$wdFormatDocument)
$objDoc.close()
$objWord.Quit()
[/code:1]
Testé avec Word 2003... Cela fonctionne. A toi de le modifier en fonction de tes besoins
@ +
Matthew BETTON
Curieux mélange que le code que tu viens de poster : ASP, vbscript ?... Mais ce n'est pas du PowerShell
[code:1]
Set objWord = CreateObject(\"Word.Application\"«»)
objWord.Visible = True
Set objDoc = objWord.Documents.Open(\"d:\public\test.docx\"«»)
Set colHyperlinks = objDoc.Hyperlinks
ForEach ($objHyperlink in $colHyperlinks){
If ($objHyperlink.Address = \"www.microsoft.com/\"«») Then
($objHyperlink.Address = \"www.microsoft.com/technet/scriptcenter/\"«»)
End If
Next[/code:1]
Une simple traduction, en PowerShell :
[code:1]$DocFile = \"d:\temp\test.doc\"
$objWord = New-Object -Com Word.Application
$objWord.Visible = $true
$objDoc = $objword.Documents.open($DocFile)
$colHyperlinks = $objDoc.Hyperlinks
Foreach($objHyperlink in $colHyperlinks){
if($objHyperlink.Address -eq \"www.microsoft.com/\"«»){
$objHyperlink.Address = \"www.microsoft.com/technet/scriptcenter/\"
}
}
$wdFormatDocument = 0 # msdn.microsoft.com/en-us/library/bb238158%28v=office.12%29.aspx
$objDoc.SaveAs($DocFile,$wdFormatDocument)
$objDoc.close()
$objWord.Quit()
[/code:1]
Testé avec Word 2003... Cela fonctionne. A toi de le modifier en fonction de tes besoins
@ +
Matthew BETTON
Connexion ou Créer un compte pour participer à la conversation.
- stas
-
Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 16
- Remerciements reçus 0
il y a 12 ans 10 mois #14758
par stas
Réponse de stas sur le sujet Re:modification hyperlink dans doc
Sorry oupssss c'est sur qlq site qui disent parler de powershell 
merci pour le petit script
mais quand je test moi j'ai une erreur
[code:1]
Argument: '1' should be a System.Management.Automation.PSReference. Use [ref].
At line:13 char:1
+ $objDoc.SaveAs($DocFile,$wdFormatDocument)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:«») [], MethodException
+ FullyQualifiedErrorId : NonRefArgumentToRefParameterMsg
[/code:1]
j'ai vérifier sur le site # msdn.microsoft.com/en-us/library/bb238158%28v=office.12%29.aspx
j'ai aussi tester avec des docx en modifiant le :
[code:1]
$wdFormatDocumentDefault = 16 même avec les crochets[16]
$objDoc.SaveAs($DocFile,$wdFormatDocumentDefault)
[/code:1]
Si je veux faire un *.doc ou *.docx tu pense que c'est possible?<br><br>Message édité par: fabgr, à: 2/05/13 12:55
merci pour le petit script
mais quand je test moi j'ai une erreur
[code:1]
Argument: '1' should be a System.Management.Automation.PSReference. Use [ref].
At line:13 char:1
+ $objDoc.SaveAs($DocFile,$wdFormatDocument)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:«») [], MethodException
+ FullyQualifiedErrorId : NonRefArgumentToRefParameterMsg
[/code:1]
j'ai vérifier sur le site # msdn.microsoft.com/en-us/library/bb238158%28v=office.12%29.aspx
j'ai aussi tester avec des docx en modifiant le :
[code:1]
$wdFormatDocumentDefault = 16 même avec les crochets[16]
$objDoc.SaveAs($DocFile,$wdFormatDocumentDefault)
[/code:1]
Si je veux faire un *.doc ou *.docx tu pense que c'est possible?<br><br>Message édité par: fabgr, à: 2/05/13 12:55
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 12 ans 10 mois #14762
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:modification hyperlink dans doc
L'erreur t'indique clairement une erreur à la ligne 13 :
[code:1]$objDoc.SaveAs([ref]$DocFile,$wdFormatDocument)
[/code:1]
Essayes :
[code:1] $DocFile = \"d:\temp\test.doc\"
$objWord = New-Object -Com Word.Application
$objWord.Visible = $true
$objDoc = $objword.Documents.open($DocFile)
$colHyperlinks = $objDoc.Hyperlinks
Foreach($objHyperlink in $colHyperlinks){
if($objHyperlink.Address -eq \"www.microsoft.com/\"«»){
$objHyperlink.Address = \"www.microsoft.com/technet/scriptcenter/\"
}
}
$wdFormatDocument = 0 # msdn.microsoft.com/en-us/library/bb238158%28v=office.12%29.aspx
$objDoc.SaveAs([ref]$DocFile,$wdFormatDocument)
$objDoc.close()
$objWord.Quit()
[/code:1]
Pour le docx : il faut que tu fasses des tests en prenant les informations dans l'article mentionné ...
Peut être :
[code:1]
$wdFormatDocumentDefault = 16
$objDoc.SaveAs([ref]$DocFile,$wdFormatDocumentDefault)
[/code:1]
[code:1]$objDoc.SaveAs([ref]$DocFile,$wdFormatDocument)
[/code:1]
Essayes :
[code:1] $DocFile = \"d:\temp\test.doc\"
$objWord = New-Object -Com Word.Application
$objWord.Visible = $true
$objDoc = $objword.Documents.open($DocFile)
$colHyperlinks = $objDoc.Hyperlinks
Foreach($objHyperlink in $colHyperlinks){
if($objHyperlink.Address -eq \"www.microsoft.com/\"«»){
$objHyperlink.Address = \"www.microsoft.com/technet/scriptcenter/\"
}
}
$wdFormatDocument = 0 # msdn.microsoft.com/en-us/library/bb238158%28v=office.12%29.aspx
$objDoc.SaveAs([ref]$DocFile,$wdFormatDocument)
$objDoc.close()
$objWord.Quit()
[/code:1]
Pour le docx : il faut que tu fasses des tests en prenant les informations dans l'article mentionné ...
Peut être :
[code:1]
$wdFormatDocumentDefault = 16
$objDoc.SaveAs([ref]$DocFile,$wdFormatDocumentDefault)
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- stas
-
Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 16
- Remerciements reçus 0
il y a 12 ans 10 mois #14767
par stas
Réponse de stas sur le sujet Re:modification hyperlink dans doc
Voici pour le code pour le doc \" MERCI Matthew BETTON \"
surtout pour ta patience
[code:1]
$DocFile = \"D:\PUBLIC\word\test1.doc\"
$objWord = New-Object -Com Word.Application
$objWord.Visible = $true
$objDoc = $objword.Documents.open($DocFile)
$colHyperlinks = $objDoc.Hyperlinks
Foreach($objHyperlink in $colHyperlinks){
if($objHyperlink.Address -eq \"www.microsoft.com/\"«»){
$objHyperlink.Address = \"www.microsoft.com/technet/scriptcenter/\"
}
}
$wdFormatDocument = 0 # msdn.microsoft.com/en-us/library/bb238158%28v=office.12%29.aspx
$objDoc.SaveAs([ref]$DocFile,[ref]$wdFormatDocument)
$objDoc.close()
$objWord.Quit()
[/code:1]
et pour le docx
[code:1]
$DocFile = \"D:\PUBLIC\word\test.docx\"
$objWord = New-Object -Com Word.Application
$objWord.Visible = $true
$objDoc = $objword.Documents.open($DocFile)
$colHyperlinks = $objDoc.Hyperlinks
Foreach($objHyperlink in $colHyperlinks){
if($objHyperlink.Address -eq \"www.microsoft.com/\"«»){
$objHyperlink.Address = \"www.microsoft.com/technet/scriptcenter/\"
}
}
$wdFormatDocument = 16 # msdn.microsoft.com/en-us/library/bb238158%28v=office.12%29.aspx
$objDoc.SaveAs([ref]$DocFile,[ref]$wdFormatDocument)
$objDoc.close()
$objWord.Quit()
[/code:1]
[code:1]
$DocFile = \"D:\PUBLIC\word\test1.doc\"
$objWord = New-Object -Com Word.Application
$objWord.Visible = $true
$objDoc = $objword.Documents.open($DocFile)
$colHyperlinks = $objDoc.Hyperlinks
Foreach($objHyperlink in $colHyperlinks){
if($objHyperlink.Address -eq \"www.microsoft.com/\"«»){
$objHyperlink.Address = \"www.microsoft.com/technet/scriptcenter/\"
}
}
$wdFormatDocument = 0 # msdn.microsoft.com/en-us/library/bb238158%28v=office.12%29.aspx
$objDoc.SaveAs([ref]$DocFile,[ref]$wdFormatDocument)
$objDoc.close()
$objWord.Quit()
[/code:1]
et pour le docx
[code:1]
$DocFile = \"D:\PUBLIC\word\test.docx\"
$objWord = New-Object -Com Word.Application
$objWord.Visible = $true
$objDoc = $objword.Documents.open($DocFile)
$colHyperlinks = $objDoc.Hyperlinks
Foreach($objHyperlink in $colHyperlinks){
if($objHyperlink.Address -eq \"www.microsoft.com/\"«»){
$objHyperlink.Address = \"www.microsoft.com/technet/scriptcenter/\"
}
}
$wdFormatDocument = 16 # msdn.microsoft.com/en-us/library/bb238158%28v=office.12%29.aspx
$objDoc.SaveAs([ref]$DocFile,[ref]$wdFormatDocument)
$objDoc.close()
$objWord.Quit()
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- stas
-
Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 16
- Remerciements reçus 0
il y a 12 ans 10 mois #14784
par stas
Réponse de stas sur le sujet Re:modification hyperlink dans doc
Hello a tous 
je suis occuper a faire un pt ajout a ce script:
-je voudrai modifier le script pour faire un check de plusieurs docx ex: d:\*.docx
[code:1]
get-childitem -path \"d:\\" -recurse -include *.docx
foreach($DocFile in $collection){
$objWord = New-Object -Com Word.Application
$objWord.Visible = $true
$objDoc = $objword.Documents.open($DocFile)
$colHyperlinks = $objDoc.Hyperlinks
Foreach($objHyperlink in $colHyperlinks){
if($objHyperlink.Address -eq \"www.microsoft.com/\"«»){
$objHyperlink.Address = \"www.microsoft.com/technet/scriptcenter/\"
}
}
$wdFormatDocument = 16 # msdn.microsoft.com/en-us/library/bb238158%28v=office.12%29.aspx
$objDoc.SaveAs([ref]$DocFile,[ref]$wdFormatDocument)
$objDoc.close()
$objWord.Quit()
}
[/code:1]
Mais j'ai des erreurs :
[code:1]
Exception calling \"Open\" with \"1\" argument(s): \"Type mismatch. (Exception from
HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))\"
At line:8 char:34
+ $objDoc = $objword.Documents.open <<<< ($DocFile)
+ CategoryInfo : NotSpecified: (:«») [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
You cannot call a method on a null-valued expression.
At line:16 char:15
+ $objDoc.SaveAs <<<< ([ref]$DocFile,[ref]$wdFormatDocument)
+ CategoryInfo : InvalidOperation: (SaveAs:«»String) [], RuntimeExc
eption
+ FullyQualifiedErrorId : InvokeMethodOnNull
You cannot call a method on a null-valued expression.
At line:17 char:14
+ $objDoc.close <<<< ()
+ CategoryInfo : InvalidOperation: (close:«»String) [], RuntimeExce
ption
+ FullyQualifiedErrorId : InvokeMethodOnNull
[/code:1]
Je vais encore chercher mais si vous avez des reponse ou idee THX
je suis occuper a faire un pt ajout a ce script:
-je voudrai modifier le script pour faire un check de plusieurs docx ex: d:\*.docx
[code:1]
get-childitem -path \"d:\\" -recurse -include *.docx
foreach($DocFile in $collection){
$objWord = New-Object -Com Word.Application
$objWord.Visible = $true
$objDoc = $objword.Documents.open($DocFile)
$colHyperlinks = $objDoc.Hyperlinks
Foreach($objHyperlink in $colHyperlinks){
if($objHyperlink.Address -eq \"www.microsoft.com/\"«»){
$objHyperlink.Address = \"www.microsoft.com/technet/scriptcenter/\"
}
}
$wdFormatDocument = 16 # msdn.microsoft.com/en-us/library/bb238158%28v=office.12%29.aspx
$objDoc.SaveAs([ref]$DocFile,[ref]$wdFormatDocument)
$objDoc.close()
$objWord.Quit()
}
[/code:1]
Mais j'ai des erreurs :
[code:1]
Exception calling \"Open\" with \"1\" argument(s): \"Type mismatch. (Exception from
HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))\"
At line:8 char:34
+ $objDoc = $objword.Documents.open <<<< ($DocFile)
+ CategoryInfo : NotSpecified: (:«») [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
You cannot call a method on a null-valued expression.
At line:16 char:15
+ $objDoc.SaveAs <<<< ([ref]$DocFile,[ref]$wdFormatDocument)
+ CategoryInfo : InvalidOperation: (SaveAs:«»String) [], RuntimeExc
eption
+ FullyQualifiedErrorId : InvokeMethodOnNull
You cannot call a method on a null-valued expression.
At line:17 char:14
+ $objDoc.close <<<< ()
+ CategoryInfo : InvalidOperation: (close:«»String) [], RuntimeExce
ption
+ FullyQualifiedErrorId : InvokeMethodOnNull
[/code:1]
Je vais encore chercher mais si vous avez des reponse ou idee THX
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.110 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- modification hyperlink dans doc