Ссылка на объект ThisDocument - PullRequest
0 голосов
/ 06 июля 2019

Как ThisDocument объект ссылается на содержимое файла docm, в котором содержится код?

Я вставил модуль в проект * .docm, который содержит этот код:

Sub test()
   Debug.Print ThisDocument.Name
End Sub

Возвращает Normal.dotm как результат.

Но ожидается возврат текущего документа файла имя .

Как установить подпрограммы объекта «Thisdocument», ссылающиеся на текущий файл docm?

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 06 июля 2019

Получите имя файла Excel, который содержит код, который вы запускаете:

ThisWorkbook.Name

Получите имя файла Excel, на который ссылается ваш код:

ActiveWorkbook.Name

Если вы запускаете код из документа Word, который ссылается на файл Excel, вы должны использовать ActiveWorkbook.Name.

. В этом посте более подробно рассматриваются ActiveWorkbook и ThisWorkbook. Разница между Thisworkbook.name и Activeworkbook.name в VBA

0 голосов
/ 06 июля 2019

Как прокомментировала Синди Мейстер, из тегов и вопроса не ясно, что именно у вас есть (или есть в вашем уме). Однако при условии, что вы стремитесь к чему-то очень хитрому и нетрадиционному с участием приложений Excel и Word. В нормальных условиях ThisDocument никогда не будет ссылаться на Normal.dotm (из модуля в проекте * .xlsm), но так как вы сделали это и также хотите «установить Thisdocument Объект ссылается на текущий файл xlsm», я бы попробуйте это так из модуля в файле xlsm.

Global ThisDocument As Object
Sub calltest()
Dim wd As Word.Application
Set wd = CreateObject("Word.Application")
wd.Visible = True                 'for demo only
Set ThisDocument = wd.Templates(1)   'This will result Normal.dotm (as you are experiencing - may be similar code is already in the calling routine)
test
Set ThisDocument = ThisWorkbook     'This will result workbook Containing the module with code
test
End Sub
Sub test()
Debug.Print ThisDocument.Name
End Sub

Очевидно, предполагается, что ссылка на библиотеку объектов Microsoft Word XX уже была взята.

...