Как пользователь, можно дважды щелкнуть объект Excel, чтобы активировать его, а затем перетащить рамку, чтобы развернуть / сжать ее, чтобы отобразить различное количество строк и / или столбцов.
Этому нет эквивалента в объектной модели Word - это невозможно сделать с помощью кода. Если только ...
Таблица вставлена со ссылкой, а поле Link
управляет ссылкой.В этом случае можно изменить диапазон ячеек, указанный в поле Link
, и размер встроенного объекта будет изменен при обновлении поля.
Например, если код поля Link
предназначен для диапазона A1: B2
{ LINK Excel.Sheet.12 C:\\Test\\TestMergeData.xlsx Sheet1!R1C1:R2C2 \a \p }
, изменив его на A1: C3 (R1C1: R3: C3), отобразятся три строки истолбцы вместо двух.(Вы можете просматривать и редактировать коды полей, нажав Alt + F9.)
Код VBA будет выглядеть следующим образом:
Sub ChangeRangeLinkedExcel()
Dim fld As Word.Field
Dim ils As Word.InlineShape
Dim sFldCode As String
Dim posRangeStart As Long
Dim sLinkLeft As String, sRange As String, sLinkRight As String
For Each ils In ActiveDocument.InlineShapes
If ils.Type = 2 Then ' wdInlineShapeLinkedOLEObject
Set fld = ils.Range.Fields(1)
sFldCode = fld.code
posRangeStart = InStr(sFldCode, "!R")
sLinkLeft = Left(sFldCode, posRangeStart)
sRange = Mid(sFldCode, posRangeStart + 1, 9)
sLinkRight = Right(sFldCode, Len(sFldCode) - Len(sLinkLeft) - Len(sRange))
sRange = "R1C1:R3C3"
fld.code.Text = sLinkLeft & sRange & sLinkRight
fld.Update
End If
Next
End Sub
Если объект Excel не является полем Link
, тогдаединственная возможность, которую я когда-либо нашел, изменить то, что он отображает с помощью кода, - это удалить объект, а затем воссоздать его.Когда новый внедренный объект вставляется, он автоматически отображает указанное количество строк и столбцов.