#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に対して次のような一連の制御を行っています。
  1. もう1つのAccessを起動する
  2. db1.MDBを開く
  3. フォーム「frm受注」を開く
  4. フォーム「frm受注」の標題を"出荷処理中"に変更する
  5. フォーム「frm受注」のテキストボックス「出荷日」に今日の日付を設定する
  6. テキストボックス「出荷日」の背景色を赤に変更する
  7. フォーム「frm受注」のコマンドボタン[登録完了]をクリックした時の処理を行う

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
| Index | Prev | Next |

この情報は参考になりましたか?、問題は解決しましたか?、もしまだなら......
T'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします
 

Copyright © T'sWare All rights reserved