━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
◆◆◆◆ マクロを使ってみよう ◆◆◆◆
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
エクセルやアクセスを使う人は「マクロ」という言葉を一度は聞いたことが
あると思います。
実は、マイクロソフトオフィスの製品のワードやパワーポイントにも
マクロがあります。
マクロとは、毎日の業務の中で同じような操作を繰り返し行うような場合、
その操作をプログラム化して、ボタン一つで実行させるようなことができる
機能です。
とても便利な機能に思えるのですが、実際に使用するには多少の知識と経験
が必要になります。
------------------
マクロの中身
------------------
マクロというのは、Visual Basicという言語で記録されるものです。
一般にVisual Basicというのは、マイクロソフトが開発したプログラム言語
なのですが、本来のVisual Basicとオフィスのソフトに付属するVisual Basic
は少し異なります。
それは、Visual Basicに加えて、それぞれのソフト固有の命令が追加されて
いるからです。
このようなことから、オフィス付属のVisual Basicは本来のVisual Basicと
区別されVBA(Visual Basic for Application)と呼ばれています。
このVBAはソフトにより異なるなので、ワードVBA、エクセルVBA、アクセスVBA
などと呼ばれています。
-------------------------
Visual Basicとの違い
-------------------------
マクロが優れているのは、プログラムの「コンパイル」という処理を
ユーザー側がしないで使用することができるという点です。
ですから、ユーザー側ではプログラムを修正したら、そのまますぐに動きの
確認ができるので作業がとても早く行えるという利点があります。
ただし、注意する点もあります。
それはソフトのバージョンによってマクロのコマンドや書き方が変わること
がある点です。
よく言われているのは、
Office97からOffice2000に変化した時、VBAの仕様が大きく変わりました。
また、Office2000からOffice2002に変化した時も大きく変わりました。
Office2002と2003の間ではほとんど変化はありません。
そして、今回発売されたOffice2007では、かなり大きな変化があったようです。
つまり、古いバージョンのソフトで作成されたマクロが、新しいバージョンの
ソフトで必ず動くという保証はまったくないということです。
もちろん、新しいバージョンで作成されたマクロは古いバージョンのソフトで
動く保証はさらにありません。
----------------------
エクセルのマクロ
----------------------
エクセルのマクロの大きな特徴は2つあります。
1.エクセルでのオブジェクトの単位は「ブック」と「シート」と「セル」
となっている。
2.絶対参照マクロと相対参照マクロが作成できる。
ですから、エクセルの場合、ブック名、シート名などをマクロを作成した後に
変更すると、マクロが動かなくなります。
絶対参照マクロというのは、セルの絶対番地をたよりに実行するマクロです。
これに対して、相対参照マクロというのは、マクロを開始する時点でどこのセル
がアクティブになっているかが重要になります。
アクティブセルの位置を原点としてマクロを実行するのが相対参照マクロです。
通常は、絶対参照マクロの方が多く使われていると思います。
-----------------------
アクセスのマクロ
-----------------------
マクロを使うのがあたりまえになっているソフトが「アクセス」です。
アクセスでは、フォームやレポートを開いたり、閉じたりする操作や、
データをあるキーワードで絞込みを行って、それを表示させたりするような操作
にマクロが使われています。
アクセスのマクロの大きな特徴も2つあります。
1.フォーム上のコントロールオブジェクトのイベントに設定する。
2.SQLをマクロの中で発行し、データを抽出することができる。
アクセスの場合には、マクロ以外に「式ビルダ」や「VBコード」という別の手法
もあり、実行する操作によってマクロを使ったり、使わなかったりします。
--------------------------------
マクロを勉強するための方法
--------------------------------
突然奮起して、「マクロを勉強するぞ!」と書店に行って、難しいVBAの本を
買い込んでもマクロは習得できるものじゃありません。
VBAのコマンドはとてもたくさんあるので、覚えられるものでもありません。
それと、エクセルとアクセスのVBAは全く違うので、エクセルのVBAを勉強した
からアクセスのVBAが使えるというものでもありません。
そこで、何が一番いい勉強方法かをお教えします。
まずは、エクセルのマクロから勉強してください。
エクセルのマクロはVBAというような難しい言語を知らなくても作成することが
できます。
(1)まずエクセルを起動します。
(2)[C1]のセルに「桃太郎」と入力します。
(3)この桃太郎と書いたセルを[A3]のセルに移動させるマクロを作成してみましょう。
(4)マクロを開始させる前に、[A1]のセルをクリックしておいてください。
(5)「ツール」→「マクロ」→「新しいマクロの記録」をクリックします。
(6)そうすると、マクロの記録という画面が出てきましたよね。
(7)マクロ名がMacro1となっていると思いますが、これはそのままでいいので
OKボタンを押します。
(8)そうすると、小さなツールバーが現れます。
(9)このツールバーの左側には「■」のマークがありますが、これはマクロの
記録を終了するときに押すボタンです。
(10)このツールバーの右側にある表みたいなアイコンは相対参照マクロを
記録するときに押すボタンです。ボタンが押されていなければ絶対参照
マクロの記録になります。
(11)ここでは絶対参照マクロでいいので、ボタンは押さないでください。
(12)それでは、桃太郎と書いた[C1]のセルを右クリックして、「切り取り」
を選択してください。
(13)次に[A3]のセルを右クリックして「貼り付け」を行ってください。
(14)ここまで出来たら、■ボタンを押してマクロの記録を終了してください。
たったこれだけですが、1つのマクロが記録されました。
それではこのマクロを実行してみましょう。
その前に[A3]のセルの桃太郎を消して、[C1]のセルに「金太郎」と書いてください。
(15)「ツール」→「マクロ」→「マクロ(M)...」をクリックします。
(16)そうすると、マクロという画面が出てきて、そこに「Macro1」という
文字が見えます。これが、さきほど作成したマクロです。
(17)すでにこのMacro1が選択状態になっているので、そのまま「実行」と
いうボタンを押してみてください。
(18)そうすると、[C1]のセルにあった金太郎が、[A3]のセルに移動しました
よね。
これがマクロです。このマクロは[C3]のセルの内容を[A3]のセルに移動させる
というマクロになっています。
このマクロの記録の開始からマクロを記述する方法は簡単なので、いろんなこと
が試せると思います。次にマクロの記録の開始を行うと「Macro2」というマクロ
が作成されると思います。
----------------------------------------
マクロの中身をコードで見てみましょう
----------------------------------------
あなたが記録したマクロは、実はVBAというコードに変換されてエクセルの
ファイルの中に保存されています。
このマクロの中身を見てみましょう。
(1)「ツール」→「マクロ」→「マクロ(M)...」をクリックします。
(2)「Macro1」が選択状態になっているのを確認して、「編集」というボタン
を押します。
(3)突然画面が大きな画面に切り替わったのでびっくりされる方もいるかと
思いますが、この画面がVBAの編集画面で、「Visual Basic Editor」と
呼ばれているものです。
(4)この画面の真ん中に「Book1 Module1(コード)という画面が出ていると
思います。
エクセルのマクロは「標準モジュール」と呼ばれる中のModule1に作成されて
います。
この標準モジュールはエクセルを閉じない状態でマクロを複数作成した場合には、
同じモジュールの中にマクロが引き続き記録されてきます。
しかし、エクセルを閉じて再度立ち上げてからマクロを記録すると、
新たにモジュールが生まれて、そこにマクロVBAが書き込まれるようになっている
ようです。
では、マクロの中身を見てみましょう。
Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2007/5/20 ユーザー名 : KONO
'
'
Range("C1").Select
Selection.Cut
Range("A3").Select
ActiveSheet.Paste
End Sub
ここで、一番最初にある「Sub」ですが、これは必ず「End Sub」で終わります。
この間がプログラムの記述を行う場所になります。
Subのすぐ後ろに書かれているのが「Macro1()」ですが、これは実行する関数名
を意味します。これは先ほど作成したマクロの名前です。
「'」(シングルクォーテーション)の部分はコメントなのでプログラムの説明
部分です。このように、マクロを作成した日時とユーザー名が記録されています。
Range("C1").Selectというのは、マウスで[C1]のセルが選択されたという意味です。
Selection.Cutというのは、切り取りが実行されたということです。
Range("A3").Selectというのは、マウスで[A3]のセルが選択されたということです。
ActiveSheet.Pasteというのは、そこで貼り付けが行われたということです。
このように、自分が行った操作が1つ1つコマンドの命令文になっているのが
VBAマクロです。
上のプログラムのC1の部分やA3の部分を別のセル番地に変更することもできます。
変更した場合も、保存という操作は必要ありません。
Visual Basic Editorの画面を終了する場合は、画面右上の×(閉じる)ボタンを
押すだけです。
そうすると、エクセルの画面に戻ってきます。
-----------------------------
マクロを勉強するコツ
-----------------------------
マクロは、このように自分でマクロの記録を行ってみて、それがどのようなコード
で書かれるのかをつぶさに観察してゆくことで覚えることができます。
もちろん、マウス操作だけではできないコマンドもありますが、それはそれで別に
勉強すればいいだけです。
------------------------------------
マクロを記録したファイルの注意点
------------------------------------
マクロを記述したファイルを保存し、それを再度開こうとすると、
新たにセキュリティの警告画面が起動時に現れるようになります。
これは、マクロというプログラムが危険なものだとエクセルが警告しているため
です。(自分で作成したマクロは絶対に危険じゃないので安心してください)
そこで、「マクロを有効にする」というボタンを押してください。
「マクロを無効にする」というボタンを押した場合は、マクロは動きません。
この無効にするというボタンを押しても、マクロが削除されるわけじゃないので
安心してください。
マクロを削除する方法もいっしょに覚えておきましょう。
(1)「ツール」→「マクロ」→「マクロ(M)...」をクリックします。
(2)削除したいマクロを選択して、「削除」ボタンを押します。
(3)「削除しますか」という画面が出てきますので、「はい」を押します
ところが、すべてのマクロを削除しているにもかかわらず、ファイルを開く
段階で「マクロを有効にするか無効にするか」の画面が出てくるんですね。
このような場合は、以下の処理を行ってください。
(4)「ツール」→「マクロ」→「Visual Basic Editor」をクリックします。
(5)左側の縦メニューの中の「Module1」と書かれた部分を右クリックします。
(6)そこで、「Module1の開放」を選択してください。
(7)「削除する前にModule1をエクスポートしますか?」という画面が出て
きます。
(8)ここで、「いいえ」ボタンを押すと削除が完了します。
(Module1を保存したい場合は「はい」を押して保存することもできます)
(9)閉じるボタンでVisual Basic Editorを終了します。
(10)エクセルを閉じると、「保存しますか」と聞かれたら「はい」ボタンを
押してください。
この方法で、マクロの完全削除が完了して次からはマクロの有効無効の画面が
起動時に出なくなります。
2007/5/20 第131号 反・資格宣言 copyright(c)NokoTech Lab. All Right Reserved.