#437 起動時の設定をVBAから行うには? データベース、VBA

Accessのデータベースに対して起動時の設定を行うには、[ツール]-[起動時の設定]メニューによって表示されるダイアログでその入力を行います。
起動時の設定ダイアログ

しかし、アプリケーションのタイトルなどがあらかじめ標準モジュールに定数として宣言されているような場合、わざわざマニュアルで同じものを設定するのではなく、VBAからその定数値を参照して起動時の設定に反映させたい場合もあります。
そのような場合、つぎのようなコードを実行することによって、起動時の設定をVBAから行うことができます。

Public Sub SetStartUp()

  Dim dbs As Database
  Dim prp As Property
  Dim strPrpName As String
  Dim varPrpValue As Variant

  On Error GoTo Err_Handler

  Set dbs = CurrentDb
  With dbs
    'タイトル
    strPrpName = "AppTitle"
    varPrpValue = "マイ アプリケーション"
    .Properties(strPrpName) = varPrpValue

    'アイコン
    strPrpName = "AppIcon"
    varPrpValue = "C:\MYAPP.ICO"
    .Properties(strPrpName) = varPrpValue

    'スタートアップフォーム
    strPrpName = "StartUpForm"
    varPrpValue = "受注コード一覧"
    .Properties(strPrpName) = varPrpValue

  End With

  Exit Sub

Err_Handler:
  If Err.Number = 3270 Then
    'プロパティが見つからないときはそのプロパティを作成する
    '(これは起動時の設定がまだされていないときに発生します)
    Set prp = dbs.CreateProperty(strPrpName, dbText, varPrpValue)
    dbs.Properties.Append prp
    Resume Next
  End If
  Exit Sub

End Sub


実行後の”起動時の設定”
実行後の起動時の設定

このサンプルコードでは、起動時の設定のうち、「アプリケーションタイトル」、「アプリケーションアイコン」、「フォーム/ページの表示(スタートアップフォーム)」の3つの設定を行っています。
たとえば「アプリケーションタイトル」を設定したい場合、「dbs.AppTitle」のような記法でプロパティを参照することができませんので、「dbs.Properties("AppTitle")」のような書き方で設定対象のプロパティを記述します。「アプリケーションタイトルならAppTitle」というように、あらかじめデータベースオブジェクトのプロパティとして決められているものです。
一方、起動時の設定の場合、すでに何らかの値がマニュアルで登録されていないと、「dbs.Properties("AppTitle")」などのコードを実行したときにエラーが発生します。起動時の設定が未設定の状態では、”プロパティ値が空の状態”というのではなく、”AppTitle”というプロパティ自体がまだオブジェクトに存在していないためです。そのため、上記のコードではエラートラップを行い、そこでエラーが発生したらCreatePropertyメソッドとAppendメソッドを使い、プロパティ自体の生成と追加を行うようにしています。
なお、VBAから起動時の設定を行っても、実際には次回起動時から有効となることに注意してください。

※関連Tips「#138 AccessのタイトルバーをVBAから変更する方法」

| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved