web-dev-qa-db-ja.com

マクロを使用せずにMS Wordでドキュメント変数を見つける方法

いくつかのドキュメント変数を含むドキュメントがあり、それらの変数をドキュメントで使用しようとしています。しかし、変数は外部システムによって設定されるため(十分に文書化されていません)、私は推測ゲームをしています。 「最終改訂日」の変数が存在すると想定して、その変数が呼び出された可能性があるものを推測し始めます。

MS Wordドキュメントのすべてのドキュメント変数とその値をリストして、ドキュメントで使用するときにそれらを検索できるようにする方法はありますか? (私はMS Office 2010に取り組んでいます)

9
some user

Wordにはさまざまなタイプの「変数」があります。「ドキュメント変数」と呼ばれるものもありますが、「プロパティ」と呼ぶものもあります。以下に主なタイプをリストしてみます。

Wordにはいくつかの種類のプロパティを探すための場所がいくつかありますが、真の「変数」やその他の種類のプロパティの場合、マクロやその他のコードを使用できない場合は、.docxファイルを解凍する必要があります。そこにあるさまざまなファイルを見てください。

Word 2010内で確認できる場所(ドキュメント変数はここには表示されません)...

a。 [Backstage]の[ファイル]タブの[情報]オプションを見ると、右側にいくつかのプロパティが一覧表示されているはずです。リストの下部にある[すべてのプロパティを表示]をクリックすると、さらに表示される場合があります。

b。 [挿入]タブの[テキスト]グループの[クイックパーツ]-> [プロパティ]に、「Built in properties + Sharepointによって挿入された一部またはすべてのプロパティ」のリストが表示されます。

c。 「ドキュメント情報パネル」(DIP)。それが表示されない場合は、[ファイル]メニュー、[オプション]、[クイックアクセスツールバー]の順に移動します。 「すべてのコマンド」から「コマンドを選択」を選択し、「プロパティ」を探して選択し、「追加」ボタンをクリックします。すると、クイックアクセスツールバーに、円形の青い背景に小さな白い「i」のアイコンが表示されます。これをクリックすると、SharePointを使用している場合は、組み込みのプロパティ(作成者、タイトルなど)またはSharePointの「コンテンツタイプ」プロパティが表示されます。そこにあるいくつかのビューのいずれかを切り替えることができる場合があります。次に、DIPの左上にあるドロップダウンをクリックして[詳細プロパティ]を選択すると、次のようなマルチタブダイアログボックスが表示されます。

  • 一部の「組み込み」プロパティ

  • 古いスタイルの「ユーザー定義」カスタムドキュメントプロパティ。

それ以外の場合は、おそらく.docxのXMLを調べる必要があります。これを行うには、ドキュメントのコピーを作成します。コピーの名前がmydoc.docxだとします。その名前をmydoc.docx.Zipに変更し、Zipを開いて、以下に示すようにいくつかのことを探します...

a。 trueドキュメント変数は、Wordフォルダーのsettings.xmlのw:docVarsという要素に保存されます。各変数の名前と値が表示されます。 {DOCVARIABLE variablename}フィールドを使用して、ドキュメント変数の値をドキュメントに挿入できます。

b。作成者、タイトルなどを含む組み込みのドキュメントプロパティ。ほとんどの場合、値は、{AUTHOR}などの特殊化されたフィールド、または一部のケースでは{DOCPROPERTY}フィールドを使用してドキュメントに挿入できます。少し面倒ですが、名前の標準的なリストがあります。ほとんどの値は、core.xmlファイルとapp.xmlファイルのdocPropsフォルダーにあります。ただし、一部(「カバーページのプロパティ」)は、使用された場合、「item.xml」ファイル(customXmlフォルダーの「item1.xml」など)の1つに保存されます。

c。 {DOCPROPERTY}フィールドを使用してドキュメントに値を挿入できる、主に名前と値のペアで構成される古いスタイルの「ユーザー定義」カスタムドキュメントプロパティ。 {DOCPROPERTY mycustomproperty}。これらは[詳細プロパティ...]ダイアログに表示されますが、.docxではdocPropsフォルダーのcustom.xmlファイルにあります。

d。 「Sharepointプロパティ」または「コンテンツタイププロパティ」とも呼ばれる新しいスタイルのカスタムプロパティは、Sharepointリストの列から作成および入力されることが多いためです。値は「カスタムXMLパーツ」に保存され、XMLの関連ビットを指すように設定されているコンテンツコントロールを使用して挿入できます。 (Word 2007以降のみ)。 .docxには、これらの変数の多数の「スキーマ」と、customXMLフォルダー内の変数の値、「item1.xml」、「item2.xml」などの名前のファイルがあります。

e。最後に、開発者は独自のカスタムXMLパーツをWord文書に入れ、コンテンツコントロールをそれらのカスタムXMLパーツの要素と属性に接続できます。その方法の詳細については説明しませんが、customXMLの下のitem1.xml、item2.xmlなどのファイルにデータがあります。ただし、コンテンツコントロール自体、それらの名前、およびそれらが接続されているものを見つけるには、通常、Wordフォルダーを調べる必要があります。 document.xml、およびおそらく1つ以上の「ヘッダー」と「フッター」の.xmlファイル。

13
user181946

私は同様の問題を抱えていました。一部のサードパーティのツールボックスがクラッシュし、変数値を設定する必要がありました。

少し粗雑ですが、ActiveDocument.Variablesコレクションのすべての変数を一覧表示するVBAコードを以下に示します。

Public Sub ListAllVariables()
    Dim V As Variable, S As String
    For Each V In ActiveDocument.Variables
        S = S & V.Name & vbTab & V.Value & vbNewLine
    Next V
    MsgBox S
End Sub

新しいマクロを作成してそこにダンプすると、情報が得られます。興味のある変数の名前が見つかったら、次のように設定できます

ActiveDocument.Variables("MyVariable") = "Value"
5
Steztric