Macro VBA word [Résolu/Fermé]

Signaler
Messages postés
11
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
7 octobre 2009
-
phil_232
Messages postés
289
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
-
Bonjour,

Je suis débutant en macro word.
On m'a demandé, à partir d'un document word avec beaucoup de texte et d'images, de développer une macro permettant de sauvegarder toutes les images du document dans un dossier et de les zipper, puis de remplacer dans le texte chaque image par un code du type %ATTACH%/image00x.jpg avec x le n° des images du document dans l'ordre.


Explication : il s'agit de migrer des documents word sur un TWiki. Pour cela, il faut uploader les images en zip sur le wiki. Elles seront nommés par exemple image001.jpg, image002.jpg, image003.jp, etc... et dans le document, le code wiki pour afficher ces images dans l'ordre sera %ATTACH%/image001.jpg, puis %ATTACH%/image002.jpg, etc...

J'espère avoir été assez clair.
Merci d'avance pour votre aide.

3 réponses

Messages postés
289
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
31
c'est un projet assez ambitieux. je vais donc pas te fournir un programme. seulement autant : les images se trouvent dans word dans un objet InlineShape.

ajoutes qq images dans un doc word avant éxécution

Sub GetImages()

Dim SH As InlineShape

MsgBox ActiveDocument.InlineShapes.Count

For Each SH In ActiveDocument.InlineShapes
MsgBox SH.Type
Next

End Sub
Messages postés
11
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
7 octobre 2009

Ok merci...

Donc la si je comprends bien, ce code permet de trouver les images dans le document. J'ai écris un petit quelque chose pour remplacer les images trouvées par du texte mais je pense que je m'y prend très mal vu que je n'y connais rien...

Sub GetImagesAndReplaceWithText()

Dim SH As InlineShape

MsgBox ActiveDocument.InlineShapes.Count

For Each SH In ActiveDocument.InlineShapes
MsgBox SH.Type

With Selection.Find
.ActiveDocument.InlineShapes
.Replacement.Text = "TEST de remplacement"
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

Next

End Sub


Quelqu'un pourrait m'aiguiller ?merci d'avance !
Messages postés
289
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
31
Sub GetImagesAndReplaceWithText()

Dim SH As InlineShape

MsgBox ActiveDocument.InlineShapes.Count

For Each SH In ActiveDocument.InlineShapes
'MsgBox SH.Type pas besoin, c'était juste pour faire qq chose dans la boucle

With Selection.Find ' tu n'as pas fait Select, donc rien n'est sélectionné
.ActiveDocument.InlineShapes ' superflu car tu vas déjà chercher toutes les images
.Replacement.Text = "TEST de remplacement"
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

Next

End Sub