Word 2007では、XMLスキーマをドキュメントに添付できます([開発者]ツールバー|[XMLグループ]| [スキーマ]ボタンの下)。このスキーマライブラリ情報はどこに保存されますか?
スキーマに基づいてカスタムXMLタグを使用して作成したドキュメントがありますが、ドキュメントとスキーマを他の人に渡すと、おそらくスキーマのファイルの場所が異なるため、スキーマは使用不可としてマークされます。
この情報を編集して、特定のスキーマへのパスを変更する方法はありますか?
docx には保存されず、パスのみが保存されます。そのため、ドキュメントを渡すと、ほとんどの場合、リンクが壊れます。VSTO は、XSD をリソースとしてアプリに埋め込むことで、これを回避できます。
しかし、VBA の場合はより複雑です。各ユーザーのコンピューターで信頼できるパスが必要であり、そこに XSD を展開する必要があります。1 つの方法は、イベントを同期するDocument_Open
(または単に使用するAutoOpen
) ことです。これにより、ユーザーがドキュメントを開いたときに (警告: マクロ セキュリティをいじる必要があります)、文字列としてハードコードされた XSD を単純に「書き込む」ことができます。コードビハインドでそれをファイルに書き込み、そのファイルを次のようなルーチンで添付します。
Dim objSchema As XMLNamespace
Set objSchema = Application.XMLNamespaces.Add("c:\something\mynewlycreated.xsd")
objSchema.AttachToDocument ActiveDocument
したがって、アーティファクトを残さないため、その XSD をユーザーのコンピューターからDocument_Close
またはで削除できますAutoClose
。