Как изменить таблицу Word в документе, встроенном в Excel - PullRequest
0 голосов
/ 15 января 2019

Мне удалось активировать документ Word, встроенный в Excel, но я не могу изменить предпочтительную ширину таблицы. Как я могу получить доступ к этому свойству через Excel VBA?

Вот что у меня есть

Sub ok()

Set WDObj = Sheets("Sheet1").OLEObjects("Object 4")

WDObj.Activate
WDObj.ActiveDocument.Tables(1).PreferredWidthType = wdPreferredWidthPercent
WDObj.ActiveDocument.Tables(1).PreferredWidth = 95

End Sub

1 Ответ

0 голосов
/ 15 января 2019

Чтобы изменить содержимое встроенного документа 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...