VBA操作Word:声明并设置ContentControl对象报错如何解决?
Word VBA处理Content Control控件报错:Object doesn't support this type of method
我有一个包含Content Control控件和Form Fields表单域的Word文档,宏处理Form Fields的代码可以正常运行:
Dim oMPERFields As FormFields Set oMPERFields = LogFile.Formfields
通过这段代码可以将Form Field的内容发送到另一个文档生成新报告。
但尝试用类似逻辑处理Content Control控件时:
Dim oLogFields As ContentControl Set oLogFields = LogFile.ContentControl
出现了**"Object doesn't support this type of method"**错误,一直没解决。我用来转移Content Control数据的代码如下:
oLogFields ("Test").Result = ThisDocument.SelectContentControlByTitle("Test2")(1).Range.Text
错误原因及解决方案
对象类型不匹配:
LogFile.ContentControl是错误写法,Word文档对象的Content Control集合属性是复数形式的ContentControls,单个Content Control才是单数的ContentControl。你声明的oLogFields是单个控件对象,却试图赋值整个控件集合,导致类型不匹配报错。正确的集合声明与赋值:
如果要获取文档中所有Content Control的集合,需声明为ContentControls类型:Dim oLogFields As ContentControls Set oLogFields = LogFile.ContentControls之后通过标题定位指定控件并完成赋值:
oLogFields.Item("Test").Result = ThisDocument.SelectContentControlByTitle("Test2")(1).Range.Text简化写法:也可以跳过集合变量声明,直接通过标题获取目标控件完成赋值:
LogFile.SelectContentControlByTitle("Test")(1).Result = ThisDocument.SelectContentControlByTitle("Test2")(1).Range.Text
内容的提问来源于stack exchange,提问作者user27178816
相关产品推荐
相关产品推荐

