この記事は PDF ダウンロードでもご利用いただけます。
スーザン・セールス・
ハーキンスとブライアン・カーボネル
Wordには、大規模な文書の管理に役立つ機能が多数用意されています
。例えば、特定の単語や語句をマークすると、Wordが
自動的に目次、出典一覧、
図表目次、さらには索引を生成します。これにより、作業時間を大幅に節約できます。これらの要素を手動で作成する代わりに
、目次や索引など
に含めたいテキストをマークすると、Wordが自動的にフィールドコードを挿入します。
文書の作成が完了すると、Wordがそれらのフィールドに基づいて目次や索引などを自動的に生成します
。
しかし、フィールドコードを削除しようとすると問題が発生します。Wordの
置換機能を使えば削除できますが、手順が少し面倒です。あるいは、
手動で削除することもできます。しかし、フィールドが多数ある大きな原稿の場合、
数時間かかることもあります。幸いなことに、マクロを使えば、
わずか数秒ですべてのフィールドコードを削除できます。
フィールドコードを削除するのは誰ですか?
なぜフィールドコードを削除する必要があるのか疑問に思うかもしれません
。実際には、ほとんどの場合、削除する必要はありません。しかし、一部のプロセス
では、コンテンツのクリーンなコピーが必要になります。クリーンとは、
文書に隠れた書式やコードが含まれていないことを意味します。例えば、雑誌やジャーナル
に掲載するためにWord文書を制作システムに提出する場合
や、Webサイトで公開するためにHTML文書を提出する場合などです
。
文書からフィールドコードを削除するのにどれほど時間がかかるかを確認するには
、少し時間を取って文書にフィールドをいくつか挿入してみましょう。単語を選択し、[Alt][Shift]+[X]キーを押すだけです。図A
に示す「索引項目の登録」ダイアログボックスが表示されたら、「登録」ボタンをクリックします。すると、図Bに
示すように、索引項目のフィールドコードが挿入されます。(コードの表示/非表示を切り替えるには、「標準」メニューの「表示/非表示」をクリックします
。)
図A |
![]() |
このダイアログ ボックスを使用してドキュメントにフィールドを追加し、いくつかのインデックス エントリを作成します 。 |
図B |
![]() |
[マーク] をクリックすると、Word によって索引エントリ コードが挿入されます。 |
さて、コードだらけの100ページの文書を想像してみてください。
「置換」コマンドを使ってこの問題に対処することもできますが、少し複雑で、
一般ユーザーには馴染みのないノウハウが必要になるかもしれません。まず、
コードを表示する必要があります。問題は、ユーザーがそれを覚えているかどうかです。覚えていなければ、
「置換」コマンドを実行してもコードが削除されなかっ
た
ことに気付かないかもしれません。
コードを表示したら、
「編集」メニューから「置換」を選択します。次に、「検索と置換」ダイアログで「その他」をクリックし、
「特殊文字」をクリックします。表示される特殊文字のリストから「フィールド」を選択し、「
検索する文字列」テキストボックスに「^d」と入力します(^dはすべてのフィールドコードを表します)。
「置換後の文字列」フィールドを空のままにして「すべて置換」をクリックすると、Wordによって
文書内のすべてのフィールドコードが削除されます。
この方法の2つ目の問題は、索引、目次、図表、出典一覧といったフィールドコードがすべて削除されてしまうことです
。フィールド生成のページ番号や日付なども削除されてしまうことも忘れてはなりません。これらのフィールドの一部を保持したい場合は、削除したいフィールドのコードとワイルドカード「?」を組み合わせるという別の手順が必要になります。
例えば、索引フィールドだけを削除したい場合は、「^d xe ^?」と入力します。たとえ操作方法を理解していても、非常に手間のかかる作業です
。経験の浅いユーザーは苦労するかもしれません。
フィールド削除マクロ
幸いなことに、置換テクニックを使わずに、
簡単なマクロでフィールドストリッピングのプロセスを自動化できます。マクロがすべての作業を実行します。あとは
マクロを実行することを覚えておくだけです。ドキュメントにマクロを追加するには、以下の手順に従います
。
Word 文書を開いた状態で、[Alt][F11] キーを押して Visual Basic Editor (VBE) を起動します。
VBEで、[挿入] メニューから [モジュール] を選択します。
次のマクロを入力します。
Sub DeleteIndexEntries() Dim doc As Document Dim fld As Field Set doc = ActiveDocument For Each fld In doc.Fields fld.Select If fld.Type = wdFieldIndexEntry Then fld.Delete End If Next Set fld = Nothing Set doc = Nothing 終了サブ
マクロを実行するには、[F5]キーを押すか、
「実行」メニューから「Sub/ユーザーフォームの実行」を選択します。または、ドキュメントに戻り、
「ツール」メニューから「マクロ」を選択することもできます。表示されるマクロウィンドウで、「DeleteIndexEntries」を選択し、「実行」をクリックします。
For…Each ステートメントは、Fields コレクションをループ処理し
、内部定数によって指定された各フィールドタイプを削除します。このサンプルマクロは、すべてのインデックスフィールド
コード (wdFieldIndexEntry) を削除します。他のフィールドコードを削除するには、対応する内部定数を代入するだけです
。例えば、
目次の項目を削除するには wdFieldTOCEntry を使用し、典拠
一覧の項目を削除するには wdFieldTOAEntry を使用します。
ヒント
フィールドコードの種類は数多くあります。wdFieldType
クラスの定数一覧を取得するには、オブジェクトブラウザを使用してください。VBEでは、
[F2]キーを押すか、[表示]メニューから[オブジェクトブラウザ]を選択します。クラス一覧で
wdFieldTypeを見つけて、メンバー一覧を更新します。または、サブプロシージャでwdFieldIndexEntryをハイライト表示し、[Shift][F2]キーを押すと、
オブジェクトブラウザに定数が表示されます。
注目すべき点
このマクロを変更することで、複数のフィールドコードタイプを削除できます。より柔軟な処理が必要な場合は、
適切な定数をマクロに
渡すユーザーフォームを作成してください。そうすれば、同じマクロを使って
、必要に応じて異なるフィールドコードを削除できます。定数の名前ではなく、数値を渡す必要があることに注意してください
。例えば、wdFieldIndexEntryの整数値は
4なので、この値をプロシージャに渡します。
マクロは原稿文書と一緒に保存できます。その場合
、フィールドコードを含む元の文書を上書きしないように注意してください
。誤って元の文書を上書きすると、すべてのフィールドコードが失われます。後で元の文書を更新する際、
目次や索引などを再生成する必要がある場合、すべてのフィールドコード
を再入力する必要があります
。通常は、すべてのフィールド
コードを含む元のファイルと、フィールドコードを含まないクリーンなコピーの2つのファイルを保存することになります。マクロをコードライブラリに保存し
、文書の2番目のコピーに対してのみ実行することをお勧めします。
スーザン・セールス・ハーキンスは独立コンサルタントであり、
データベース技術に関する記事や書籍を多数執筆しています。彼女の最新
著書は『Mastering Microsoft SQL Server
2005 Express』です。
(Sybex社刊)です。Gunderloy氏との共著としては、他にQue社刊の『Automating Microsoft Access 2003 with VBA』、
『Upgrader’s Guide to Microsoft Office System 2003』、『ICDL Exam Cram 2』、『Absolute Beginner's Guide to Microsoft
Access 2003』
などがあります。現在、Susan氏は
Database Advisorsの出版担当ディレクターとしてボランティア活動を行っています。連絡先は[email protected]です。
公共放送局に勤務
、それらは Database Advisors で公開されています。
。連絡先は
[email protected]です。