2016-05-06 43 views
2

Excelを自動化するためにVB6を使用していますが、このコードは過去5年以上にわたってうまく機能しています。基本的にはアドインを繰り返し実行し、ある特定のものが検出された場合は、ユーザーにメッセージを発行します。デバッグは、それがライン2.インタラクティブデバッグに起こると言い、このルーチンでエラーキャッチャーを入れた後Excelオートメーションエラー#1004オブジェクト '〜'のメソッド '〜'が失敗しました

 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 

が、これは上記の行に本当にあることを示しています。 CurrAddinは既に初期化されているようですので、xlApp.COMAddInsで問題が発生しています。

私は同じバージョンの32ビットExcel 2010を搭載した多くのマシンでこのアプリケーションを実行しています。これらのマシンはWin7x86とWin7x64を実行しますが、1つを除くすべてがエラーなしで正常に動作します。私は、なぜこの1つのマシンがオブジェクト "COMAddIns"を使用して爆撃するのか理解できません。

+0

参照はVB6アプリケーションにあり、EXEにコンパイルされます。誰もがサーバーからアプリを実行し、同じことに触れている。他に何かを意味しない限り。 – sinDizzy

+0

私は参照してください。これをチェックしてください。おそらくそれは役に立ちます:https://support.microsoft.com/en-us/kb/178510 – ib11

+0

ええ、その記事と約10の他のものを見ました。これは、同じバージョンのExcelを持つ他の15台のマシンで動作する理由を説明していません。私はxlapp変数をグローバル変数として1回だけ設定し、すべての変数は完全修飾されているようです。しかし、私のコードをもう一度見てみましょう。 – sinDizzy

答えて

0

はそれにアクセスする前にオブジェクトをテストしてみてください:

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 

null参照または宣言されていないオブジェクトは、他のいくつかのSOの記事のように、1004のエラーの原因である可能性があり:

VBA Excel: Run-time error '1004' Method 'Range' of object'_Worksheet' faile

Broken Excel VBA Macro Run-time error '1004': Method 'Range' of object '_Global' failed

Error '1004' Method 'Range' of object'_Global failed

HTH。これはおそらくあなたを検出するでしょうdoはアドインを持っています。それ以外の場合は、おそらくここに再インストールの問題:http://www.xtremevbtalk.com/996711-post4.htmlです。

+0

上記と同じです。 xlApp.COMAddInsへの呼び出しが失敗したという記述ではありません。それは困惑している。 – sinDizzy

+0

OK。私は今、上記のコメントを整理します。私は再インストールしようとします。明らかにいくつかのライブラリはオフになっています。私はそれをトレースするアイデアはこれ以上持っていません。これはヌルオブジェクトのテスト以外のWeb上のこのエラーコードに関する最善の提案です。あなたは 'CurrAddin'のヌルをテストすることができます:' Not IsNull(CurrAddin)Then'これはあなたが特定のものを探しているときにおそらく有効になるでしょう。 – ib11

+0

ループを取り除き、xlApp.COMAddIns.Updateという1つのステートメントを作成すると、そこでは失敗します。どうやらCOMAddInsはそのマシンで利用できません。私は彼にインストールを修復させるかもしれません。 – sinDizzy

関連する問題