- 締切済み
VB5からAccess97が起動できない
メイン部分をVB5、DBと印刷業務をAccess97で開発したアプリがOSをWindows95からWindows2000に変更したら、VBからAccessが起動しなかったり、VB終了後もAccessが残ったりします。今の仕様はAccessからVBメニューを起動し、印刷業務を選択した時にAccessをActiveにする設計になっています。VB5からAccess97の制御方法に問題があるようですが、対応方法が判りません。どなたかご存知の方は教えてください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- darksky
- ベストアンサー率66% (38/57)
VBもAccessもあまり使ったことがありませんが、標準の組み込み関数でダメなんですねぇ。 私が思いつくのは、Accessをオートメーション経由で操作するのと、WinAPIを使うことです。かなり変な方向ですが・・・ 'APIの定義 Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long 'Accessオブジェクトを格納する変数 Dim obj As Object 'オブジェクトの作成と表示 & ファイルの読み込み Set obj = CreateObject("Access.Application") obj.Visible = True obj.OpenCurrentDatabase "C:\NWIND.MDB" 'ウィンドウのアクティブ化 SetForegroundWindow obj.hWndAccessApp 'オブジェクトの終了と破棄 obj.Quit Set obj = Nothing この処理を組み合わせてフォームにボタンが2つあるアプリを作ってみました。 Option Explicit 'APIの定義 Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long 'Accessオブジェクトを格納する変数 Dim obj As Object Private Sub Command1_Click() Set obj = CreateObject("Access.Application") obj.Visible = True obj.OpenCurrentDatabase "C:\NWIND.MDB" End Sub Private Sub Command2_Click() SetForegroundWindow obj.hWndAccessApp End Sub Private Sub Form_Unload(Cancel As Integer) obj.Quit Set obj = Nothing End Sub ボタンCommand1をクリックすると、Accessの起動関連の処理 ボタンCommand2をクリックすると、Accessのアクティブ化 フォームを閉じると、Accessの終了関連の処理(Form_Unload) 他にいい方法があると思うんだけどなぁ・・・
- darksky
- ベストアンサー率66% (38/57)
どのように起動しているんですか?
補足
お世話になります。 はじめにAccess97のMDBを起動し、VB5のEXE(初期メニュー)を起動しています。 メニューの中の印刷業務を選択するとMDBをActiveにします。(AppActivate "印刷業務", False)