問題タブ [word-addins]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Word アドイン - リボン
Word アドイン リボンに、button1 と button2 の 2 つのボタンを作成しました。
タイプ 1 のドキュメントを開くとボタン 1 が表示され、2 番目のタイプのドキュメントを開くとボタン 2 が表示されます。
問題は、たとえば最初のドキュメントを開いて、それを開いたままにしておくことです。2 番目のタイプの 2 番目のドキュメントを開いた後、常にリボンに button1 が表示されます。
最初のドキュメントがまだ開いている場合でも、2番目のドキュメントにボタン1ではなくボタン2を表示させるにはどうすればよいですか。
ms-word - Word 2013 OpenXML 要素へのカスタム固有 ID の割り当て
TLDR/質問
Word (2013) アドインから一意の ID を読み書きできるように、Word 文書を記述する XML の要素 (理想的にはすべて) に一意の ID を割り当てるにはどうすればよいですか?
さらに、2 つの Word 文書の適切な差分を取得する方法を説明するソリューションが役立つ場合がありますが、これは主な質問ではありません。
バックグラウンド
VSTO を使用して、Word (2013) 用のアプリケーション レベルのアドインを作成しています。私のタスクの一部には、元の Word 文書W
を変更したものと比較しW'
て、別のタスクの差分を処理できるようにすることが含まれます。Word には明らかに差分/マージの機能がありますが (Word 2013 の [レビュー] パネルで利用可能)、これまでプログラムで差分を抽出する方法を見つけることができませんでした。
したがって、ドキュメントの XML を取得して (たとえば を使用してRange.WordOpenXML
)、それらを比較する予定です。XML ドキュメントを比較するアルゴリズム (つまりDiff(W.XML, W'.XML)
) は多数公開されていますが、差分の精度は、2 つのドキュメントの XML 要素を適切に一致させることができるかどうかに大きく依存します。
提案された解決策とその問題点
したがって、アドインからアクセスできる Word ドキュメントの XML 内のすべての要素に一意の ID を割り当てられるようにしたいと考えています。この場合の解決策は、呼び出されたパッケージにカスタム名前空間をインポートし、DOCX パッケージ内のすべての要素にmynamespace
属性を追加するようなものです。mynamespace:ID=***
属性は、 経由でアクセスできますRange.WordOpenXML
。
ただし、http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2012/09/21/markup-compatibility-and-extensibility.aspx で詳しく説明されているように、mce:Ignorable、mce:ProcessContent、および mce:PreserveAttributes を使用するだけです。動作しません。変更された Word ドキュメントは問題なく読み込まれますが、属性が見つからないようです。さらにドキュメントを保存すると、追加されたすべてのマークアップが削除されます。
http://openxmldeveloper.org/discussions/formats/f/13/p/8078/163573.aspxから、Office Open XML 標準の Markup Compatibility and Extensibility (MCE) 部分を介してカスタム xml を使用するこのプロセスには、年々複雑化(特許問題など)。したがって、Word の XML プロセッサは、ネイティブに処理できないすべてのマークアップを削除するだけなので、問題が発生すると推測しています (Word の XML プロセッサにフックしてカスタム コマンドを与える方法があるのではないでしょうか?)。
c# - Word 文書をコード ビハインドで保存すると、Word 2013 アドイン プロジェクトで言語ごとにスタイル名が変更される
Word 2013 で Active Document を保存すると、Save() メソッドを呼び出した後にスタイル名が変更されるという問題があります。
その .docx ファイルを抽出すると、styles.xml ファイルで、スタイル名の単語が言語ごとに変更されていることがわかります。たとえば、「heading 1」というスタイル名があり、保存後に「Otsikko11」に変更されます。「オチッコ」はフィンランド語で見出しを意味します。どうすればこれを防ぐことができますか? 私のプロジェクトは Word 2013 アドインです
c# - Word アドイン ペインのスクロール ボタンを作成する方法
私は独自の Word アドインを作成しています。Microsoft がペインの上部/下部にあるこれらの小さな矢印ボタンで使用するスクロール効果を再現したいと考えています (以下のドキュメント回復パネルのように)。何か案は?
ms-word - MS Office Word VSTO 「ロード オン デマンド」
標準の VSTO アドイン (Word 2010 および Word 2013、x86 のみ) である製品を開発しました。デフォルトでは、インストール時にすべてのユーザーにインストールされます (つまり、アドインのレジストリ エントリが HKLM - に挿入されますHKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node]\Microsoft\Office\Word\Addins
)。
LoadBehavior
reg キーの値が に設定されている場合0x3
(つまり、"Load at Startup")、アドインは問題なく動作しますが、値をLoadBehavior
toに設定している場合0x10
(つまり、"Load on demand")、アドインは正常に機能しません。予想:
UAC (および Word が管理者特権で実行されない) によりLoadBehavior
、HKLM の の値は から に変更され0x10
ず0x9
、代わりに HKCU ハイブにLoadBehavior
( value を使用して) キーを作成することによってオーバーライドされます。0x9
残念ながら、マニフェスト キーが)と共に HKCU ハイブに存在しない限り、LoadBehavior
この HKCU オーバーライドされた値は考慮されないことがわかりました。この関連スレッドの詳細: https://social.msdn.microsoft.com/Forums/vstudio/en-US/3776734b-333e-423b-9c08-7c7a441c3e94/load-behavior-and-word-addin?forum=vsto
この問題の「明白な」解決策はManifest
、インストール時または各ユーザーが初めてアドインを実行するときに、各ユーザーの HKCU (および HKLM) に を書き込むことです。ただし、このアプローチにはいくつかの重大な欠点があります。
- アドインをアンインストールするには、すべてのユーザーの HKCU 値を削除して、ユーザーが読み込みの問題を経験するのを防ぐ必要があります (これは推奨されません。また、Active Setup を使用する必要があるなど、他の問題や合併症を引き起こす可能性があります)。
- (ローミング) HKCU ハイブにこれらの値を持つユーザーは、アドインがインストールされていない同じドメイン内のマシンにログインすると問題が発生します。
LoadBehavior
HKCUで適切に設定されているHKLMからマニフェストが取得されないのはバグでしょうか?LoadBehavior
値をオーバーライドする必要なく、HKCU で HKLM をオーバーライドできれば、この問題は解決されると思いますManifest
。
この問題を克服する方法を知っている人はいますか?
c# - 1 つのブックマークを除く Word 文書全体を保護する
いくつかのブックマークを含む Word アドイン プロジェクトに取り組んでいます。これらのフィールドを更新するために、コードは次のようにドキュメントのロックを解除します。
次に、サーバーからコンテンツを取得し、次のようにロックします。
特定のブックマークのロックを解除したままにするために、次のコードを使用してみました。
これは、bookmark1 のロックを解除したままにしません。他のブックマークがロックされている間に、1 つのブックマークのみをロック解除できるようにする方法は他にありますか?