簡體   English   中英

運行時錯誤462使用Excel訪問VBA

[英]Run time error 462 Access VBA using Excel

嘗試使用Access VBA打開/操作Excel文件時,偶爾會出現運行時錯誤。 錯誤是

“運行時錯誤'462':遠程服務器計算機不存在或不可用

令人沮喪的是,該錯誤僅在某些文件中發生,而在其他情況下不發生在其他文件中。 這是我的代碼,該錯誤發生在workbooks.open(sPath)行:

    DoCmd.SetWarnings False

Dim oExcel As New Excel.Application
Dim oWB As Workbook
Dim oWS As Worksheet

Set oExcel = Excel.Application
Set oWB = oExcel.Workbooks.Open(sPath)
Set oWS = oWB.Sheets(1)

oExcel.Visible = False

    If fGetFileName(sPath) = "FILE_NAME1.xlsx" Then
        'oExcel.Visible = False
        oWS.Range("AW1").Value = "TEXT1"
        oWS.Range("AX1").Value = "TEXT2"
        oWS.Range("AY1").Value = "TEXT3"
    End If

oWB.Save
Debug.Print "Amended " & sPath

oWB.Close False
Set oWB = Nothing

oExcel.Quit
Set oExcel = Nothing

DoCmd.SetWarnings True

經過一番在線研究之后,我發現此文檔很好地概述了該錯誤: https : //anictteacher.files.wordpress.com/2011/11/vba-error-462-explained-and-resolved.pdf

使用該文檔中的邏輯,錯誤是:

在每種情況下都不能通過引用Office對象來完全限定對象

但是,我修改了發生錯誤的行以專門引用Excel對象(設置oWB = oExcel .Workbooks.Open(sPath))。 嘗試將維度聲明為對象,並在每次提及工作簿/工作表時都引用oExcel。 有任何想法嗎? sPath是否需要更好的資格?

您將oExcel聲明為新的Excel.Application

Dim oExcel As New Excel.Application

這意味着在您的代碼的后面, Set oExcel = Excel.Application並不是真正有用的……因為oExcel已經是對Excel.Application的引用。 添加一個MsgBox來演示那時的oExcel是什么...

MsgBox "TypeName(oExcel): " & TypeName(oExcel)
'Set oExcel = Excel.Application

為您的Excel對象變量考慮另一種方法。 測試此簡化的過程(目的只是查看它是否消除了您當前的錯誤):

Dim oExcel As Excel.Application
Dim oWB As Excel.Workbook

DoCmd.SetWarnings True

MsgBox "TypeName(oExcel): " & TypeName(oExcel)
Set oExcel = New Excel.Application
MsgBox "TypeName(oExcel): " & TypeName(oExcel)
Set oWB = oExcel.Workbooks.Open(sPath)
oWB.Close False
Set oWB = Nothing
oExcel.Quit
Set oExcel = Nothing

另外,請使用WorkSheet並關閉它:

Set oWS = oWB.WorkSheets(1)
' snip.
oWB.Save
Set oWs = Nothing    
oWB.Close False
Set oWB = Nothing

暫無
暫無

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

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