4

C# のオートメーションを使用して、(開発者タブから) Checkbox という単語の値を変更しようとして失敗しました。私はさまざまな方法を試しましたが、インターネットで検索するときに常に見つける唯一の方法は次のとおりです。

開発者モードでチェックボックスのプロパティをクリックして、チェックボックスの名前を見つけます

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 コントロール」など、より多くの種類のコントロールがドロップダウンします。各グループにはチェックボックスがありますが、FormFields コレクションに表示されるチェックボックスを作成するのは最初のグループ (「レガシー フォーム」) です。

古いスタイルのフォーム フィールドは永久にサポートされない可能性があるため、可能であればコンテンツ コントロールを使用することをお勧めします。

于 2013-05-22T11:19:02.793 に答える