表やグラフなどを作成するのに便利な「エクセル(Excel)」。
仕事や学校で使っている方も多いかと思います。表計算やちょっとしたデータ管理、資料作成など、多目的に使える大変便利なアプリです。
さらにエクセルをもっと便利に使う方法があります。
エクセルVBAマクロ
どこかで聞いたことがある言葉かもしれません。
VBAは「Visual Basic for Applications」の頭文字をとった略称で、マイクロソフト社のWordやAccessなどのアプリで使われるプログラミング言語になります。マクロはそのプログラムを使って操作することを言います。
※記事内ではマクロと呼ぶことにします。
「そのマクロってやつは何ができるの?」
「使ってみたいけど、どうやって使うんだろう?」
今回はエクセルVBAマクロの使い方について、「はてなブログの記事一覧のリンク表を作る!」を題材に説明したいと思います。
Part.1基礎編(本記事)ではマクロってどうやって使うの?の基本的な内容、Part.2実践編では、記事一覧表を作るプログラムを説明します。全体通じてマクロの詳細説明は避け、「始めるの簡単そう」、「こんなことができるんだ!」と感じ、マクロに興味を持つきっかけになればと思っています。マクロの詳細は専門書にお任せします。。
プログラムの作成、それに伴う作業、実行結果については自己責任でお願いします。
準備するもの
エクセル(Excel)のアプリがパソコンにインストールされていればOKです。エクセル以外のアプリは不要です。
エクセルのバージョンについてはどれでも問題ありません。本記事で使用するエクセルは、「Excel2013」です。バージョン違いでメニューなどの見た目が変わっていたりしますが、内容や操作方法はほとんど変わりません。
何を作る?
今回の題材は、「はてなブログの記事一覧のリンク表を作る」です。
本ブログで、「記事一覧」で表示しているスタイルを作ってみたいと思います。記事Noと投稿日、ページへのリンク付きのタイトルをリスト表示します。記事一覧のサンプルは、本ブログのタイトル下の「記事一覧」ボタンから確認できます。
※実際の作成方法については、Part.2実践編(別記事)で説明します。
マクロを作る準備
エディターを起動しよう
それでは早速、マクロを作るためのエディターを起動したいと思います。
エクセルを起動し、ブックを新規作成します。その後、「VisualBasicEditor」をメニューから選択します。場所が分からない場合は、ショートカットキー「Alt + F11」でもOKです。
下の画面が出ればOKです。エクセルVBAでプログラムを作成する準備ができました。
プログラムを書く準備
エディターが開いたので、プログラムを書いていきたいと思います。
プログラムを書く部分を表示させる方法はいくつかありますが、分かりやすくて簡単な方法で表示させたいと思います。
一旦、エクセルのブックの画面に戻ります。
メニューの表示から、マクロ→マクロの記録を選択します。
マクロの記録画面で、マクロ名を入力します。
動かしたいプログラムは種類毎に分けることができます。たとえば、表から文字を抽出するプログラムはProgram1、表に色を塗ってグラフを書くのはProgram2・・・などです。
「そんなにプログラムを分ける必要なんてないよ!」
だと思いますので、とりあえず、ここはMacro1のままでOKです。作成したプログラムはこの名前で選んで実行します。名前は自由に変えても大丈夫です。
そのあと、何もせず、記録終了を選択します。さきほどと同じメニュー内にあります。
ここでエディター画面に戻ってください。プロジェクトの所に標準モジュールがあるので、その中のModule1をダブルクリックします。すると、右にメモ帳みたいのが開くかと思います。ここがプログラムを記述する場所になります。
「Sub Macro1()」~「End Sub」までの間に書かれたプログラムが、Macro1を実行すると動く場所になります。
これでプログラムを書く準備は整いました。次に簡単なプログラムを作って動かしてみたいと思います。
マクロを動かす
簡単なプログラムを作って、マクロを動かしてみたいと思います。
作成するプログラム
プログラムの説明もかねて、こんなプログラムを作ってみます。
- Sheet1のセルに文字と数字を記入
- その内容をSheet2にコピー
- 数字の部分を足して結果を表示
作成するまえに、シートの準備をお忘れなく。Sheet1とSheet2を作成してください。中身は空(白紙)にしてください。
次に下記のプログラムをコピーし、先ほどのエディターに貼り付けてください。
- Sub Macro1()
- Sheets("Sheet1").Cells(1, 1) = "りんご"
- Sheets("Sheet1").Cells(2, 1) = "みかん"
- Sheets("Sheet1").Cells(1, 2) = 5
- Sheets("Sheet1").Cells(2, 2) = 3
- End Sub
貼り付け終えたら実行ボタンを押してみてください。先ほど記述されていなかったSheet1の中に、りんごなどの単語がセルに表示されているかと思います。
実行の際にマクロを選択する画面が表示された場合、Macro1を選んで実行を押せばOKです。結果はまったく同じです。
プログラムの説明
簡単にプログラムの説明をしたいと思います。
Sheets("Sheet1").Cells(1, 1) = "りんご"
シート「Sheet1」のセルの場所(1,1)に文字”りんご”を入れるという意味です。文字なので””(ダブルクォーテーション)で囲います。同じように数字も入れることができます。この命令により、セル内に文字が表示されました。
セル(cells)の指定方法ですが、下のイメージになります。数学のXY座標グラフのイメージと逆ですが、(上下、左右)→じょうげさゆう、と覚えておくとよいかと思います。
別のシートにコピーしてみる
先ほどのプログラムにさらに書き足して、Sheet1からSheet2に上下を入れ替えてコピーしてみたいと思います。数字の部分は足し算して下のセルに合計として追記します。プログラムはこちらです。
- Sub Macro1()
- Sheets("Sheet1").Cells(1, 1) = "りんご"
- Sheets("Sheet1").Cells(2, 1) = "みかん"
- Sheets("Sheet1").Cells(1, 2) = 5
- Sheets("Sheet1").Cells(2, 2) = 3
- Sheets("Sheet2").Cells(2, 1) = Sheets("Sheet1").Cells(1, 1)
- Sheets("Sheet2").Cells(1, 1) = Sheets("Sheet1").Cells(2, 1)
- Sheets("Sheet2").Cells(2, 2) = Sheets("Sheet1").Cells(1, 2)
- Sheets("Sheet2").Cells(1, 2) = Sheets("Sheet1").Cells(2, 2)
- a = Sheets("Sheet2").Cells(1, 2) + Sheets("Sheet2").Cells(2, 2)
- Sheets("Sheet2").Cells(3, 2) = a
- End Sub
同じように実行してみると、Sheet2にりんごとみかんが上下逆になり、さらに、3行目のB3に、2つを足した数字が表示されているかと思います。
Sheets("Sheet2").Cells(2, 1) = Sheets("Sheet1").Cells(1, 1)
これは=”=”を挟んで、右の内容を左に入れるという意味になります。読み解くと、「Sheet1のセル(1,1)の内容をSheet2のセル(2,1)に入れる」となり、行が入れ替わるプログラムになります。
a = Sheets("Sheet2").Cells(1, 2) + Sheets("Sheet2").Cells(2, 2)
Sheets("Sheet2").Cells(3, 2) = a
aは変数と呼ばれ数字や文字を記憶することができます(箱に数字などを入れるイメージ)。Sheet2のcells(1,2)とcells(2,2)の内容を足した(+)内容をaに入れるという意味です。次にそのaの内容をcells(3,2)に入れて表示させています。
マクロの保存方法
マクロの保存はエクセルファイルの保存時に、ファイル種類に「Excel マクロ有効ブック」で保存すればOKです。次回は保存したファイル(拡張子 .xlsm)を開き、使用したりプログラムを編集したりすることができます。
まとめ
エクセルVBAマクロであそぼう!
まずは基礎編ということで、マクロを作成する準備から、簡単なプログラムを動かすところまで説明しました。ここまでできれば、その後の記事一覧表の作成はできたも同然です。
次回は実践編と題し、一覧表のプログラムの説明と、完成した一覧表をHTMLソース化して、ブログに貼り付けるところまでを説明します。