Макрос Visual Basic в Word для изменения размера / Центр / Удалить все изображения - PullRequest
5 голосов
/ 24 декабря 2009

Я нашел в сети макрос VBA, который изменяет размеры всех изображений в документе Word:

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

Мне не удалось найти название метода, который я мог бы использовать для выравнивания по центру всех изображений. Кто-нибудь знает, что мне нужно добавить, и где я должен был бы добавить это

Наконец, я хотел бы удалить изображения, которые я считаю слишком маленькими. Как бы это сделать ... Если ширина фигуры меньше 5, а высота фигуры меньше 5, удалите фигуру.

Для облегчения чтения большого количества онлайн-текста мне иногда нравится вставлять все в слова, а затем переставлять их. Я заменяю каждый период-пробел строкой-строкой вручную, которая дает мне новую строку для каждого предложения ... Я читаю лучше, когда это так. Так как я вставляю все, графика тоже приходит, поэтому я хотел бы иметь возможность контролировать размер всех изображений и избавляться от ненужных изображений.

Ответы [ 3 ]

4 голосов
/ 24 декабря 2009

Я думаю, вы не можете выровнять изображения по центру. Вы можете выровнять абзацы по центру. Возможно, что-то подобное поможет вам:

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

Для удаления просто вызовите Delete для каждого объекта Shape, удовлетворяющего вашим условиям.

2 голосов
/ 13 мая 2013
1 голос
/ 24 декабря 2009

Код для удаления маленьких картинок:

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
...