webdevqa.jp.net

アプリケーションのシェルを開いたままにせずにAccessデータベースを閉じるVBAコード

現在、MS Accessアプリケーションのシェルを開いたままにするApplication.Quitを使用しています。

ターゲットアプリケーションに対する呼び出し関数を処理した後、アプリケーションのすべてのインスタンスを開いたままにしておきます。特定のデータベースインスタンスが閉じている場合でも。

VBAを使用してデータベースの「シェル」アプリケーションウィンドウをプログラムで閉じるにはどうすればよいですか?

変数が作成される方法と、それを閉じる方法の例を次に示します。

Dim appAccess As New Access.Application

' Do stuff here...

appAccess.CloseCurrentDatabase
11
user110236

インスタンス変数に対してApplication.Quitを実行する必要があります。

例えば、

Dim appAccess As New Access.Application

' Do stuff here...

appAccess.Application.Quit
4

ドキュメントによると: Application.QuitDoCmd.Quit と同じことを行います。つまり

Quitメソッドは、Microsoft Accessを終了します。終了する前にデータベースオブジェクトを保存するためのいくつかのオプションの1つを選択できます。

パラメータacQuitSaveNoneまたは「オブジェクトを保存せずにMicrosoft Accessを終了する」2を使用して、それらのいずれかを呼び出すことができます。詳細を確認したら、Application.Quit なので DoCmd.Quit was Access 95の下位互換性のために追加されました (DoCmdオブジェクトに適用されるため、Quitメソッドの備考を参照してください。)これらのいずれかを実行しても、アクセス許可がある場合は、クローズ時に自動圧縮が行われます。砲弾の原因かもしれません。

それがうまくいかない場合は、ここでやや極端な提案をします。これをvbscriptファイルとして保存し、実際にAccessが完了したら呼び出します。これにより、圧縮や修復を行わずに、Windows PC上のすべてのMSAccessプロセスが終了します。

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
    ("SELECT * FROM Win32_Process WHERE Name = 'msaccess.exe'")
For Each objProcess in colProcessList
    objProcess.Terminate()
Next

[vbspath]を実際のパスに置き換えてスクリプトを呼び出す。パスにスペースがある場合は、必ず二重引用符を使用し、引用符で囲んでください。

Shell "cscript [vbspath]"
9
Daniel

私はいつもDoCmd.Quit acQuitSaveAll
これは、少なくともAccess 2000、2003、および2010で機能します(これが、私がseen機能するところです)。

6

Access.Quitが適しています。 Application.Quitの代わりに試してみませんか?

それでも解決しない場合は、問題が別の場所にある可能性があります。その場合は、このプロジェクトについて詳しく教えてください。

4
PowerUser

DoCmd.Quit acQuitSaveAll、とうとう働きました。以前に他のすべてのオプションを試しましたが、シェルはまだぶら下がっていました。

2
JAcob

どうやら終了後にcmd.exeシェルウィンドウを開いたままにし、MSACCESS.EXEプロセスをTaskListのバックグラウンドで実行しているということですか?そして、シェルはバックグラウンドで呼び出されていますか?

0
dmc2005

フォームをデザインビューに切り替えます。フォームのBorderStyleプロパティをNoneに設定します。 ビューメニューのフォームビューをクリックします。フォームのタイトルバーが完全に削除されていることに注意してください。

0
Adam Arian