Excel VBA макрос позднего связывания - PullRequest
0 голосов
/ 04 октября 2018

Я вложил документ Word в файл Excel.Я использую макрос ниже, чтобы скопировать значение ячейки из Excel во встроенную закладку документа Word.Макрос отлично работает в Excel 2016. Проблема в том, что мне нужно использовать это в макросе в нескольких версиях Excel.Когда я пытаюсь открыть документ XLS в Excel 2010 и запустить макрос, я получаю следующую ошибку: «Ошибка компиляции в скрытом модуле 1. Эта ошибка обычно возникает, когда код несовместим с версией ...» Я думаю, что мне нужно перевестимой код для использования позднего связывания, чтобы он не использовал ссылки на проекты VBA.Пожалуйста, помогите!

Sub update_bookmark()

Dim oRng As Word.Range

 Set objWordTemplate = Sheets("Form1").OLEObjects("Object 1")
 objWordTemplate.Activate
 objWordTemplate.Object.Application.Visible = True
 Worksheets("source_sheet").Activate

 Set oRng = ActiveDocument.Bookmarks("name").Range
 oRng.Text = Cells(Application.ActiveCell.Row, 2)
 ActiveDocument.Bookmarks.Add "name", oRng

 End

End Sub

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Снимите флажок Word и обновите ваш код следующим образом:

Sub update_bookmark()

Dim oRng As Object
Dim objWordTemplate as Object
 Set objWordTemplate = Sheets("Form1").OLEObjects("Object 1")
 objWordTemplate.Activate
 objWordTemplate.Object.Application.Visible = True
 Worksheets("source_sheet").Activate

 Set oRng = objWordTemplate.Object.Application.ActiveDocument.Bookmarks("name").Range
 oRng.Text = Cells(Application.ActiveCell.Row, 2)
 objWordTemplate.Object.Application.ActiveDocument.Bookmarks.Add "name", oRng

End Sub
0 голосов
/ 04 октября 2018

Когда я пытаюсь открыть документ XLS в Excel 2010 и запустить макрос, я получаю следующую ошибку: «Ошибка компиляции в скрытом модуле 1.

Я не могу реплицировать, но ядумаю, это потому, что в исходном файле есть ссылка для xlsx - Библиотека объектов Microsoft Office 16 Чтобы увидеть, проверьте VBEditor> Инструменты> Ссылки.

enter image description here

Позднее связывание, такое как:

Dim wdObject As Object 
Set wdObject = CreateObject("Word.Application")

Dim orange as Object
set orange = ActiveDocument.Bookmarks("name").Range

может быть рабочим решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...