2011年07月17日

Word VBA 無償公開終了

私のWebサイトで、昨年の7月から全ページの無償公開を行っていた『Word VBA基本&活用テクニック』ですが、本日、公開を終了しました。
今後は、下のリンク先からのダウンロード販売となります(ただし、Part 1のみ、サンプルとしてこれまで通り閲覧可能です)。

Word VBA基本&活用テクニック Word 2010/2007対応

内容的にも、これまでのものとまったく同じというわけではなく、Word 2010ベースの解説に修正しています。
また、いろいろと新しい要素も追加しています(テキストボックスとかフィールドとか)。

今回、改訂のために前バージョンを読み返してみて、結構あちこちに問題のある記述があったことに気がつきました。
単なるうっかりミスもありましたし、(その時点で)間違えて理解していたこともありました。

一年後ぐらいに今回の改訂版を読み返して、同じような感想を持たずに済むことを願っていますが……(^^;)
タグ:Word VBA
posted by 土屋和人 at 21:45| Comment(8) | TrackBack(0) | Word

2011年02月11日

ThisDocument

ExcelのVBAでは、ApplicationオブジェクトにThisWorkbookプロパティというのがあり、そのコードを含むブックを表すWorkbookオブジェクトを返します。

WordのVBAでもたぶん同じようなものだろうと思い、よく調べもせずThisDocumentというキーワードを使ってコードを書いてみたところ、やはり同じようにコードを含むDocumentオブジェクトが取得できました。
それで、これもやはりApplicationオブジェクトのプロパティなのだろうと思い込んでいたのですが、最近いただいた問い合わせをきっかけに調べ直してみたところ、WordのApplication(Global)オブジェクトにはそんなプロパティはない(もちろんメソッドもない)、ということがわかりました。

続きを読む
posted by 土屋和人 at 13:19| Comment(0) | TrackBack(0) | Word

2010年07月29日

Wordマクロ本

昨日、打ち合わせで久しぶりに外出し、時間調整のために立ち寄った書店で、こんな本を見つけました。



思わず、「タイミングが悪いなぁ〜」とつぶやいてしまいました。(^^;)

しかも版元は、私も仕事させてもらっている技評さん。
著者は、Wordの本に関していろいろと実績をお持ちの方のようです。

ちょっと立ち読みした限りでは、Word VBAの言語仕様、つまりオブジェクトやメソッドなどについての細かい説明といったものよりも、書名の通り実用的なコードのサンプル紹介が中心で、私のPDF本と完全にかぶる内容ではないと思いましたが……。

「負けた」と思ったのは、このシリーズは組み版までWordでやっているらしいこと。
(しかもあちらはちゃんと印刷して、本にまでなっている!)

「どうせだからPublisherの使い方にも慣れておこう」と思ってPublisherで組んだのですが、Wordだとちょっと面倒くさそうなイメージがあったことも事実で、なんだか自分が「逃げた」ような気分になりました。(^^;)
posted by 土屋和人 at 08:51| Comment(1) | TrackBack(0) | Word

2010年07月24日

「Word VBA」PDF本 全ページ公開

今まで部分的に公開し、皆様のご意見をうかがっていたWord VBAのPDF本ですが、このたび思い切って全ページを無償公開することにしました。

検索などで探してきてくれる人は結構いたのですが、アンケートに答えてくれる人の数はそれほどでもなく、たぶん販売形式にしてもそれほど売れないな、と……(^^;)

それでもこういう情報自体は求められているようなので、ちょうどOffice 2010も出たところで、このまま腐らせてしまうよりは多くの人に見ていただいたほうが、と考えて決断しました。
(アフィリエイトをちょっと絡めてみたところが、せこいといえばせこいのですが)

この本の完成後、ちょっと時間をおいて、仕事の合間に読み返してみたら、いろいろと間違いや問題点も見つかりました。
何しろ客観的な制作協力者である編集者が関与していないので、文章が独りよがりでわかりにくいところも多々あるのではないかと思います。
また、Word VBAの内容自体について、私が勘違いしている部分もまだ結構ありそうな気がします。

