簡體   English   中英

Excel 和 Access 中 VBA 的奇怪之處

[英]Weirdness with VBA in Excel and Access

我有以下代碼。

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 實際上設置為空!!

在此處輸入圖片說明

在此處輸入圖片說明

我猜這與我的一個引用或我聲明一個變量的方式有關,但這只是一個猜測。 我不確定。 任何想法都會非常受歡迎!! 謝謝!!

你的代碼沒有任何問題。 在中斷點(即突出顯示的行)處,變量“db”未設置為任何內容。 轉到下一行,然后檢查 db 的值,它應該設置為數據庫的名稱。

至於手頭的實際問題,您可能需要查看此帖子:

遇到錯誤 462:通過 Excel VBA 使用 WORD 時,遠程服務器計算機不存在

即使它與 Word 打交道,它也可能為您提供有關它為什么會發生在您身上的線索。

還有這篇文章也可能有幫助:

第二次運行 VBA 代碼時出現“運行時錯誤 462:遠程服務器計算機不存在或不可用”

由於您沒有發布整個代碼,因此很難判斷可能是什么問題。 如果其中任何一項有幫助,請回來並在此處發表評論,解釋您做了什么以及如何修復它,以防其他人發生這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM