エクセルマクロ(EXCEL VBA) その1 簡単なマクロの作り方
エクセルマクロその1簡単なマクロの作り方
これまで何回かpythonについて書いてきましたが、どうなんでしょうか。実行してくれた方はいるんでしょうか?ちょっと不安です。
そこで、もうちょっと身近なエクセルのマクロについて書いてみようというのがこのページです。
「マクロ」なんとなく聞いたことありますよね?
エクセルのマクロとは?
「マクロ」はエクセルにもともと備わっている機能のうちの一つで、「エクセル作業を自動化できる機能」という感じのものです。
例えば、とある顧客名簿があったとして
A列とB列を入れ替えて、C列に空列を追加して、A1に「氏名」と打ち込んで、B1に「住所」と打ち込んでD1に「電話番号」と打ち込んで、メールアドレスの重複を削除する
みたいな作業があったとします。
ある程度エクセルを触ったことがある人だったらそんなに時間はかからない作業だと思いますが、こういう感じの手順書をあらかじめ書いてしておくと、実行ボタン一つで 一瞬でやってくれる、というのがマクロです。
「真面目で正確無比に作業をするバイト君」がエクセルの中にいるという感じです。しかもこのバイト君は「ノーギャラ」でやってくれます。
ただし、このバイト君は「一切融通が利かない」です。手順書を正しく書いておかないと、まったく動いてくれないというのが彼なんです。
マクロを使う準備
マクロを使うためには少し準備が必要です。
まず、エクセルを開いて、
ファイル→オプションを開いてください。
次に、リボンのユーザー設定のところの右側の枠のとこで「開発」という項目があるので、ここにチェックを入れて、OKを押します。
これで「開発」メニューが使えるようになりました。
マクロの自動記録
例えば、こんなリストがあったとします。
B列に空の列を挿入した後に、
1行目に「氏名」「郵便番号」「住所」「電話番号」と打ち込みたい、と思った時、そんなマクロを作るにはまず「マクロの記録」を押します。
こういうのが出てきますが、取り急ぎ、そのままOKを押します。
と、ここで既に「マクロの記録」が始まっています。
僕がこの作業をやるとしたら、こんな感じです。
1)A1にカーソルを置いて、ホーム→挿入→シートの行を挿入
2)B1にカーソルを置いて、ホーム→挿入→シートの列を挿入
3)A1に「氏名」B1に「郵便番号」C1に「住所」D1に「電話番号」と打ち込む
ここまで作業できたら、開発タブ→「記録終了」を押します。
これで、「上記3つの作業をやってくれるマクロ」を作ることができました。
マクロの実行の仕方
試しにさっき作ったマクロを実行してみましょう。
作業をする前の状態に戻してから、開発タブ→「マクロ」を押してください。
こういうウィンドウが出てくるので「実行」を押します。
うまく行けば、一瞬で先程作業した通りになるはずです。
マクロの注意点
これはとても大事なところなのですが、「マクロで実行したものは、「やりなおしボタン」や「Ctrl+Z」で戻らない」ということです。
実際のデータで実験するときは、必ずファイルをコピーしてから実行してください。思わぬ結果になってしまったときに取り返しが付かないことにならないように気を付けてください。
マクロのバックステージでは・・・?
ところで、マクロが実行されている舞台裏ではどんな指示がなされていたのでしょうか?
指示書をのぞいてみましょう。
開発タブ→「Visual Basic」を押します。
新しいアプリみたいなものが立ち上がってきます。
左側に「標準モジュール」というフォルダがあるので「+」で開くと「Module1」なるものが出てきます。これをダブルクリックします。
なんじゃこりゃ・・・、と思うかもしれませんが、これがさっきのマクロの指示書なんです。
エクセルの中のバイト君はこれを忠実に実行した結果、さきほどの作業が完了したわけなのです。
せっかくなので、指示書を修正してみましょう。
この赤線の部分には、
・C1を選択する
・選択したセルに「住所」と書き入れる
という意味なので、「住所」のところを試しに「食う寝るところに住むところ」にしてみましょう。特に深い意味はありません。
そして、もう一度、最初に戻って実行してみましょう。
もともと「住所」と打つはずだったC1セルが「食う寝るところに住むところ」になりました!
という感じで、自動で書いたマクロをカスタマイズすることも可能です。
マクロファイルの保存
マクロは普通のエクセルファイルに保存できません。
名前を付けて保存する際に、「Excelマクロ有効ブック」として保存してください。
と、ここまで書いてきましたが、実はこういう単純なマクロであれば「マクロを記録」だけで作ることが可能です。ただ、自動で作った指示書はちょっと無駄が多いので、ホントは書き直した方がかっこいいです。(作業効率も良くなるらしいです。)
エクセルのマクロは解説サイトがとても多いので、たいていの作業の方法は先人が書いてくれていますので、「やりたい作業+vba」で検索してみるとよいと思います。僕もそれでだいたいやり方を見つけています。
エクセルマクロの参考書
ちなみに、僕がエクセルマクロを覚えたきっかけとなった本はこちらです。pythonより先に出会っています。先人の知恵に感謝。
増強版というのも出てるみたいですね。読んでみたい。
エクセルマクロ(EXCEL VBA) その2 初めてのマクロを作る
(文:森脇孝/エントレ)