仕事をしていると、結構同じ作業が必要なことが多い。
例えば私の場合、
ラボのデータベースから情報を取り出して、エクセルでダウンロードする。
このとき、色々なDx名がやたら長いので、全部省略したい。
e.g. Alzheimer's disease -> AD
でも、Dx名は十数種類あるので、全部書き換えてたら時間がかかる。
こんなときに、エクセルマクロで瞬時に作業を完成させると気分がアガる。
VBEで1から作らなくても簡単にできるので、今回はそちらの方を紹介。
マクロの登録
例えば下記データがあったとして、Dx名を Ctrl + H で全て書き換えたいとする。
1.リボン > View > Macros > Record Macro...
新規マクロ登録画面が開く ▼
2.名前や説明 etc. マクロオプションを設定し、レコードを開始する。
左下のマークが「Ready □」になっていたらOK。
3.マクロに登録したい作業をひたすら実行していく。
今回の場合は、名前を全て省略文字にしたいので、Ctrl + Hで名前を置換していく。
置換後の画面 ▼
4.作業が終わったら、画面左下の □ マークをクリックし、レコードを完了させる。
マクロの編集
このままだと、余計な作業もレコードされていることが多いので、編集する。
1.VBE 画面の開き方3つ
(1) リボン > View > Macros > View Macros から
Edit をクリック。
(2) Alt + F8 でマクロ画面を開き、Edit をクリック。
(3) Alt + F11 でプログラム(VBE)画面を開く。</p>
2.ここに記録されているコードの中から、要らない作業を消したり、入れ忘れていた作業を追加したりする。
例えば下記の場合、青でハイライトした部分は、セルの選択やコピーをしたときのものなので削る。
内容が全部わからなくても、じっとコードを見ていると、何を意味しているのかだいたいわかってくる。
マクロの実行
登録が終わったら、あとはどのエクセルシートでもマクロ実行の指示を出すと、瞬時に実行してくれる。
例えば、下記シートを別にエクスポートして、このDx名を登録したマクロを使って変更したい場合 ▼
1.Alt + F8 もしくは、リボン > View > Macros > View Macros でマクロ画面を開く。
2.「Macros in: 」のところを 「This Workbook」にすると、そのワークブックだけ、
「All open Workbooks」にすると、その時点で開いている全てのワークブックにマクロが適応される。
そして、Run で実行。
瞬時に全てのDx名が省略名に変換された ▼
マクロのショートカット
マクロのショートカットを作っておくことも可能。
マクロの記録を行うときに、「Shortcut Key:」のところに「アルファベット or Shift + アルファベット」を入れて、ショートカットキーを設定する。
ただ、ここで注意すべきは、もともと割り当てられているショートカットキーの情報を上書きしてしまうこと。
例えば、Ctrl + C と入力してしまったら、Ctrl + C はコピーじゃなくてマクロ実行の指示になってしまう。
Excelや個人設定のショートカットにないアルファベットを割り当てる必要がある。
-
- q
- e
- l
- m
- j etc...
……私の場合、色々ショートカットを個人設定しているので、マクロにショートカットを使うのは避けている。
保存の際の注意点
これは超大事!
普通に保存してしまうと、せっかく作ったマクロが消えてしまう。
私は最初に気をつけなかったので、1から全部作り直したという悲しい過去あり……
なぜ普通に保存するとマクロが消えるのか?
これは、システム保護のため。
VBAで書くマクロは高機能なので、コンピューターウイルスも作ることができる。
そのような悪意から身を守るため、そのExcelファイルにマクロ機能が含まれているかどうか判断できるよう、
マクロあり/なしを区別したファイルにしているらしい。
なんと、エクセルのファイルを保存するとき、ちゃんと注意をしておかないと せっかく作成をしたマクロが、きれいさっぱり消滅してしまうことがあるのです。
マクロが消えないように保存する方法
マクロが消えないように保存するためには、保存ファイル形式をエクセルマクロ有効ブック (*xlsm) (Excel Macro-Enabled Template)」で保存する。
こうすると、ファイルが Module とともに保存され、次に開いた時も、VBAProjectの中にちゃんと現れる。