2016-09-01 10 views

答えて

0

プロジェクトでMicrosoft.Vbe.Interopへの参照を追加する必要があります。次に、

Imports Microsoft.Vbe.Interop 

を使用できます。 。

Dim components As VBComponents = Application.ActiveWorkbook.VBProject.VBComponents 

または

Dim components As VBComponents = Globals.ThisAddIn.Application.ActiveWorkbook.VBProject.VBComponents 

、その後

For Each comp As VBComponent In components 

Next 

EDIT:

私はマクロのリストを取得し、それらを追加するには、C#で次のメソッドを作成List<string>

private static void GetMacros() 
{ 
    int startLine = 0; 
    vbext_ProcKind ProcKind; 
    List<string> macros = new List<string>(); 

    VBComponents components = Globals.ThisAddIn.Application.ActiveWorkbook.VBProject.VBComponents; 
    try 
    { 
     foreach (VBComponent comp in components) 
     { 
      startLine = comp.CodeModule.CountOfDeclarationLines + 1; 
      while (startLine <= comp.CodeModule.CountOfLines) 
      { 
       string macroName = comp.CodeModule.get_ProcOfLine(startLine, out ProcKind); 
       macros.Add(macroName); 
       startLine += comp.CodeModule.get_ProcCountLines(macroName, ProcKind); 
      } 
     } 
    } 
    catch (Exception) 
    { 
     throw; 
    } 
} 
+0

ご回答ありがとうございます。しかし、 'Dim components as VBComponents = Application.ActiveWorkbook.VBProject.VBComponents'はVBA文ですよね? OPのアップデートを参照してください...どのように私はアセンブリMicrosoft.Vbe.Interopへの参照を追加することができます...? – SoftTimur

+0

アドインの「スタートアップ」イベントでこれを実行しようとしたようです。 'ActiveWorkbook'はこの時点では利用できません。私は実際にアドインを構築し、これをボタンクリックイベントを使ってテストしました。ワークブックが開いたら、これを実行することをお勧めします。おそらくワークブック[スタートアップ](https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.startup.aspx)のイベントです。 –

+1

プロジェクトから参照を追加できるはずです。 –

関連する問題