VBA中Document类型未定义求助:邮件合并代码引用问题
解决VBA中"User-defined type not defined"错误(Document类型未识别)
嘿,我之前做邮件合并的时候也踩过一模一样的坑!你遇到的问题根源不是Office对象库的问题——而是Word的Document类型需要单独引用Word专属的对象库,哪怕你加了Microsoft Office 16.0 Object Library也没用,因为这个通用库不包含Word特有的Document类定义。
给你两种解决办法,按需选择:
方法1:早期绑定(推荐,代码更易写且有智能提示)
- 打开VBA编辑器(按
Alt+F11) - 点击顶部菜单栏的「工具」→「引用」
- 在弹出的引用对话框里,找到Microsoft Word 16.0 Object Library(注意:版本号会随你的Office版本变化,比如Office2013是15.0,Office2019/365是16.0),勾选它之后点击「确定」
- 现在再运行你的
TestEmailer宏,Document类型就能被正确识别了
方法2:后期绑定(无需引用,兼容多Office版本)
如果不想依赖特定版本的Word库,可以用后期绑定,把类型声明改成通用的Object:
Sub TestEmailer() Dim Source As Object, Maillist As Object, TempDoc As Object ' 后续创建对象时用CreateObject,比如: ' Set Source = CreateObject("Word.Document") End Sub
这种方式不需要添加任何引用,代码能在不同Office版本上运行,缺点是写代码时没有智能提示。
另外补充一句:如果是在Word里写的邮件合并宏,默认应该已经引用了Word对象库,可能是你不小心取消了引用?可以再检查一下引用列表里有没有打勾的Word库。
内容的提问来源于stack exchange,提问作者rhaskett
相关产品推荐
相关产品推荐

