2011-10-27 26 views
3

Excelにフックしてワークブックを読み込むVB6/VBAアプリケーションがあります。それは長年にわたり素晴らしい仕事をしてきました。 Excel 2010にアップグレードし、いくつかの問題が発生しました。トラブルシューティングの後、PowerPivot COMアドインをオフにすると、プロセスは以前と同じように問題なく実行できます。私はこれの正確な原因を探している間、私は私のアプリのためだけにアドインをオフにすることができるかどうかを見たいと思った。VB6/VBA COMアドインの読み込みを許可しない

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オブジェクトに読み込まないようにする必要があります。助けや提案は大歓迎です。

おかげ

答えて

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 

あなたはCOMアドインをロードおよびアンロードするためにConnectプロパティを使用することができます。

+0

チップがありがとうございますが、あなたは正しいです、それは極端です。これは内部アプリ用ですが、私はユーザーレジストリを変更することを躊躇しています。 – sinDizzy

+0

私はそれについても考えていませんでした。私にそのショットをあげさせてください。 – sinDizzy

+0

okはExcel 2007とExcel 2010でテストされ、魅力的に機能しました。私はこのタイプのオブジェクトをどこからでも見て、それを見つけることができませんでした。助けてくれてありがとう。 – sinDizzy

0

私は同じ問題がありますが、より簡単な解決法があります。 ちょうどPowerpivotアドインをExcelから外して(解除して)もう一度オンにしてください...問題は解決しました。

+2

はい、それは明らかな答えです。ここでの全体的な考え方は、自動化され、エンドユーザーは手動で何もする必要がないということです。 – sinDizzy

関連する問題