文系PCライターの反省フリーランスのライター/編集者、土屋和人のブログです。VBAのテキスト処理Wordは、Excelよりもよく使っていますが、その用途も、利用する機能も、私の場合、非常に限られています。Wordを使って「完成品」を作るということはほとんどありません。通常の「完成品」は、DTPソフトによるレイアウトデータ(ごくまれにWeb用のHTMLデータ)であり、Wordではテキストを書くことだけが目的です。作業しやすいようにページ設定を少し変更することはありますが、Wordの機能だけで凝ったレイアウトの文書を作るといった使い方はまずしません。文章を書くだけならWordではなくテキストエディタなどでもいいのですが、編集者などとのやり取りで、文字の書式を一部変えたり、画像を貼り付けたり、コメントを付けたりといった操作が必要になる場合もあります。自分で書くだけでなく、他の人が書いた原稿を編集する仕事もあります。人から受け取る原稿も、最近はWordのドキュメントである場合がほとんどです。編集の作業というのは、基本的には、文章を目で追っていって、問題のある部分を地道に修正していくものです。用語の統一など、機械的に処理してしまえる作業もあり、こういう部分でWordのマクロ機能が利用できます。テキストエディタにもマクロ機能を備えているものは数多くあり、Wordよりも高速かつ効率的な処理が可能なソフトもあるでしょう。VBAを使ったテキスト処理で便利だと思うのが、テキストのWord単位......という書き方は紛らわしいですね(^^;)、単語単位での処理機能です。日本語の場合は英単語のように間にスペースが入らないので、ひらがな、カタカナ、漢字といった文字種の区切りでしか「単語」が識別できないのでは、と思いこんでいたのですが、実際には名探偵登場シーンで豚カツを食べ終えたという文章(変な例文^^;)を名探偵|登場|シーン|で|豚カツ|を|食べ終えたのように、ある程度正確に単語単位で区切ってくれます。「豚カツ」ではなく「串カツ」の場合は「串」と「カツ」が別単語と見なされるなど、100パーセント正確に単語を判断してくれるわけではありません。その限界を踏まえたうえで、それが問題にならないような処理であれば、応用できる処理の種類はいろいろとあると思います。本当はこの後に単語単位での処理機能の利用法の例があったのですが、あまり適切な例ではなさそうな気がしてきたので、カットしました。何かいい例を思いついたら再修正します。Word2010年05月03日Wordマクロの保存場所マクロには、大きく分けて2種類あります。......といっても、記録マクロと記述マクロとか、自動実行マクロとそれ以外とか、いろんな「大きく分け」方があるわけですが(^^;)、ここでは・特定のドキュメントの中だけで使用することを想定したマクロ・複数のドキュメントでの汎用的な作業で使うことを想定したマクロの2つに分けて考えてみます。Excelのマクロの場合、前者のようなマクロは作業対象のブックそのものに、後者のようなマクロは「個人用マクロブック」に保存します。どちらもそれなりに利用されているのでしょうが、やはり割合でいったら前者のほうが多いのではないかと思います。Excelの場合、設計されたフォーマット上での定型的な作業が主だと思われるからです。Wordの場合、マクロ記録機能の保存先としては、作業中の文書ではなく「すべての文書」(Normal.dotまたはNormal.dotm)がデフォルトです。Wordでも定型フォーマットを使用することはありますが、ある程度形が出来上がってしまったら、そこから先、マクロを必要とするほど複雑な作業はそれほど多くはないでしょう。Excelのマクロのやり方に慣れていると、Wordのマクロも、ついそれぞれの文書に保存するという前提で考えてしまいます。標準テンプレートにマクロを保存するということ自体になんとなく抵抗も感じてしまうのですが、このあたりは頭を切り替える必要がありそうです。ExcelもWordも、マクロ(VBA)によってそれぞれ固有の機能を追加することができますが、Wordのマクロのほうがより汎用性のある「機能」の追加を想定されていることがわかります。Wordはそれ自体多機能ですから、誰にとってもあったほうが便利な機能であれば、大抵もともと備わっています。したがって、「汎用的な機能」とはいっても、その汎用性は、多くの場合、ユーザーそれぞれの業務における汎用性です。いくつもの文書について、機械的な操作を毎日手作業で行っているケースというのは、実は意外に多いのではないかと考えています。いった作業は、マクロ(VBA)を使うことで大幅に効率化できます。VBAですが、それは決して「使えないから」ではなく、あまり情報もないため、その「使いこなしのポイントが理解されていないから」ではないか......と思っているのですが、いかがでしょうか。VBA本についてのアンケートにご協力ください。アンケートは終了しました。ご協力ありがとうございました。