6.VBA入門(画像をクリックすると大きくなります)
EXCEL等で内蔵関数以外の複雑な処理を実行したいと思われたことはないでしょうか。
ツール−マクロ−新しいマクロの記録である程度は自動的に作成してくれます。
作成されたコード(マクロ)はツール−マクロ−Visual Basic Editorで表示できます。
(もしも表示されなければ表示−コードで表示できます。)
ここに作成されたコードはVBA(Visual Basic Application)と呼ばれWindowsの代表的プログラム言語VB(Visual Basic)と高い互換性を持っています。
VBAはマクロの記録で作成されるだけでなく自分でも簡単に作成できます。
VBを覚えることにより、WindowsのプログラムからASPと呼ばれるWebアプリケーションそしてOFFICEアプリケーションまで自由に作成できるようになります。
しかもVBの製品版を購入しなくても多くのパソコンで動いているMS OfficeのVBAでかなりのことを実行することができます。腕を磨いて限界を感じてからVBを購入しても問題ないと思います。
ここではこのホームページに公開されているアプリケーションの動作を通してVBAについて学んでいきたいと思います。
注意:
ここに書かかれた内容は個人的な感想や実験結果であり実際と異なることがあります。ここに書いてあるとおり実行しても動作しなかったり、重大な障害を生じる場合があります。個人の責任で試されるようお願いします。
0.実行される前に
あらかじめMS Office 97のオリジナルCD-ROMを用意して下さい。
プログラムを作成される場合はOffice CD-ROMのvaluepack\morehelp\にあるVBA対応のヘルプファイルをOfficeのインストールされているドライブのProgram files\microsoft office\office\フォルダにコピーすることをお勧めします。詳しくはオフィスのバリューパックについている解説を読んで下さい。
1.最初にマクロを実行してみましょう。
VB・VBAのページからolepaste.lzhをダウンロードして圧縮ファイルを解凍して下さい。
いくつかファイルができますが、とりあえずRange.xlsを開いてみて下さい。
はじめてマクロを使用する場合次のようなマクロ使用に伴う警告が表示されます。
マクロを頻繁に使用する場合で煩わしい場合はマクロを含むブックを開くときはこのダイアログを表示するチェックボックスのチェックをはずすと次の起動時からは表示されません。ただし、最近はやっているVBAマクロウィルスに感染する恐れがあります。ウィルス対策ソフト等がインストールされていれば感染の可能性は低くなります。
次にマクロを有効にするで開いて下さい。次のようなシートが開かれるはずです。
再びマクロ警告ダイアログを表示するにはツール−オプションー全般タブを選択後マクロウィルスから保護するチェックボックスをオンにしておきます。
このシートにはマウスで選択した領域(反転表示)に対する処理を行うプログラムと
独自の関数を組み込み内蔵関数のように使うプログラムの2つが既に作成されてます。
2つのプログラムとも同じような働きをしますが使用方法が異なります。
→選択領域に対し文字色が黒以外の数字の合計を求めます。
まず、選択領域に対する処理を実行してみましょう。
マウスをB5のセルに移動して左ボタンをクリックしB15までを選択します。(上記図)
マウスで領域を設定後 ツール−マクロ−マクロ−合計を選択後実行を押してみて下さい
メッセージボックスに赤色の数字の合計15が示されます。OKを押すとマクロが終了します。
マクロが停止しない場合はCTRLキーを押しながらPauseキーを押します。時間のかかる処理を実行中の場合止まらない時があります。シートを選択できるのに何の命令も実行できない場合などです。この場合終了するかエラーになるのを待つしかありません。
次に独自定義関数の機能を調べてみましょう。
セルのD14に既に記入済みですが、=sum_unblack(D5:D13)と書いてリターンキーを押します。
赤の数字の合計16が表示されます。これは組み込み関数と同様に使えます。
個々のマクロの書き方や動作については詳しくは解説しません。しかし、それぞれのマクロには分かりやすい説明が書いてあるので自分の思うような命令に置き換えて使用できると思います。またVB・VBA掲示板にも応用例が書いてあります。
2.マクロをメニューやボタンに登録してみましょう。
VB・VBAのページからolepaste.lzhをダウンロードして圧縮ファイルをLHA等で解凍して下さい。
いくつかファイルができますが、とりあえずOlepaste.xlsを開いてみて下さい。
画像をクリックして画像をクリップボードへコピーします。
貼り付ける領域を選択しツール-マクロ-マクロ-olepasteを実行します。
領域いっぱいに縦横比を維持しながら拡大・縮小されて画像が貼り付きます。
画像以外のデーターを貼り付けようとするとエラーになります。
このマクロを使うと簡単に貼りたいところに写真や画像を貼りつけることができます。
一つのセルに貼り付けると画像に対して並べ代えも実行できます。
しかしツール-マクロ-マクロ-olepasteでいちいち実行していたのでは大変です。
それではボタンにマクロを登録してみましょう。
表示−ツールバー−ユーザー設定を選択します。
新規作成−ユーザー設定1−OKを選択します。小さなツールバーがでてきます(右下)
このツールバーをマウスでクリックしたまま空いているツールバーに放します。
コマンドタブ−マクロ−ユーザー設定ボタンを先ほど移したツールバーにマウスでドラッグドロップします。
次に今貼り付けたボタンを右クリックしマクロの登録でolepasteを登録します。
ボタンイメージの編集や変更で好きなデザインに変更できます。スタイルやテキストなども試してボタンやテキスト表示などの変化を試してみましょう。
イメージのコピーや貼り付けで他のアプリケーションのボタンイメージもコピーできます。
以上で終了です。さっそく画像をコピーして領域を選択してボタンを押してみましょう。
たくさん貼り付けた画像を一気に消去したいならole_deleteを実行するとすべて消えます。
ただし、このマクロはやり直しには対応してませんので誤操作のないように注意します。
不要なボタンなどは右クリックしてからツールバー以外の領域にドラッグドロップしますと消えます。
3.新しいマクロを作ってみましょう。
作成されているマクロはツール−マクロ−Visual Basic Editorで表示できます。
(もしも表示されなければ表示−コードで表示できます。)
プロジェクトウィンドーから右ボタン−挿入−標準モジュールで新規モジュールを追加します。
この追加されたモジュールにプログラムを書きます。プログラムの書き方は後日別なページで解説しますのでここでは述べません。新規に作成したつもりでプログラムを読み込んでみましょう。
VB・VBAのページからtaiin.txtをダウンロードしてワードパッドなどで開いて全文を標準モジュールに貼り付けます。(taiin.txtは太陽暦から太陰暦および大安・仏滅等の六曜を計算する関数です)
またはプロジェクトウィンドーから右ボタン−ファイルのインポートでも実行できます。
さっそく実行してみましょう。セルA1に1999/1/1を入力します。セルB1に=taiin(A1)と入力すると
赤口(11/14)と表示されます。表示されているのは六曜と太陰歴の月日です。実行するシートがマクロと違う場合は=TAIIN.xls!taiin(A1)マクロシート名!関数と書きます。関数の貼り付けボタンを用いると楽でしょう。
以上で入門編を終了します。VBAと実行方法について理解して頂けたでしょうか。
ワード用のペースト用関数等も組み込んでみて下さい。
マクロを使用しないときはウィルスから保護するためにツール−オプションー全般タブを選択後マクロウィルスから保護するチェックボックスをオンにしておきます。