2009-12-23 9 views
5

ho trovato una macro VBA in linea che ridimensiona tutte le immagini in un documento Word:macro di Visual Basic in Word per Ridimensiona/Centro/Cancella tutte le immagini

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 

non riuscivo a trovare il nome di un metodo che Potrei usare per allineare al centro tutte le immagini. Qualcuno sa cosa devo aggiungere e dove dovrei aggiungerlo?

Infine, vorrei eliminare le immagini che trovo troppo piccole. Come fare ... Se la larghezza della forma è inferiore a 5 e l'altezza della forma è inferiore a 5, eliminare la forma.

Per facilitare la lettura di grandi quantità di testo online, a volte mi piace incollare tutto in una parola e quindi riorganizzarlo. Sostituisco ogni spazio-periodo, con una linea punto-manuale, che mi dà una nuova riga per ogni frase .. Leggo meglio quando è così. Dal momento che sto incollando tutto, viene anche la grafica, quindi mi piacerebbe essere in grado di controllare la dimensione di tutte le immagini e di eliminare qualsiasi immagine non necessaria.

risposta

3

Penso che non sia possibile centrare l'allineamento delle immagini. Puoi allineare i paragrafi al centro. Forse qualcosa di simile a questo vi aiuterà a:

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

per l'eliminazione, basta chiamare Delete per ogni oggetto Shape soddisfare le vostre condizioni.

+0

Grazie. Questo pezzo di codice ha funzionato. –

1

codice per eliminare piccole immagini:

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