[英]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.