Чтобы изменить содержимое встроенного документа Word, сначала необходимо получить доступ к встроенному приложению, а затем сам документ.После того как код получил доступ к OLEObject
, ему требуется фактический Object
, с помощью которого можно обратиться к приложению и документу.
Обратите внимание, что было бы целесообразно присвоить объекту OLE имя, скореечем полагаться на тот, созданный в Excel.Такие имена имеют неприятную тенденцию к изменению, если добавляются дополнительные объекты или удаляются другие.Любое имя, назначенное явно, останется нетронутым.Это должно быть выполнено только один раз на листе (основано на полном примере кода):
ws.OLEObjects("Object 4").Name = "WordDoc" 'for example, can be any string you prefer
Тогда, если вы решите сделать это, в полном коде это будет ws.OLEObjects("WordDoc")
В конце процедуры строка ws.Cells(1, 1).Select
деактивирует внедренный объект, выбрав ячейку на листе.Если вы хотите оставить документ Word активным для пользователя, просто удалите эту строку.
Sub ok()
Dim wb As Excel.Workbook
Dim ws As Excel.Worksheet
Dim doc As Object 'Word.Document
Dim wdObj As Object, wdTable As Object 'Word.Table
Set wb = ActiveWorkbook
Set ws = wb.Sheets("Sheet1")
Set wdObj = ws.OLEObjects("Object 4")
wdObj.Activate
Set doc = wdObj.Object.Application.ActiveDocument
Set wdTable = doc.Tables(1)
wdTable.PreferredWidthType = 2 ' Word.WdPreferredWidthType.wdPreferredWidthPercent
wdTable.PreferredWidth = 95
ws.Cells(1, 1).Select
End Sub