Excel自动化错误#1004对象'〜'的方法'〜'失败

使用VB6做一些Excel自动化我有这个代码在过去5年以上运作良好。 它基本上遍历加载项,如果它检测到一个特定的一个,然后它发出一个消息给用户。

Public xlapp As Excel.Application Set xlapp = GetObject(, "Excel.Application") Dim CurrAddin As Office.COMAddIn For Each CurrAddin In xlApp.COMAddIns 2 LogMe "==>COM Add-In: " & CurrAddin.Description 'detect the PowerPivot add-in 3 If CurrAddin.Description = "PowerPivot for Excel" And CurrAddin.progID = "Microsoft.AnalysisServices.Modeler.FieldList" Then 4 LogMe "==>COM Add-In 'PowerPivot for Excel is set to load=" & CurrAddin.Connect 5 If CurrAddin.Connect = True Then 6 MsgBox "The PowerPivot Add-in for Excel is installed and set to load.", vbExclamation End If End If 9 Next CurrAddin Error in MyAddInEnumerator 1004 Method '~' of object '~' failed Line: 2 

在这个例程中放置一个错误捕获器之后,debugging表明它发生在第2行。交互式debugging显示这真的在上面的行中。 CurrAddin似乎已经初始化,所以问题是与xlApp.COMAddIns。

我有许多机器运行在32位Excel 2010的同一版本上的这个应用程序。这些机器运行Win7x86和Win7x64,除了一个运行良好,没有错误。 我只是不知道为什么这一台机器轰炸使用对象“COMAddIns”。

尝试在访问对象之前testing该对象:

 For Each CurrAddin In xlApp.COMAddIns 'Add this line below and the End If If Not IsNull(CurrAddin) Then LogMe "==>COM Add-In: " & CurrAddin.Description 'detect the PowerPivot add-in If CurrAddin.Description = "PowerPivot for Excel" And CurrAddin.progID = "Microsoft.AnalysisServices.Modeler.FieldList" Then LogMe "==>COM Add-In 'PowerPivot for Excel is set to load=" & CurrAddin.Connect If CurrAddin.Connect = True Then MsgBox "The PowerPivot Add-in for Excel is installed and set to load.", vbExclamation End If End If End If Next CurrAddin 

空引用或未声明的对象可能是1004错误的原因,正如在其他一些SO文章中所述:

VBA Excel:运行时错误'1004'object'_Worksheet'faile的方法'范围'

破解Excel VBAmacros运行时错误'1004':对象'_Global'的方法'范围'失败

object'_Global的错误'1004'方法'范围'失败

HTH。 这可能仍然会检测到你有加载项。 否则,这可能是一个重新安装问题,在这里: http : //www.xtremevbtalk.com/996711-post4.html 。