Macro VBA word

Résolu/Fermé
manu7762323 Messages postés 11 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 7 octobre 2009 - 29 janv. 2008 à 13:45
phil_232 Messages postés 286 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 12 juin 2008 - 30 janv. 2008 à 21:38
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.
A voir également:

3 réponses

phil_232 Messages postés 286 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 12 juin 2008 33
30 janv. 2008 à 01:30
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
0
manu7762323 Messages postés 11 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 7 octobre 2009
30 janv. 2008 à 10:35
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 !
0
phil_232 Messages postés 286 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 12 juin 2008 33
30 janv. 2008 à 21:38
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
0