3

Excelに接続してブックをロードするVB6/VBAアプリケーションがあります。それは何年もの間素晴らしい働きをしてきました。現在、Excel 2010にアップグレードしており、いくつかの問題が発生しています。トラブルシューティング後、PowerPivot COMアドインをオフにすると、プロセスは以前と同じように問題なく実行できるようです。これの正確な原因を探している間、自分のアプリのためだけにそのアドインをオフにできるかどうかを確認したかったのです。私は次のようにExcelをロードします:

 Set xlApp = CreateObject("Excel.Application")
 xlApp.Visible = False

テスト用のExcelブックには、アドインを一覧表示するためのこのコードがあります。ただし、リストに表示されるのは「Excelアドイン」のみです。「COMアドイン」は表示されません。

Sub ListAddIns()
  Dim CurrAddin As Excel.AddIn
  Dim r As Long
  Dim ws As Excel.Worksheet

  Set ws = ActiveSheet
  Cells.Select
  Selection.ClearContents
  Range("A1").Select

  r = 1
  For Each CurrAddin In Excel.Application.AddIns
      ws.Cells(r, 1).Value = CurrAddin.FullName
      ws.Cells(r, 2).Value = CurrAddin.Installed
      ws.Cells(r, 3).Value = CurrAddin.Name
      ws.Cells(r, 4).Value = CurrAddin.Path
      ws.Cells(r, 5).Value = CurrAddin.progID
      ws.Cells(r, 6).Value = CurrAddin.CLSID

      r = r + 1
  Next CurrAddin

  MsgBox "Its done.", vbInformation
End Sub

COMアドインを参照する方法を見つけたら、それがアプリのExcelオブジェクトに読み込まれないようにする必要があります。ヘルプや提案は大歓迎です。

ありがとう

4

2 に答える 2

1

これを実現するための「きれいな」方法があるかどうかはわかりませんが、「汚い」方法は、Excelを起動する前に、アドインのレジストリ設定を変更して、読み込まれないようにすることです。これは、HKCU \ Software \ Microsoft \ Office \ Excel \ AddIns \\ LoadBehaviorを0に設定することで実行できます(自動的に読み込まれません)。
ただし、これは、ユーザーがそれを受け入れることが確実でない限り、おそらく行うべきではないことです。したがって、ユーザーがこの変更に同意するかどうかを必ず確認してください。

あなたはあなたのコードに非常に近かった、行く方法はこのようなものです:

Sub ListAddIns()
    Dim CurrAddin As **Office.COMAddIn**
    Dim r As Long
    Dim ws As Excel.Worksheet

    Set ws = ActiveSheet
    Cells.Select
    Selection.ClearContents
    Range("A1").Select

    r = 1
    For Each CurrAddin In **Excel.Application.COMAddIns**
        ws.Cells(r, 1).Value = CurrAddin.Description
        ws.Cells(r, 2).Value = CurrAddin.Application
        ws.Cells(r, 3).Value = CurrAddin.GUID
        ws.Cells(r, 4).Value = CurrAddin.Connect
        ws.Cells(r, 5).Value = CurrAddin.Creator
        ws.Cells(r, 6).Value = CurrAddin.progID
        r = r + 1
    Next CurrAddin
    MsgBox "Its done.", vbInformation
End Sub

Connectプロパティを使用して、COMアドインをロードおよびアンロードできます。

于 2011-10-28T13:31:52.357 に答える
0

私は同じ問題を抱えていますが、もっと簡単な解決策があります。PowerpivotアドインをExcelからオフにして(チェックを外して)、もう一度オンにするだけです...問題は修正されました。

于 2012-09-06T01:27:58.997 に答える