0

.dotmファイルを使用して、Word2007ドキュメントレベルのアドインに取り組んでいます。これは、ほとんどの場合、ドキュメントの特定の部分を作成および破棄するために使用されるドキュメントペインのボタンによって制御されるドキュメントです。作成されるもののいくつかはコンテンツコントロールです。

そのようなボタンの1つはトグルで、約10文字とコンテンツコントロールを削除して再度追加する必要があります。私の問題は、コンテンツコントロールを再作成しようとすると、Wordが「コマンドが失敗しました」というメッセージと-2146824090(または0x800a1066)のエラーコードでCOMExceptionをスローすることです。

Openこのエラーコードをグーグルで検索すると、これは、またはSaveAsメソッドを使用してWordドキュメント、またはネットワークドライブ上のドキュメントとやり取りすることに関連するセキュリティ関連の例外であることがわかります(ここここ、およびここの投稿を参照)。これは私がしていることにまったく適合しません。

コントロールを削除するために使用しているコードは次のとおりです。

LevelControl.LockContentControl = false;
LevelControl.Delete(true);
LevelControl = null; // probably not needed

レクリエーションコードは次のとおりです。

DropDownListContentControl LevelControl = this.Controls.AddDropDownListContentControl(r, "SectionLevel");

これは、最初にコントロールを作成するために使用しているのと同じコード行です。

4

1 に答える 1

0

私の問題の原因は、範囲オブジェクトの置き忘れでした。プレースホルダーテキストがまだ含まれている別のコンテンツコントロール内に無意識のうちに範囲を配置していました。残念ながら、エラーメッセージはこの効果について何も述べていません。

同じ間違いを犯しているかどうかを判断するには、r.Select()この例外を引き起こしている可能性のあるアクションの代わりに最後に呼び出して、カーソルが置かれている場所を確認してください。これを行うときは、ドキュメントがフィールドでの編集に限定されていないことを確認してください(Review>Protect Document>Restrict Editing and Formatting)。そうしないと、ドキュメントが表示される前に、ドキュメントの先頭またはコンテンツコントロールに自動的に移動する可能性があります。

于 2012-09-28T15:11:09.547 に答える