2009-12-23 13 views
5

J'ai trouvé une ligne macro VBA qui redimensionne toutes les images dans un document Word:Macro Visual Basic dans Word pour Redimensionner/Centre/Supprimer toutes les images

Sub ResizeAllImages() 
''# make all images (both inline and floating) 
''# 11 cm wide while preserving aspect ratio 

Dim oShp As Shape 
Dim oILShp As InlineShape 

For Each oShp In ActiveDocument.Shapes 
    With oShp 
     .Height = AspectHt(.Width, .Height, _ 
     CentimetersToPoints(11)) 
     .Width = CentimetersToPoints(11) 
    End With 
Next 

For Each oILShp In ActiveDocument.InlineShapes 
    With oILShp 
     .Height = AspectHt(.Width, .Height, _ 
     CentimetersToPoints(11)) 
     .Width = CentimetersToPoints(11) 
    End With 
Next 
End Sub 

Je ne pouvais pas trouver le nom d'une méthode Je pourrais utiliser pour centrer toutes les images. Est-ce que quelqu'un sait ce que j'ai besoin d'ajouter, et où je devrais l'ajouter? Enfin, je voudrais supprimer les images que je trouve trop petites. Comment ferais-je ... Si la largeur de la forme est inférieure à 5 et que la hauteur de la forme est inférieure à 5, supprimez la forme. Pour faciliter la lecture de grandes quantités de texte en ligne, j'aime parfois tout coller dans un mot, puis le réorganiser. Je remplace chaque période-espace, avec une ligne de période-manuel, ce qui me donne une nouvelle ligne pour chaque phrase .. Je lis mieux quand c'est comme ça. Comme je colle tout, les graphiques viennent aussi, donc j'aimerais pouvoir contrôler la taille de toutes les images, et me débarrasser des images inutiles.

Répondre

3

Je pense que vous ne pouvez pas centrer les images. Vous pouvez centrer les paragraphes. Peut-être quelque chose comme cela vous aidera à:

For Each oILShp In ActiveDocument.InlineShapes 
    oILShp.Select 
    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter 
Next 

Pour la suppression, il suffit d'appeler Delete pour chaque objet de forme satisfaisant vos conditions.

+0

Merci. Ce morceau de code a fonctionné. –

1

Code pour supprimer les petites images:

Sub DeleteSmallPictures() 
Dim iShp As InlineShape 

    For Each iShp In ActiveDocument.InlineShapes 
     With iShp 
      If .Width < CentimetersToPoints(5) Then 
       iShp.Delete 
      End If 
     End With 
    Next iShp 
End Sub