运行时错误462使用Excel访问VBA

我尝试使用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对象(Set 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对象variables的不同方法。 testing这个精简过程(目的只是为了看看它是否消除了你当前的错误):

 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并closures它:

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