Word VBA Макросы: добавление строки в таблицу из другого приложения

Автор КолViz, 17 декабря 2017, 23:01

КолViz

Всем привет! Я программно (из Excel) добавляю строку в таблицу документа Word, но строка не добавляется - происходит run-time ошибка "Object doesn't support this property or method". Что в моем коде нет так?
Я подключил библиотеку для работы с Word: Tools - References - Microsoft Word 16.0 Object Library.

Макрос
Sub ToWord()
    Dim WordApp As Word.Application, strFullNameDotx As String
    Dim lngRowNumber As Long
   
    lngRowNumber = 5
    strFullNameDotx = ThisWorkbook.Path & "\" & "Шаблон.dotx"
    Set WordApp = New Word.Application
    WordApp.Visible = True
    WordApp.Documents.Add strFullNameDotx
    WordApp.ActiveDocument.Tables(1).Rows(1).Select
    Selection.InsertRowsBelow lngRowNumber
End Sub
[свернуть]

Администратор

Проблема в этой строке:
Selection.InsertRowsBelow lngRowNumber

В экселе, как и в ворде, тоже есть объект "Selection". В данной строке вы обращаетесь к объекту "Selection" экселя, а не ворда. В экселе, у объекта "Selection" нет метода "InsertRowsBelow", что и приводит к ошибке.

Правильно так:
WordApp.Selection.InsertRowsBelow lngRowNumber

PS. На самом деле в экселе нет объекта "Selection". Это я написал, чтобы проще можно было воспринять информацию. В экселе "Selection" - это просто слово, которое превращается в нужный объект в зависимости от ситуации. Например, если выделена ячейка на листе, то "Selection" это объект "Range". Если выделен рисунок, то "Selection" это объект "Shape".