スポンサーリンク
当サイトでは、Excelマクロのサンプルコードもけっこう書いているけど、基本的には個人用マクロブックというやつに組み込むマクロをメインに書いている。
今回はそれではなく、個別に作ったマクロ入りExcelファイルに組み込んでいくマクロについて取り扱う。
はっきり最初に言うが、初学者レベルを想定して書くので、知識のある方には退屈な記述も多々あると思う。
ただ、慣れた方でも知らないようなことも合わせて書いているつもりだ。
今回の記事は、Excelファイルを準備してモジュールというものを設置する下準備まで。
実際にマクロの記述をしていくプロセスは、次回の記事で記載する。
個人用マクロブックのマクロとの違い
そもそも個人用マクロブックとは何かというのは↓を見ていただくとして、要はどういうことか。
つまり私がいつも書いてるのは、
- Excelそのものの機能を抜本的に改造するようなマクロが中心
- 個別の業務とかの、特殊ケースに対応するマクロではない
- 特別なExcelシートとかは必要とせず、ソースコードの文字列をコピペするだけで簡単に仕上げられるマクロ
だということだ。
と言っても無論、私も個人用マクロブックに組み込むマクロばかり作ってるわけではない。
個別の業務に対応した特別なマクロを作ることも多いし、そのためには、あれこれレイアウトを作り込んだExcelシートを置いてマクロと一緒に動かすことがある。
今回は、そういったマクロ入りExcelブックを作成する場合に、私がだいたい共通して実施する手順の黄金パターンとでもいうべきものを述べていく。
大まかに共通する仕様
まず、私が作るマクロ入りExcelファイルの仕様で多いのは、以下のような感じのやつだ。
- まず、表形式などフォームとして作り込まれたExcelシート(以下、メインシートという)に、マクロ実行ボタンが配置されている。
- マクロ実行ボタンを押すと、マクロが走り、メインシートのコピー製品のシート(以下、コピーシートという)が単独表示される。
- コピーシートには、マクロで抽出加工などしたデータがセットされている。
- そしてコピーシートは、まだどこにも保存等されていないシートなので、使い捨てにできる。
もちろん名前を付けて保存などしても良い。
といったもの。
Excelファイルの作成~モジュールの追加
では、そういう仕様のExcelファイルを作る手順について。
ひとまずExcelファイルを保存する
まずExcelファイルのメインシートを、表のフォームなど入れて、ある程度作り上げて形にする。
そしてExcelファイルは早い段階で、名前を付けて保存しよう。
名前を付けて保存するショートカットキーはF12で、上書き保存はCtrl+Sだ。
これらのショートカットキーができなければ給料泥棒なので、確実に覚えること。
マクロ有りのExcelブックとして保存する場合は、ファイルの保存形式を「Excelマクロ有効ブック(xlsm)」という形式にしよう。
拡張子xlsxのExcelファイルは見慣れていても、xlsmのファイルはなかなか見ないかも知れない。
だが、拡張子xlsxではマクロ入りExcelとして保存できないので、拡張子xlsmで保存すること。
VBEにモジュールを追加
そうしたら次にショートカットキーAlt + F11 により、VBE(マクロのソースコードを書くエディタだ)の画面を開く。
ここで「プロジェクト―VBAProject」と書いた画面を探す。もしその画面がなかったら、ショートカットキー「Ctrl+R」で表示できる。
その中で、自分が作成したマクロ入りExcelファイルの名前を確実にクリック・選択しよう。
そして「挿入」→「標準モジュール」で、モジュールというやつを追加する。
この中にマクロのコードを書いていくわけね。
この「モジュール」には名前が付けられるので、急がなくても良いが落ち着いた段階で名前を付けていこう。
モジュールの名前を変更するのは、プロパティの画面からできる。この画面がなかったらF4キーで表示できる。
ファイル名を付けるときなんかは、順序をはっきりさせるため「001テスト.xlsx」みたいに先頭に数字を入れる手法がよく取られるが、この「モジュール」の名前についてはそれができない。
先頭に数字は入れられないのだ。
だから私は、先頭の文字は数字の代わりにa,b,c,・・・とアルファベットにしている。
まあこれは、モジュールの優先順位を明確に決めておきたい場合の話だけどね。
特に優先順位がないような場合は、割と適当に付ける。正直「Module1」のまま放置することも割とある。
その他、ちょっとした設定などは、個人用マクロブックの初期設定の記事などご覧いただくと良いだろう。
マクロの記述
マクロのタイトルを書く
では、作成したモジュールに、マクロを書いていく。
まず実行するマクロについて、英語でそれなりにカッコいい名前を考えてみよう。
その名前を、ここではとりあえず「macro」とするけど、いま作ったVBEのモジュール中に
sub macro
と打ってEnterキーを押そう。
そうすると
End Sub
と、自動的に「End Sub」の文字が入るはずだ。
ちょっとした入力補助機能だね。
マクロ起動ボタンを配置
ではここまでで、「macro」というマクロが取り敢えず登録された。
ここで、メインシートに、マクロの起動ボタンを設置する。
起動ボタンっていうのは、楕円形とか自由な図形を設置することでも行けるんだけど、私は専ら「ボタン(フォームコントロール)」というやつ(以下、単に「ボタン」という)を使う。
このボタンは、元々がマクロ実行用のボタンであるし、印刷のときにもボタンが印刷されないようになってるからね。
で、ボタンはどうやってシートに設置するか。
リボンの中で「開発」というところからって方法もあるが、そんな面倒なことはやらない。
クイックアクセスツールバーをカスタマイズして、「ボタン(フォームコントロール)」を配置しよう。
で、このクイックアクセスツールバーからボタンをシートのどこかに設置したら、自動的に「マクロの登録」の画面がでてくるはずだ。
その入力枠に、先ほど作成したマクロ「macro」を登録すれば、ボタンにマクロ「macro」が登録される。
ボタンには初期状態で「ボタン1」などの文字が表示されるが、名前を変更したければボタンを右クリック→「テキストの編集」としてからやろう。
また、ボタンの文字の色や太さを変えたいという場合は、ボタンを右クリック→「コントロールの書式設定」として、出てきた画面でいろいろ編集しよう。
右クリックと書いたが、迂闊に通常のクリック(左クリック)だとかなどやると、普通にボタンを押してマクロの実行をしてしまいかねない。
気取ってショートカットキーとか使おうとせず、右クリックするのが無難だ。
そして次に、いよいよVBEの「モジュール」に、マクロ「macro」の中身を書いていく。
マクロというのは、Excelの操作を自動記録することでも作れるけど、私はそれはやらず、全部ソースコードを自分で書いていく。
それについては次回の記事にて。
スポンサーリンク