Macro VBA word

Résolu
manu7762323 Messages postés 11 Date d'inscription   Statut Membre -  
phil_232 Messages postés 286 Statut Membre -
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.
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. phil_232 Messages postés 286 Statut Membre 33
     
    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
  2. manu7762323 Messages postés 11 Date d'inscription   Statut Membre
     
    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
  3. phil_232 Messages postés 286 Statut Membre 33
     
    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