そうした点も含めて公開してしまうのは怖い気もしますが、一般的な出版物と違ってこちらは修正が利くので(^^;)、そういう意味では少し気が楽だったりもします。
この本に関するご感想やご意見、ご質問などがありましたら、ぜひWebサイトの送信フォームよりお送りください。

※アンケートにご協力いただいた皆様、誠にありがとうございました。
posted by 土屋和人 at 10:38| Comment(7) | TrackBack(0) | Word

2010年05月08日

Word VBAのテキスト処理

Wordは、Excelよりもよく使っていますが、その用途も、利用する機能も、私の場合、非常に限られています。
とりあえず、Wordを使って「完成品」を作るということはほとんどありません。

通常の「完成品」は、DTPソフトによるレイアウトデータ(ごくまれにWeb用のHTMLデータ)であり、Wordではテキストを書くことだけが目的です。
作業しやすいようにページ設定を少し変更することはありますが、Wordの機能だけで凝ったレイアウトの文書を作るといった使い方はまずしません。

文章を書くだけならWordではなくテキストエディタなどでもいいのですが、編集者などとのやり取りで、文字の書式を一部変えたり、画像を貼り付けたり、コメントを付けたりといった操作が必要になる場合もあります。

また、自分で書くだけでなく、他の人が書いた原稿を編集する仕事もあります。
人から受け取る原稿も、最近はWordのドキュメントである場合がほとんどです。

編集の作業というのは、基本的には、文章を目で追っていって、問題のある部分を地道に修正していくものです。
ただ、用語の統一など、機械的に処理してしまえる作業もあり、こういう部分でWordのマクロ機能が利用できます。

もちろん、テキストエディタにもマクロ機能を備えているものは数多くあり、Wordよりも高速かつ効率的な処理が可能なソフトもあるでしょう。

Word VBAを使ったテキスト処理で便利だと思うのが、テキストのWord単位……という書き方は紛らわしいですね(^^;)、単語単位での処理機能です。

日本語の場合は英単語のように間にスペースが入らないので、ひらがな、カタカナ、漢字といった文字種の区切りでしか「単語」が識別できないのでは、と思いこんでいたのですが、実際には

名探偵登場シーンで豚カツを食べ終えた

という文章(変な例文^^;)を

名探偵|登場|シーン|で|豚カツ|を|食べ終えた

のように、ある程度正確に単語単位で区切ってくれます。

もちろん、「豚カツ」ではなく「串カツ」の場合は「串」と「カツ」が別単語と見なされるなど、100パーセント正確に単語を判断してくれるわけではありません。
ただ、その限界を踏まえたうえで、それが問題にならないような処理であれば、応用できる処理の種類はいろいろとあると思います。

※5/9修正
本当はこの後に単語単位での処理機能の利用法の例があったのですが、あまり適切な例ではなさそうな気がしてきたので、カットしました。
また何かいい例を思いついたら再修正します。
posted by 土屋和人 at 17:22| Comment(0) | TrackBack(0) | Word

2010年05月03日

Wordマクロの保存場所

マクロには、大きく分けて2種類あります。

……といっても、記録マクロと記述マクロとか、自動実行マクロとそれ以外とか、いろんな「大きく分け」方があるわけですが(^^;)、ここでは

・特定のドキュメントの中だけで使用することを想定したマクロ
・複数のドキュメントでの汎用的な作業で使うことを想定したマクロ

の2つに分けて考えてみます。

Excelのマクロの場合、前者のようなマクロは作業対象のブックそのものに、後者のようなマクロは「個人用マクロブック」に保存します。
どちらもそれなりに利用されているのでしょうが、やはり割合でいったら前者のほうが多いのではないかと思います。
Excelの場合、設計されたフォーマット上での定型的な作業が主だと思われるからです。

一方、Wordの場合、マクロ記録機能の保存先としては、作業中の文書ではなく「すべての文書」(Normal.dotまたはNormal.dotm)がデフォルトです。
Wordでも定型フォーマットを使用することはありますが、ある程度形が出来上がってしまったら、そこから先、マクロを必要とするほど複雑な作業はそれほど多くはないでしょう。

