ThisDocument对象参考

时间:2019-07-06 12:39:45

标签: vba ms-word word-vba

ThisDocument对象如何引用包含代码的docm文件内容?

我已经在* .docm项目下插入了一个包含以下代码的模块:

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

返回Normal.dotm作为结果。

但是应该返回当前 docm 文件的名称

如何设置“ Thisdocument”对象子例程引用当前的docm文件?

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

获取包含您正在运行的代码的Excel文件的名称:

ALTER TABLE `reactions` CHANGE `emoji` `emoji` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL;

获取您的代码当前正在引用的Excel文件的名称:

ThisWorkbook.Name

如果您从引用Excel文件的Word文档中运行代码,则应使用ActiveWorkbook.Name

本文将详细介绍ActiveWorkbook与ThisWorkbook。 Difference between Thisworkbook.name and Activeworkbook.name in VBA

答案 1 :(得分:0)

正如辛迪·梅斯特(Cindy Meister)所评论的那样,从标签和问题来看,尚不清楚您到底拥有什么(或头脑中有什么)。但是,假设您针对的是涉及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对象库进行了引用。