4

我试图通过 C# 中的自动化来更改单词复选框(来自开发人员选项卡)的值,但未成功。我尝试了不同的方法,但我在互联网上搜索时总能找到的唯一方法是:

当您处于开发人员模式时,通过单击复选框的属性来查找复选框的名称

object oCheckbox = "Checkbox_name"

document_name.FormFields.get_Item(ref oCheckbox).CheckBox.Value = true/false;

但是每当我执行代码时,我都会收到以下错误(集合的请求成员不存在),这意味着如果我理解正确,我的文档中没有名为“Checkbox_name”的复选框。

我还尝试将具有相同名称的复选框加入书签并执行:

document_name.BookMarks.get_Item(ref oCheckbox).CheckBox.Value但它也不起作用......

4

1 回答 1

0

如果您通过单击开发人员选项卡中显示的复选框插入了一个复选框,那么我假设您使用的是 Word 2007 或更高版本。

而且,如果是这种情况,那么您插入的不是表单字段,而是内容控件。因此,如果您在 VBA 编辑器的即时窗口中输入以下内容:

?ActiveDocument.Content.FormFields.Count

...它将打印“0”。而如果你尝试:

?ActiveDocument.Content.ContentControls.Count

...它应该打印一些大于零的数字,具体取决于您插入的数量。

要插入旧式表单域复选框,请单击复选框图标旁边的带有工具的文件夹图标 - 这会下拉更多类型的控件,包括“旧式表单”和“ActiveX 控件”。每个组中都有一个复选框,但它是第一个组(“Legacy Forms”),它将创建显示在 FormFields 集合中的复选框。

如果可能,我建议使用内容控件,因为可能不会永远支持旧式表单字段。

于 2013-05-22T11:19:02.793 回答