#180 | もう1つのAccessのフォームやコントロールを制御する方法 | VBA | |
「#179 もう1つのAccessデータベースを開く方法(COM版)」によってもう1つのAccessを起動した場合、もう1つのAccessを表すオブジェクト変数"acApp"を操作することによって、もう1つのAccessをさまざまにコントロールすることが可能になります。 変数"acApp"は、もう1つのAcccessという"オブジェクト"を表す変数です。Accessオブジェクト(VBAでは"Application"オブジェクトとして扱います)の下位には、さまざまなオブジェクトやメソッド、プロパティがあります。各フォームやレポートも下位に属するオブジェクトの1つです。また、「Docmd」もApplicationオブジェクトの下位のオブジェクトです(例えば、"Docmd.OpenForm"は"Application.Docmd.OpenForm"の省略形です)。そして、それぞれのフォームはまたその下位にテキストボックスなどのオブジェクトを持っていますし、メソッド・プロパティも持っています。さらの個々のテキストボックスもまた下位にメソッド・プロパティを持っています。このようにして、変数"acApp"を最上位とするオブジェクト・メソッド・プロパティの階層構造を使いこなすことによって、もう1つのAccessのフォームやコントロールを自由に制御することできます。 以下に示すサンプルコードでは、コマンドボタン「cmdExeAccess」のクリックによって、もう1つのAccessに対して次のような一連の制御を行っています。
Option Compare Database
Option Explicit Private acApp As Access.Application 'もう1つのAccessのインスタンス Private Sub cmdExeAccess_Click() '[Accessを開く]ボタンクリック時 'もう1つのAccessを起動する Set acApp = New Access.Application With acApp 'もう1つのAccessを見えるようにする .Visible = True 'db1.MDBを開く .OpenCurrentDatabase "C:\My Documents\db1.MDB" 'フォーム「frm受注」を開く .DoCmd.OpenForm "frm受注" '先頭のドット(.)に着目 With .Forms!frm受注 '「frm受注」の標題を"出荷処理中"に変更する .Caption = "出荷処理中" With !出荷日 'テキストボックス「出荷日」に今日の日付を設定する .Value = Date 'テキストボックス「出荷日」の背景色を赤に変更する .BackColor = vbRed End With 'コマンドボタン[登録完了]をクリックした時の処理を行う .登録完了_Click '先頭のドット(.)に着目 End With End With End Sub Private Sub Form_Close() 'フォームの閉じる時 'もう1つのAccessを起動せずに閉じる場合の対処 On Error Resume Next 'もう1つのAccessを終了 acApp.Quit 'インスタンスを破棄 Set acApp = Nothing End Sub ★注意★ 上記コードを実行するにあたって、こちらのAccess側からもう1つのAccessの[登録完了]のクリック時イベントプロシージャを実行させるためには、そのイベントプロシージャをPublicで宣言しておく必要があります。 Public Sub 登録完了_Click()
Beep MsgBox "登録完了しました!" DoCmd.Close acForm, Me.Name End Sub |
|||
|
Copyright © T'sWare All rights reserved |