VBAについて何回か記事にしてきました。最初の入り口こそ、解説書に頼りながら基礎から勉強した自分でしたが、その後は実際の仕事で活用し、知識を広げてきた感じです。今風の言い方をするとOJTですね。
このエクセルの処理はきっとマクロを使えば早いはず、きっと誰かがすでに試みているはず、などと当たりをつけて調べるとやっぱり解決法が見つかる。そんなパターンを繰り返しているうち、結果的にVBAの勉強が進んだ気がします。
関数処理なのにセルには関数を残さない方法をマクロにやらせたり、複雑な分岐をユーザーフォームで解決したり、イベント処理でマクロを裏で働かせたりと、すべて仕事上必要があって、あれこれ調べて分かったテクニックです。
ただ今日は実際にVBAの中身に触れる1回目なので、そんな高度な話はありません。そもそもVBAで何ができるのかを、年賀状ソフトの仕組みをなぞりながら説明していきます。
VBAを使うと楽ができる
年賀状ソフトで無くてはならないのは住所録です。住所録というデータベースから、一人ひとりの名前、住所などを引っ張ってきて年賀状を印刷しているわけです。でも、印刷は1枚ずつではなく、いっぺんに済ませられる。というかそのために商品なわけです。
VBAができることはいろいろあるのですが、分かりやすい活用法として、この年賀状ソフトのように連続印刷、つまり1枚1枚印刷する手間をはぶいてもらう技で使えます。そこで、エクセルの画面を使って、簡単にそのやり方を説明していきます。
住所録の用意
Sheet1に住所録を10人分だけ用意しました。もちろん名前は架空のものです。今回は疑似個人情報データ生成サービスを利用させてもらいました。
お客様カードをレイアウト
今回はお試しなので、郵便番号、住所、名前だけが一枚のカードとして印刷されるよう、Sheet2にレイアウトします。住所録から参照するために、VLOOKUP関数を使っています。赤字で注釈を入れておきました。
VLOOKUP関数をご存じなら、Sheet1のセルA1に連番10が入るとカードになぜ赤坂様とその住所が表示されるのかはお分かりでしょう。
そして、これからやりたいことも見えてきませんか? そう、このセルA1に1、2、3…10と数字を入れ、その都度印刷してゆく処理をマクロにやらせるわけです。
VBAの起動
ここからは聞き慣れない用語が多いかも知れません。先ずはVBAを起動させます。「開発」タブのリボンの一番左のアイコン Visual Basicをクリックすると起動します。
そもそも自分のエクセルには「開発」などというタブはない! という方は[開発]タブを表示するを参照してください。また、ショートカットもあり、Alt + F11 で行けます。
標準モジュールの挿入
VBAが起動すると次の画面が現れます。
メニューの挿入(I)、標準モジュール(M)と進むと、右側にマクロを入力するスペースが現れます。
迷子になってしまった方、VBAの起動について詳しく知りたい方はマクロはどこに書くの(VBEの起動)が参考になります。
マクロの記述
いよいよ連続印刷のためのマクロを記述します。今回はたったこれだけです。
素人の私でも、これくらいだと、自分が過去に書いたマクロとかを参照しながら、すぐ書けます。DimとかRangeとかValueとか、詳しく知りたい方はぜひ、ネットや専門書で何のことなのかを調べて、私のようにVBAの世界にはまってください。
連続印刷成功
ともかく、こんな簡単なマクロでも、メニューの実行(R)、Sub/ユーザー フォームの実行、と進むとちゃんと働きます。結果は次の通り。
画像にとる都合上、プリンタではなくPDFへ出力しましたが、連番1の森岡様から10の赤坂様まで次々現れました。
保存は拡張子.xlsmで
せっかく作ったマクロ入りのファイルをちゃんと保存するには保存形式を選ばなければなりません。Excelマクロ有効ブック(拡張子.xlsm)を選んで保存しましょう。なお、古くからエクセルに馴染んでいる方はご承知でしょう、エクセル2003までの保存形式である、拡張子.xlsでもOK。