VBA Excel启动Word文档可以';不要创建可单击的复选框

VBA Excel启动Word文档可以';不要创建可单击的复选框,excel,vba,checkbox,ms-word,clickable,Excel,Vba,Checkbox,Ms Word,Clickable,我有一个Excel文档,在其中我通过单元格循环生成一个带有可单击复选框的word文档。我将1个单元格值作为标题,下一列单元格值作为它旁边需要复选框的值。基本上,这是一个任务列表,我想剪切和粘贴在电子邮件中,以确保他们已经完成。我正在使用后期绑定从Excel生成word文档,我想知道这是否与我的问题有关。我尝试了所有创建复选框的不同示例,通常会收到一条需要对象的错误消息 Dim wrdApp As Object Set wrdApp = CreateObject("Word.Applicati

我有一个Excel文档,在其中我通过单元格循环生成一个带有可单击复选框的word文档。我将1个单元格值作为标题,下一列单元格值作为它旁边需要复选框的值。基本上,这是一个任务列表,我想剪切和粘贴在电子邮件中,以确保他们已经完成。我正在使用后期绑定从Excel生成word文档,我想知道这是否与我的问题有关。我尝试了所有创建复选框的不同示例,通常会收到一条需要对象的错误消息

Dim wrdApp As Object 

Set wrdApp = CreateObject("Word.Application")

Set wrdDoc = wrdApp.Documents.Add

Set objSelection = wrdApp.Selection

    For Row = 2 to lRow

       objSelection.TypeText Chr(13) & Cells(Row, 1).Value & Chr(13)

       'Here is where I would like to write a checkbox so it is to the left of the column 2 value

       objSelection.TypeText Cells(Row, 2).Value)

    Next Row
我以前从未从Excel编写过Word,似乎我应该能够用一行简单的代码来编写复选框,但也许我错了

我录制了一个添加复选框的宏,当我尝试此代码时:

 Selection.FormFields.Add Range:=Selection.Range, Type:=wdFieldFormCheckBox  
我明白了

参数数目错误或属性分配无效

当我试着沿着这些路线走的时候:

   wrdDoc.Selection.FormFields.Add Range:=InsertAfter, Type:=wdFieldFormCheckBox   
我明白了

对象不支持此属性或方法

试试这样的东西

Selection.FormFields.Add Range:=Selection.Range, Type:=wdFieldFormCheckBox    
我明白了

参数数目错误或属性分配无效


感谢您的帮助。谢谢

我认为问题的根源在于,Excel和Word都有
选择
对象,并且Excel自动假定Excel选择是正确的。由于Excel没有表单字段,因此会出现错误。使用
wrdApp.Selection.FormFields.Add
并查看这是否有帮助。wrdApp.Selection.FormFields.Add Range:=Selection.Range,Type:=wdFieldFormCheckBox为我提供了错误的参数数或无效的属性分配。删除该范围也会产生相同的错误。我以前从未为Word写过任何东西,所以我真的不确定这样一行代码应该是什么样子。您是否将
wrdApp
放在这两个
选项的前面?如果您使用的是后期绑定,则不能使用
wdFieldFormCheckBox
——您需要与之等效的长数据类型。您可以在Word的VBA编辑器中查询或在帮助中查找。是的,我取出了objSelection引用并用wrdApp.Selection替换了所有引用,并将其用于复选框将编译和运行(我将其从Word中的宏记录中取出,它确实给了我一个复选框),它只是没有给我复选框,它是在所有文本周围加上方框,左边有3个点。wrdApp.Selection.Range.ContentControls.Add(wdContentControlCheckBox)好了,现在您已经更改了您尝试执行的操作。您最初的任务是使用表单字段。现在,您将发布有关内容控件的文章。那完全是另外一回事。。。您可能希望使用问题下方的链接使其与您的实际情况保持最新。