Word文書を開くと、タイトルバーにその文書名が表示されます。新しい空白の文書の場合は、ファイル名を入力するまで、Wordは「文書x」という一般的な名前を表示します。ほとんどの人にとってはこれで十分ですが、場合によっては、文書名をコンテンツと一緒に印刷したい場合や、タイトルバーにパス全体を表示したい場合もあります。残念ながら、どちらの要件もユーザーを苛立たせる原因となることがよくあります。それは、一見単純な動作に、予期せぬ問題が潜んでいるからです。この記事では、これらの要件に対する解決策を示し、期待通りに動作しない場合は警告します。
私はWindows 10 64ビットシステムでWord 2016を使用していますが、これらの解決策はWord 2003まで遡って適用できます。任意のファイルを使用することも、デモ用の.doc、.docm、.clsファイルをダウンロードすることもできます。この記事で紹介されている解決策はWord 365には対応していません。
{FILENAME} フィールドを使用する
ファイル自体にドキュメントの名前とパスを表示したい場合は、直接入力できますが、ファイル名を変更した場合は、ドキュメント内でも名前を更新する必要があります。{FILENAME}フィールドを使用する場合も、自動更新は行われません。フィールドの更新を忘れずに行う必要があります。手動で入力するよりも、一体何が良いのでしょうか?ファイル名を複数回使用する場合は、フィールドを更新するメリットが明らかです。フィールドを一度更新するだけで、ドキュメント全体が更新されます。
このフィールドを使用して、ドキュメントのヘッダーにファイル名を表示し、何が起こるかを確認してみましょう。
- ヘッダー領域をダブルクリックして編集モードで開き、ファイル名を表示したい場所にカーソルを置きます。Word 2003では、「表示」メニューから「ヘッダーとフッター」を選択します。
- 「挿入」タブをクリックし、「テキスト」グループの「クイックパーツ」ドロップダウンから「フィールド」を選択します(図A)。Word 2003では、この設定は「定型句」オプションにあります。
- フィールド名リストからFileNameを選択します。
- 完全なパスを表示する場合は、「ファイル名にパスを追加」オプションをオンにします (図 B )。
- ドキュメントに戻るには、[OK] をクリックします。
- ヘッダーを閉じるには、ヘッダーの外側をダブルクリックします。
図A
フィールド コードはクイック パーツ機能の一部です。
図B
ファイル名はフルパス付きでもなしでも表示できます。
図Cに示すように、Wordでは文書のヘッダーに名前とパスが表示されるため、文書のすべてのページに表示されます。後ほど、条件に応じて表示する方法を説明します。
図C
Word では、このドキュメントのヘッダーにファイル名とパスが表示されます。
残念ながら、ファイルを別の名前で保存した場合、新しい名前を表示するにはフィールドを手動で更新する必要があります。これを行うには、ヘッダーを開き、フィールドを右クリックして「フィールドの更新」を選択します(図D)。デモファイルをご利用の場合は、ヘッダーを開いてフィールドを更新し、システムの正しいパスを確認してください。
図D
ファイル名を変更する場合は、フィールドを更新します。
フィールドの更新を忘れる可能性が高く、ファイルを正しい名前で印刷することが重要な場合は、次のように、印刷前にフィールドを更新する印刷オプションを設定できます。
- [ファイル]タブをクリックします。
- 左側のペインで [印刷] をクリックします。
- 下部にある「ページ設定」をクリックします。
- [用紙]タブで、[印刷オプション]をクリックします。
- [印刷オプション] セクションで、[印刷前にフィールドを更新する] をオンにします (図 E )。
- [OK]を2回クリックします。
図E
ドキュメントを印刷する前にフィールドを更新するには、このオプションを設定します。
あまり手間をかけずに、これが期待できる最善策です。FileSaveAs イベントに ActiveDocument.Fields.Update イベントを追加することも考えられますが、タイミングが悪く、うまくいきません。VBA は新しい名前を保存する前にフィールドを更新します。ファイルを次に開いたときにもフィールドは更新されないので、AutoOpen マクロに Update イベントを追加することを検討してください。そうすれば、少なくともドキュメントを開いたときに正しい名前が表示されます。ただし、フィールドがヘッダーまたはフッターにある場合は、この方法は役に立ちません。Update メソッドはドキュメント本体のフィールドのみを更新します。
各ドキュメントのフィールドはそれぞれ異なるため、万能策はありません。今回の例のフィールドはヘッダーにあるため、ヘッダー(またはフッター)のフィールドを更新するVBAプロシージャを追加します。リストAのサブプロシージャを、ThisDocumentモジュールのドキュメントのAutoOpenイベントに以下のように追加します。
- [Alt] + [F11] キーを押すか、[開発] タブの [コード] グループで [Visual Basic] をクリックして、Visual Basic エディター (VBE) を開きます。
- エクスプローラー ウィンドウで [ThisDocument] をクリックします (必要な場合)。
- リストAのコードを入力してください。VBEでエラーが発生しないように、このWebページからコードを切り取ってコピーしないでください。コードを手動で入力するか、デモドキュメントまたはクラスファイルをダウンロードしてください。
- 文書に戻り、マクロ有効ファイルとして保存します。Word 2003をお使いの場合は、この手順は不要です。
リストA
Sub AutoOpen()
'最初のページのヘッダーのフィールドを更新します。
ActiveDocument.Sections(ActiveDocument.Sections.Count). _
ヘッダー(1).範囲.フィールド.更新
終了サブ
ドキュメントを開くと、AutoOpen プロシージャがトリガーされ、Update メソッドはヘッダーセクションのフィールドのみを更新します。値 1 はページ番号を表します。ヘッダーが 1 ページ目にない場合は、この値引数を更新してください。フッターセクションを使用している場合は、Headers( x ) を Footers( x ) に変更してください。これは、開くのをためらってしまうほど厄介な問題ですが、シンプルなドキュメントであればこの解決策は有効です。
条件付き表示
ファイル名をすべてのページに表示したくないかもしれません。おそらく、最後のページだけに表示したいでしょう。これは理にかなっているでしょう。このような場合は、フィールドを{IF}式で囲むことができます。例えば、次の式はファイル名をドキュメントの最後のページにのみ表示します。
{ IF { ページ } = { NUMPAGES } { ファイル名 \P \* マージフォーマット } }
これは数ある可能性の一つに過ぎません。ここでは式を網羅的に紹介するつもりはありませんが、式を使うことで、ドキュメント内でフィールドを表示する場所をより柔軟に制御できることを知っておくことは重要です。
参照: Microsoft Office 365: 賢い人のためのガイド
タイトルバーの表示にVBAを使用する
ドキュメントにファイル名を表示すれば、ほとんどの人にとっては十分でしょう。もう少し高度な機能が必要な場合は、VBAを使用してタイトルバーにフルパスとファイル名を表示することを検討してください。上記の手順に従ってVBEを開き、リストBとリストCのコードをドキュメントに追加すれば、タイトルバーにフルパス名を表示できます。ただし、この解決策が常に機能するとは限りません。
リストB
Sub FileSaveAs()
'タイトルバーにファイル名を表示します。
「名前を付けて保存」コマンドを奪取します。
Dialogs(wdDialogFileSaveAs).Show = 0 の場合、サブルーチンを終了します。
System.Cursor = wdCursorNormal
ActiveWindow.Caption = ActiveDocument.FullName
終了サブ
リストC
Sub AutoOpen()
'タイトルバーにファイル名を表示します。
ActiveWindow.Caption = ActiveDocument.FullName
終了サブ
ファイルを保存すると、内部イベント FileSaveAs がトリガーされます。リスト B のコードはこのイベントを悪用し、Word がドキュメントの FullName プロパティをタイトル バーに表示できるようにします。良くも悪くも、この単純なマクロでは完全なパスが表示されない可能性が高く、一貫して動作するのを見たことはありません。Word はドキュメントの名前を自動的に表示するので、ほとんど役に立ちません。これは説明のためにのみ含めました。これは私が言及した問題点の 1 つです。タイトル バーにパス名を表示する必要がある場合は、Microsoft Office コミュニティでのディスカッションで、MVP の Graham Mayor による優れた解決策を見つけることができます。良いニュースは、リスト C の AutoOpen イベントでは、ファイルを開いたときに、図 Fに示すように、タイトル バーにファイル名とパスの両方が表示されることです。残念ながら、ファイルを保存するとすぐにそれらは失われます。
図F
AutoOpen イベントではパスが表示されますが、FileSaveAs イベントでは通常パスは表示されません。
万能薬はない
これらの解決策は、最もシンプルな要件を満たすかもしれませんが、回避が難しい固有の問題を抱えています。来月は、クイックアクセスツールバーにファイルの場所を表示する解決策が登場します。最新バージョンでのみ機能しますが、確かに簡単です。
Officeに関するご質問をお送りください
読者からの質問には可能な限りお答えしますが、必ずお答えできるとは限りません。リクエストがない限り、ファイルは送信しないでください。添付ファイル付きの初回サポートリクエストは未読のまま削除されます。お問い合わせの際は、できるだけ具体的にご記入ください。例えば、「ワークブックのトラブルシューティングをして、問題点を修正してください」という質問はおそらく返信が来ませんが、「この数式が期待どおりの結果にならない理由を教えてください」という質問は返信が来るかもしれません。ご使用のアプリとバージョンを明記してください。読者サポートに費やす時間や専門知識に対して、TechRepublicから報酬を受け取ることはありません。また、サポートした読者から料金を請求することもありません。お問い合わせは[email protected]までお願いいたします。
また読んでください…
- クイックアクセスのためにOfficeマクロをQATツールバーに追加する方法
- 1 つ以上の Access レコードに対して 1 つ以上のラベルを印刷する方法
- Excelのヒント:VBAを使ってセルや範囲を効率的に選択する方法
- Excel 2016の6つの新機能を活用する方法