2017-09-29 12 views
0

私は次のコードを持っています。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 

参考資料は次のように設定されています。

enter image description here

私は何度も繰り返しF8キーを押すことで、コードをステップ実行した場合、すべてが正常に動作します。ボタンクリックイベントでコードを起動すると、「実行時エラー462:リモートサーバーマシンが存在しないか、利用できません」と表示されますdbは実際には何も設定されていません!

enter image description here

enter image description here

私はそれが私のリファレンスの1、または私は私の変数のいずれかを宣言した方法に関係していることを推測しているが、それはただの推測です。私は確かに分かりません。どんなアイデアも大歓迎です!!ありがとう!!

+1

'Application.Wait DateAdd(" s "、2、Now)'コマンドを使用する必要はありません。 – Gustav

+2

デバッグ時に、 'Application.Visible = True'を設定すると、コードがデータベースを開くかどうかと、いくつかの余分なメッセージ/ポップアップ(' OpenCurrentDatabase'は間違ったパスワードでエラーを生成しません。 .DBEngine.OpenDatabase(Path、False、False、 "; PWD ="&password) 'データベースへの有効な接続を作成できるかどうかを確認するため、特にユーザーがパスワードを入力したときに間違ったパスでランタイムエラーが発生する) –

+3

* dbは実際には何も設定されていません!! * - この時点ではまだ行が実行されていないので、変数はまだ設定されていません。 – Andre

答えて

1

あなたのコードに問題はありません。ブレークポイント(強調表示している行)がある時点で、変数「db」は何も設定されていません。次の行にステップを進めてを入力し、次にをチェックします.dbの値を確認して、データベースの名前を付けてください。

手元に実際の問題として、あなたはこの記事をチェックすることもできます。これは、Wordを扱っていても

Running into Error 462: The remote server machine does not exist when working with WORD via Excel VBA

を、それはあなたに、なぜそれがあなたのために起こっているの手掛かりを与える可能性があります。同様に役立つことがあり、この記事もあります

"Run-time error 462 : The remote server machine does not exist or is unavailable" when running VBA code a second time

あなたの全体のコードを投稿していなかったので、それは問題があるかもしれないものを伝えるのは難しいです。これらのいずれかが役立つ場合は、戻ってきて、他の人に起こった場合に備えて、あなたがしたこととその修正方法を説明するコメントをここに投稿してください。

+0

私はちょうどコードを掲載しました。私はいくつかの小さな変更を加えましたが、何も重要ではありません。さて、私はこの行で 'SetWarningsが利用できないようになっています。' 'acc.DoCmd.SetWarnings False' – ryguy72

+0

@All、Accessで純粋にAccessの作業を行うための標準のVBAコードを作成しました。純粋にExcelのExcelのもの。 Excel/Accessの統合コンセプトは私にとってはうまく機能しませんでした。それ以上の時間を費やすことはできませんでした。私の会社のシステムはあまりにも古すぎると思う。私たちが使用する多くの技術は20歳以上です。シームレスに作業する必要があることは、あなたが何をしていても機能しません。みんな助けてくれてありがとう。 – ryguy72