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


10

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

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

回答:


13

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のドキュメント変数は、単語フォルダー、settings.xml、w:docVarsと呼ばれる要素に格納されます。各変数の名前と値が表示されます。{DOCVARIABLE variablename}フィールドを使用して、ドキュメント変数の値をドキュメントに挿入できます。

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

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などのファイルにデータがあります。ただし、コンテンツコントロール自体、それらの名前、およびそれらが接続されているものを見つけるには、通常、たとえばdocument.xmlのwordフォルダー、およびおそらく「ヘッダー」と「フッター」の1つ以上を調べる必要があります。 xmlファイル。


すばらしい答えです。ありがとう!1つのメモ:「b。[挿入]タブの[テキスト]グループの[クイックパーツ]-> [プロパティ]に、「Built in properties +一部またはすべてのプロパティがSharepointによって挿入されている場合は、それが使用されている場合」のリストが表示されます。クイックパーツに「プロパティ」がないようです
一部のユーザーは

私のエラー-でなければなりませんクイックパーツ- >ドキュメントプロパティ

プロパティとDocVariableは、単語フィールドとVBAで使用する方法がかなり似ています。トレードオフはありますか?
BenPen 2016年

5

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

これは少し大雑把ですが、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"

2
これはかなりクールです、ありがとう。マイクロソフトがコレクションを提供する事前にパッケージ化された種類のピッカーウィンドウを提供せず、コレクションから1つ以上のアイテムを選択できる(または新しい値を実際のコレクション)、次にVBAコードが呼び出し元のサブ/関数で選択された項目にアクセスできるようにします。
BenPen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.