Question modification hyperlink dans doc

Plus d'informations
il y a 12 ans 10 mois #14751 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 :whistle: :whistle:

[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.

Plus d'informations
il y a 12 ans 10 mois #14756 par Matthew BETTON
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

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
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 :angry:

merci pour le petit script :laugh:

mais quand je test moi j'ai une erreur :S

[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.

Plus d'informations
il y a 12 ans 10 mois #14762 par Matthew BETTON
L'erreur t'indique clairement une erreur à la ligne 13 :

[code:1]$objDoc.SaveAs([ref]$DocFile,$wdFormatDocument)
[/code:1]

Essayes :

[code:1] $DocFile = \&quot;d:\temp\test.doc\&quot;
$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 \&quot;www.microsoft.com/\"«»){
$objHyperlink.Address = \&quot;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.

Plus d'informations
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 \&quot; MERCI Matthew BETTON \&quot; :) surtout pour ta patience

[code:1]
$DocFile = \&quot;D:\PUBLIC\word\test1.doc\&quot;
$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 \&quot;www.microsoft.com/\"«»){
$objHyperlink.Address = \&quot;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 = \&quot;D:\PUBLIC\word\test.docx\&quot;
$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 \&quot;www.microsoft.com/\"«»){
$objHyperlink.Address = \&quot;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.

Plus d'informations
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 \&quot;d:\\&quot; -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 \&quot;www.microsoft.com/\"«»){
$objHyperlink.Address = \&quot;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 \&quot;Open\&quot; with \&quot;1\&quot; argument(s): \&quot;Type mismatch. (Exception from
HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))\&quot;
At line:8 char:34
+ $objDoc = $objword.Documents.open &lt;&lt;&lt;&lt; ($DocFile)
+ CategoryInfo : NotSpecified: (:«») [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation

You cannot call a method on a null-valued expression.
At line:16 char:15
+ $objDoc.SaveAs &lt;&lt;&lt;&lt; ([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 &lt;&lt;&lt;&lt; ()
+ 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
Propulsé par Kunena