Как изменить размер графического объекта в поле LINK?

После специальной вставки ссылки на диапазон ячеек из Excel в Word (2013) поле выглядит следующим образом:

{ LINK Excel.SheetMacroEnabled.12 D:\\20181228\\SC.xlsm Sheet1!R10C1:R10C20" \a \p }

Если щелкнуть правой кнопкой мыши на объекте, выбрать "Форматировать объект", а затем нажать "?", Откроется справочная статья " Формат автоматической формы".

Тем не мение, ActiveDocument.Shapes.SelectAll не обнаруживает этот объект.

Этот код также не работает, хотя в сообщении об ошибке говорится, что этот компонент доступен для изображений и объектов OLE:

With ActiveDocument.Shapes(1).PictureFormat 
 .ColorType = msoPictureGrayScale 
 .CropBottom = 18 
End With

Что это за объект? Я не могу найти его в объектной модели (Word).

Как получить к нему доступ через VBA? Я хочу программно изменить размер группы таких объектов до 90% от оригинала.

Upd. @ Синди Майстер предложила, где копать, спасибо. Я написал код, кажется, работает нормально:

Sub ResizeImages()
Dim img As Long
With ActiveDocument
For img = 1 To .InlineShapes.Count
    With .InlineShapes(img)
        .ScaleHeight = 90
        .ScaleWidth = 90
    End With
Next img
End With
End Sub

1 ответ

Решение

Поле Link должно быть InlineShape - оно не может быть Shape, если вы не можете отобразить поле, используя Alt+F9. поскольку Shape объекты имеют форматирование текста, любые связанные с ними коды полей (обычно ни один) не доступны.

Поэтому любой объект, который отображается через Link поле должно быть доступно через InlineShape объектная модель.

Например, следующий код зацикливает поля в документе и, если они связывают поля с источником Excel и содержат InlineShape, измерения InlineShape масштабируются:

Dim fld as Word.Field
For Each fld In ActiveDocument.Fields
    If fld.Type = wdFieldLink
      If fld.Result.InlineShapes.Count > 1 And _
         InStr(fld.OLEFormat.ClassType, "Excel") Then
           Set ils = fld.Result.InlineShapes(1)
           ils.ScaleWidth = 90
           ils.ScaleHeight = 90
      End If
    End If
Next
Другие вопросы по тегам