Access VBAについてお探しですね。
広告
Access VBA入門ガイド|マクロとの違いから最初の「Hello World」まで
Microsoft Accessって、大量のデータを管理するのにすごく便利なソフトですよね。
でも、毎日同じようなデータ入力やレポート作成をしていて、「この作業、もっと楽にできないかな…」って思ったことありませんか?マクロ機能を使ってみたけど、「やりたいことがどうしても実現できない!」と壁にぶつかったら、それはAccess VBAを始めるベストタイミングです。
VBAを覚えると、時間のかかるデータ処理が一瞬で終わったり、ExcelやOutlookと連携させたりと、Accessでできることがグッと広がります。
この記事では、プログラミングが初めての人でも安心して始められるように、マクロとVBAの違いから、実際に「Hello World」というプログラムを動かすところまで、丁寧に説明していきますね。
Access VBAって何?マクロとどう違うの?
Accessで作業を自動化する方法には、「マクロ」と「VBA」の2種類があります。
最初はどっちを使えばいいのか迷っちゃいますよね。
まずマクロですが、これは用意されたメニュー(「クエリを開く」とか「ウィンドウを閉じる」とか)から選んで組み合わせるだけで、自動化ができる便利な機能です。
プログラミングの知識がなくても直感的に使えるので、簡単な作業を自動化するにはピッタリなんです。
でも、もっと本格的なシステムを作ろうとすると、マクロだけではちょっと物足りなくなってきます。
たとえば「エラーが起きたときにどうするか」とか、「複雑な条件で処理を分ける」とか、「何千件ものデータを1つずつ処理する」といったことは、マクロだけでは難しいんです。
そこで登場するのがVBAです。
VBAはMicrosoft Officeに入っているプログラミング言語で、マクロではできない細かい制御ができるようになります。
エラーが起きたときに分かりやすいメッセージを出したり、エラーの記録を残したり、条件によって処理を何パターンにも分けたり…。
さらに、AccessからExcelファイルを作ってメールで送る、なんてこともVBAなら簡単にできちゃいます。
これからAccessで本格的に業務を効率化していくなら、簡単な部分はマクロを使いつつ、メインの処理はVBAで作るのがおすすめです。
VBAは覚えるのに少し時間がかかりますが、その分できることがグンと増えます。
「マクロは手軽な自動化」「VBAは本格的なシステム作り」って感じで覚えておくといいですよ。
VBAを書く場所「VBE」を使ってみよう
Access VBAを始めるのに、特別なソフトをインストールする必要はありません。
Accessが入っていれば、VBAを書くための「VBE(Visual Basic Editor)」もすでに使える状態になっています。
まずはAccessを開いて、画面上部のリボンメニューに「開発」タブがあるか確認してみてください。
もし見当たらない場合は、リボンの何もないところを右クリックして「リボンのユーザー設定」から、「開発」にチェックを入れれば表示されます。
準備ができたら、「開発」タブの「Visual Basic」ボタンをクリックするか、キーボードで「Alt + F11」を押してみましょう。
これでVBEの画面が開きます。
VBEの画面にはいくつかウィンドウがありますが、最初に覚えるのは「プロジェクトエクスプローラー」と「コードウィンドウ」の2つだけで大丈夫です。
画面左側の「プロジェクトエクスプローラー」は、今開いているAccessファイルの中身(フォームとかレポートとか)をツリー状に表示してくれる場所です。
そして画面の真ん中にある大きなスペースが、実際にプログラムを書く「コードウィンドウ」になります。
VBAを書く場所には「標準モジュール」と「フォームやレポートに関連したモジュール」の2種類があります。
フォームのボタンを押したときの動作はフォームモジュールに書きますが、最初のうちや汎用的な処理には「標準モジュール」を使うのが一般的です。
標準モジュールを追加するには、VBEのメニューから「挿入」→「標準モジュール」をクリックします。
すると「Module1」という名前で新しいモジュールが追加されて、真っ白なコードウィンドウが開きます。
これでプログラムを書く準備完了です!
さっそく「Hello World」を表示してみよう
準備ができたら、プログラミングの定番「Hello World」を表示するプログラムを作ってみましょう。
先ほど作った標準モジュールのコードウィンドウに、次のコードを入力してください。
VBAでは「Sub」で始まって「End Sub」で終わるひとかたまりを「プロシージャ」と呼びます。
これが1つの処理の単位です。
すべて半角英数字で入力しますが、ダブルクォーテーション(”)の中身だけは日本語でも大丈夫ですよ。
“`vba
Sub HelloWorld()
MsgBox “Hello World”
End Sub
“`
このコードの意味はとってもシンプル。
「HelloWorld」という名前の処理を始めて、メッセージボックス(MsgBox)で「Hello World」という文字を画面に表示して、処理を終わる、という流れです。
入力できたら、実際に動かしてみましょう。
コードのどこかにカーソルを置いた状態で、キーボードの「F5」キーを押すか、VBEの上にある再生ボタン(▶マーク)をクリックします。
すると、小さなウィンドウが表示されて「Hello World」と出てくるはずです。
これがあなたの書いた最初のプログラムが動いた瞬間です!
もう1つ、別の表示方法も覚えておくと便利です。
「イミディエイトウィンドウ」というものを使う方法です。
メッセージボックスだといちいちOKボタンを押さないといけませんが、イミディエイトウィンドウならログみたいに文字が表示されます。
コードを `Debug.Print “Hello World”` に書き換えて実行してみてください。
画面下の「イミディエイトウィンドウ」(表示されてなければ「Ctrl + G」で表示)に文字が出てきます。
この `Debug.Print` は、プログラムの途中経過をチェックするときによく使うので、今のうちに慣れておくと後々楽になりますよ。
Access VBAを学ぶときのポイント
プログラムを動かすことができたら、本格的に学ぶ前に、Access VBAならではの特徴を知っておきましょう。
もしExcel VBAの経験がある人は、ちょっと違うなと感じるかもしれません。
Excel VBAが主に「セル」や「シート」を扱うのに対して、Access VBAは「レコード(行)」や「フィールド(列)」、「クエリ」や「フォーム」といったデータベース特有のものを扱います。
Excelとは考え方が違う部分があるので、Accessならではのやり方を素直に学んでいくのがコツです。
Access VBAを効率よく学ぶために、次の3つを覚えておくといいですよ。
* **DoCmdオブジェクト**: マクロでやっていた「フォームを開く」とか「レコードを保存」といった操作は、VBAでは `DoCmd.OpenForm` みたいに `DoCmd` という命令で実行します。
これを覚えるだけで、マクロでやってたことの多くをVBAに置き換えられます。
* **DAO / ADO**: データの追加・更新・削除をコードで直接やるための技術です。
ちょっと難しくなりますが、これを覚えると「レコードセット」という仕組みを使って、データを1件ずつ自由に操作できるようになります。
* **SQLとの連携**: VBAの中でSQL(データベース言語)を組み立てて実行すると、複雑な集計や大量データの更新が一瞬でできるようになります。
初心者が挫折しないための一番のコツは、「最初から全部VBAで書こうとしないこと」です。
Accessにはもともと強力なクエリ機能があります。
複雑なデータ抽出や計算はクエリで作っておいて、VBAからは「そのクエリを実行するだけ」というシンプルな形にするのが、一番効率的でメンテナンスもしやすいんです。
まずは「フォームのボタンを押したらメッセージを出す」とか「特定の条件なら処理をストップする」みたいな小さな制御から始めて、少しずつできることを増やしていきましょう。
焦らず、実際に手を動かしながらやっていくのが、Access VBAをマスターする近道です。
データベースを自由に操れるようになると、すごく楽しいですよ!
広告
