私の Windows フォーム アプリケーションは、Novacode DocX を使用してテンプレートからドキュメントを作成します。プロジェクトの Novacode 部分は完璧に機能し、ファイルが保存されます。問題は、ドキュメントをロードすると、Novacode 部分が見出しなどを追加するときにフィールド (目次) が更新されないことです。
open でフィールドを更新するマクロを作成できました。これで問題は解決しますが、私のアプリケーションを使用するすべての人がこのマクロを持っているわけではありません。さまざまな理由で、マクロが添付された .docm ファイルとしてファイルを保存できません (ファイルは ".docx" である必要があります)。
私が見つけたのは、Microsoft.office.interop.Word アセンブリを使用すると、「Fields.Update」を呼び出すことができるということです。私の理解では、これでうまくいくと思いますが、Word をインストールしていないユーザーがアプリケーションを実行するのをブロックすることはできません。私の理解では、私が「Microsoft.Office.Interop.Word を使用している」場合、または誰かが単語を持っていないとアプリケーションが実行されないということを参考にしています。
だから私は単語がインストールされているかどうかをチェックするコードを持っています。これを実行してインストールした場合、「遅延バインディング」を使用して相互運用コードを実行できますか? 他の関連する質問には、単語がインストールされているかどうかを確認せずに相互運用を実行する方法として「 NetOffice 」を指す回答があります。
私は自分の研究でこれを可能な限り包括的にしようとしています。私の質問は、「C# アプリケーションが外部アセンブリを見つけられない場合を簡単にテストするにはどうすればよいですか? 」という質問と非常によく似て います。この問題がすぐに解決されることを願っていますが、そうなるかどうかはわかりません。
補足として、Word をインストールせずに「.docx」形式で保存された Word 文書のフィールド、または既存の TOC だけを更新する方法を誰かが知っている場合、それを知っておくと素晴らしいことであり、私の全体を回避することができます。問題。相互運用の質問に対する答えを知りたいのですが。
また、これは StackOverflow に関する私の最初の実際の質問です。提案するタグがある場合は、回答と一緒に行ってください。私の質問の仕方についてフィードバックがあれば、それも受け入れますが、回答なしで質問を閉じたり削除したりしないでください。類似の質問にリンクしましたが、それらの質問にはしばらく回答がありません。ルールに従ってすべてを行ったと思います。