Excelのマクロのやり方に慣れていると、Wordのマクロも、ついそれぞれの文書に保存するという前提で考えてしまいます。
また、標準テンプレートにマクロを保存するということ自体になんとなく抵抗も感じてしまうのですが、このあたりは頭を切り替える必要がありそうです。

ExcelもWordも、マクロ(VBA)によってそれぞれ固有の機能を追加することができますが、Wordのマクロのほうがより汎用性のある「機能」の追加を想定されていることがわかります。
ただ、Wordはそれ自体多機能ですから、誰にとってもあったほうが便利な機能であれば、大抵もともと備わっています。
したがって、「汎用的な機能」とはいっても、その汎用性は、多くの場合、ユーザーそれぞれの業務における汎用性です。

いくつもの文書について、機械的な操作を毎日手作業で行っているケースというのは、実は意外に多いのではないかと考えています。
当然、こういった作業は、マクロ(VBA)を使うことで大幅に効率化できます。
Excel VBAに比べてあまり使われていない印象があるWord VBAですが、それは決して「使えないから」ではなく、あまり情報もないため、その「使いこなしのポイントが理解されていないから」ではないか……と思っているのですが、いかがでしょうか。

※追記 よろしければ、下記URLからWord VBA本についてのアンケートにご協力ください。
http://www.clayhouse.jp/pbooks/wordvba.htm

※7/29追記 アンケートは終了しました。ご協力ありがとうございました。
posted by 土屋和人 at 10:41| Comment(0) | TrackBack(0) | Word

2010年01月22日

Word VBA

去年の年末あたりから(暇だったこともあって^^;)、WordのVBAをいろいろといじっていました。

で、以前から漠然と感じてはいたのですが、今回改めて「Excel VBAとは違うなぁ」と実感しました。
もちろんVBAであることには間違いなく、基本的な仕様に変わりはないのですが、単にワープロと表計算というソフトウェアの構造的な違いだけでなく、「考え方」というか「アプローチ」のようなものが結構違っている気がします。

たとえば、操作対象の「範囲」を表すオブジェクトはどちらも「Range」ですが、オブジェクトとその対象範囲との対応を変更したい場合、Excel VBAではプロパティやメソッド(OffsetやSpecialCellsなど)を使い、その戻り値として改めてRangeオブジェクトを取得します。
一方、Word VBAの場合は、メソッドによって対象のオブジェクトそのものを変更してしまいます。つまり、

Set rng = rng.Move(wdCharacter, 5)

のような書き方ではなく

rng.Move wdCharacter, 5

だけで、オブジェクト変数rngが表している文字列範囲が変更されます。

また、Word VBAでは選択範囲を表す「Selection」がそれ自体1つのオブジェクトであり、コードの中で選択範囲を変更するという操作も、Excelの場合とは違って結構キーポイントになり得る気がします。

ただ、いろいろと研究してはみたものの、私の仕事(書籍)として考えると、WordのVBAというのは、正直あまりニーズがあるとは思えません。
特に「作業の自動化」という観点からすると、Wordでの作業を自動化したいと考える人はExcelの場合ほど多くはないでしょう。
しかし、それぞれの業務内容に応じて「Wordに独自の機能を追加できる」と考えれば、便利な活用法はいろいろとあるのではないかと思います。

ちなみに、今回改めてわかったことがもう1つ。
Word VBAのオンラインヘルプについてですが、やはりちょっと不足していたり余分だったり、不親切だったり不正確だったり……この点に関しては、Excel VBAとそれほど変わらないようです(笑)。

※カテゴリはちょっと迷いましたが、まあExcelとも無関係ではないので。(^^;)
※2010/5/3追記 カテゴリはとりあえず「Excel」に入れていましたが、「Word」カテゴリを新設しました。
posted by 土屋和人 at 09:41| Comment(0) | TrackBack(0) | Word