私は次のコードを持っています。ExcelとアクセスでVBAの奇妙さ
Sub Run_Queries_In_Access()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim acc As Object
Dim db As Object
Dim r As Long
Dim strDatabasePath As String
Set conn = New ADODB.Connection
'Set conn = CreateObject("Access.Application")
strDatabasePath = ThisWorkbook.Path & "\AI.mdb"
conn.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strDatabasePath & ";" & _
"Jet OLEDB:Database Password=xxx"
conn.Open
Set acc = New Access.Application
'acc.Visible = True
Set db = CurrentDb()
Application.Wait DateAdd("s", 2, Now) 'Wait for 2 seconds
acc.DoCmd.SetWarnings False
acc.DoCmd.OpenQuery "qry_Delete_ALLL"
Dim qry As Object
Set qry = db.QueryDefs("qry_HIST")
qry.Parameters(0) = Range("ASOFDATE")
qry.Execute
Application.Wait DateAdd("s", 2, Now) ' Wait for 2 seconds
Set qry = db.QueryDefs("qry_LIMIT_HIST") ' Run Append Query
qry.Parameters(0) = Range("ASOFDATE")
qry.Execute
acc.DoCmd.SetWarnings True
' SELECT ALL DATA
Set qry = db.QueryDefs("qry_TBL_DATA")
Worksheets("Impact Analysis").Range("A11:L5000").Clear
Set daoRcd = qry.OpenRecordset
ThisWorkbook.Worksheets("Impact Analysis").Range("A11").CopyFromRecordset daoRcd
conn.Close
Set conn = Nothing
End Sub
参考資料は次のように設定されています。
私は何度も繰り返しF8キーを押すことで、コードをステップ実行した場合、すべてが正常に動作します。ボタンクリックイベントでコードを起動すると、「実行時エラー462:リモートサーバーマシンが存在しないか、利用できません」と表示されますdbは実際には何も設定されていません!
私はそれが私のリファレンスの1、または私は私の変数のいずれかを宣言した方法に関係していることを推測しているが、それはただの推測です。私は確かに分かりません。どんなアイデアも大歓迎です!!ありがとう!!
'Application.Wait DateAdd(" s "、2、Now)'コマンドを使用する必要はありません。 – Gustav
デバッグ時に、 'Application.Visible = True'を設定すると、コードがデータベースを開くかどうかと、いくつかの余分なメッセージ/ポップアップ(' OpenCurrentDatabase'は間違ったパスワードでエラーを生成しません。 .DBEngine.OpenDatabase(Path、False、False、 "; PWD ="&password) 'データベースへの有効な接続を作成できるかどうかを確認するため、特にユーザーがパスワードを入力したときに間違ったパスでランタイムエラーが発生する) –
* dbは実際には何も設定されていません!! * - この時点ではまだ行が実行されていないので、変数はまだ設定されていません。 – Andre