c# - Formfields.BookMarks.get_Item().Checkbox.Value 不起作用(自动化词)

标签 c# checkbox automation ms-word bookmarks

我试图通过 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 但它也不起作用...

最佳答案

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

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

?ActiveDocument.Content.FormFields.Count

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

?ActiveDocument.Content.ContentControls.Count

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

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

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

关于c# - Formfields.BookMarks.get_Item().Checkbox.Value 不起作用(自动化词),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13740807/

相关文章:

automation - Cypress 按 ID/XPATH/名称单击元素?

c# - .NET 4.0 中的 WebHttpBinding?

c# - 我如何保留稍后将传递给 OrderBy 或 LoadWith 函数的 lambda 表达式的引用?

c# - 自定义 .NET 框架生成的异常消息?

reactjs - React UseState boolean 数组修改一个元素

ubuntu - ubuntu 上的 Appium 设置

c# - 没有添加到通用 List<string> 添加方法

javascript - jQuery 函数循环在取消选中复选框后不会停止

javascript - 通过选中一个复选框来切换一组复选框

com - C# Visual Studio : How to have multiple developers on a solution that references Office?