Accessの「魂」に触れる:CurrentDb.Propertiesでデータベースを自在に操る極意
こんにちは。Accessの深淵へようこそ。
これまでマクロの記録や、用意されたボタンをポチポチ押すだけの開発から卒業したいと考えているあなたへ。今日は、Access VBAという「魔法の杖」を使って、データベースそのものの設定をプログラムから書き換える、少しだけ高度で、しかし非常に強力なテクニックをお伝えします。
Accessにおける`CurrentDb.Properties`は、いわば「データベースの設計図そのものを書き換えるインターフェース」です。これを知れば、起動時の画面を自由に変えたり、アプリケーションの顔(タイトル)を動的に制御したりと、一気にプロフェッショナルなツールへと進化させることができます。
—
1. CurrentDbとは何か?:データベースの支配権
まず、`CurrentDb`という言葉の正体を理解しましょう。
VBAから見て、`CurrentDb`は「現在開いているデータベースの接続オブジェクト」を指します。いわば、あなたとAccessデータベースとの間にある「直通回線」です。
この回線を通じて、データベースの構造(テーブル、クエリ、フォームなど)や、設定(プロパティ)に直接命令を下すことができるのです。
—
2. 実践:アプリケーションのタイトルと起動フォームを書き換える
現場で最もよく使う「タイトルバーの変更」と「起動フォームの設定」を例に見ていきましょう。
コード例:設定を一括更新する
このプロシージャを標準モジュールに貼り付けて実行してみてください。
Public Sub ConfigureDatabaseSettings()
Dim db As DAO.Database
Dim prop As DAO.Property
‘ 現在のデータベースへの参照を取得
Set db = CurrentDb
‘ プロパティを変更する際の「お約束」:エラーハンドリング
On Error Resume Next
‘ 1. アプリケーションのタイトルを変更する
‘ “AppTitle” はデータベースのプロパティ名
db.Properties(“AppTitle”) = “【極限業務管理システム v1.0】”
‘ もしプロパティが存在しない場合は作成する
If Err.Number = 3270 Then
Set prop = db.CreateProperty(“AppTitle”, dbText, “【極限業務管理システム v1.0】”)
db.Properties.Append prop
End If
‘ 2. 起動フォームを設定する
‘ “StartupForm” は起動時に開くフォームを指定するプロパティ
db.Properties(“StartupForm”) = “frm_MainMenu”
‘ 変更をシステムに反映させる(重要!)
Application.RefreshTitleBar
On Error GoTo 0
MsgBox “設定が正常に更新されました!”
End Sub
このコードの「ここが肝」
- エラーハンドリング(3270エラー):
Accessのプロパティは、初期状態では存在しないことがあります。存在しないプロパティにアクセスしようとするとVBAはエラーを吐くので、`Err.Number = 3270`(プロパティが見つかりません)を検知して、`CreateProperty`で新しく生成するというのが、熟練エンジニアの流儀です。
- RefreshTitleBar:
プロパティを書き換えても、画面上の見た目がすぐ変わるとは限りません。この命令を打つことで、Accessに「今の設定を画面に反映しろ!」と念押しします。
—
3. なぜ「Properties」を触るのが怖いのか?(陥りやすい罠)
初心者の多くがここで躓くポイントが2つあります。
1. データ型の一致:
プロパティには「数値型」「文字列型」などの厳格なルールがあります。`StartupForm`にはフォーム名を文字列で入れなければなりませんが、`StartupShowStatusBar`のようなフラグ系は「真偽値(True/False)」を要求します。ここを間違えると実行時エラーになります。
2. 即時反映されない:
VBAで書き換えた直後に、Accessの「ファイル > オプション」画面を開いても、古い設定のまま表示されることがあります。これは内部キャッシュが原因です。一度VBAを抜けてから確認するか、前述の`RefreshTitleBar`を適切に使用してください。
—
4. さらなる高みへ:なぜこの知識が重要なのか
あなたが作成したAccessツールを誰かに渡すとき、毎回「ファイル > オプションから起動フォームを設定してください」と説明しますか?
そんな時代はもう終わりです。
今回学んだ`CurrentDb.Properties`を使えば、初回起動時に自動的に環境を整え、タイトルバーを社名入りにし、ユーザーのPC環境に合わせて最適な設定を自動構成する「自己修復型ツール」が作れます。
これが、マクロの記録だけを使っている人と、Accessの心臓部を掌握しているエンジニアの決定的な差です。
—
今日のまとめ:Accessエンジニアへの第一歩
- `CurrentDb`はデータベースへの「直通回線」である。
- `Properties`はデータベースの「設定ファイル」である。
- 存在しないプロパティは`CreateProperty`で生み出すのがプロの作法。
まずは、上記のコードを使って、自分のAccessファイルのタイトルバーを自由自在に変えてみてください。その瞬間に、あなたのAccess開発者としての「視界」が変わるはずです。
何か不明点があればいつでも聞いてくださいね。ここをクリアすれば、あなたはもう「Access初心者」ではありません。次は、テーブルの構造を動的に書き換える領域でお会いしましょう。
