1

У меня длинный документ MS Word 2007, в котором мне иногда нужно заменить все встроенные графики.

Изменения достаточно просты и регулярны, чтобы я мог написать макрос VBA, чтобы сделать эти обновления для меня.

Но я столкнулся с очень простой проблемой: я не могу понять, как даже выбрать встроенный граф в VBA. Функция "Запись макроса" в Word по какой-то причине не записывает изменения в график, и все онлайн-учебники посвящены взаимодействию с графиками в Excel.

Может ли кто-нибудь опубликовать какой-нибудь короткий пример кода (или ссылку, объясняющую), показывающую базовое взаимодействие со встроенными графиками в Word?

2 ответа2

2

Это должно работать как для встроенных изображений (jpg и т.д.), Так и для встроенных диаграмм:

'Kill 'em all: pictures, OLE object, hyperlinks, ActiveX controls, etc.
Sub DeleteAllShapes()
    Dim shp As InlineShape

    For Each shp In ActiveDocument.InlineShapes
        shp.Delete
    Next shp
End Sub

Существует также объект "Shape" (и коллекция Shapes), который относится ко всем фигурам более обобщенно - независимо от того, встроены они или нет. Форма может состоять из многих вещей - используйте свойство Type для возврата типа встроенной фигуры: изображение, связанное изображение, встроенный объект OLE, связанный объект OLE, элементы управления ActiveX и многое другое. Если у вас много разных типов и вам нужно их различать, вы можете окружить свое удаление чем-то вроде:

If shp.Type = wdInlineShapeEmbeddedOLEObject Then
    shp.Delete
End If

Один из способов добавить новую картинку:

' Insert a picture at the current insertion point.
Sub InsertPicture(ByVal FileName As String)

    Selection.InlineShapes.AddPicture _
                             FileName:=FileName, _
                             SaveWithDocument:=True
End Sub
1

Взгляните на этот пост в блоге MSDN: Объектная модель диаграммы Office в PowerPoint и Word.

Требуется SP2 для Office 2007.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .