2016-09-01 8 views
0

В VBA мы могли бы использовать, например, Wb.VBProject.VBComponents, чтобы получить все макросы VBA книги Wb.Получить все макросы VBA книги VSTO

Кто-нибудь знает, предоставляет ли VSTO любой объект или функцию для доступа к этому?

Edit 1: После ответа Джима, я получил следующее сообщение об ошибке:

enter image description here

ответ

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

Похоже, вы пробовали это сделать в надстройке 'Startup'. На данный момент «ActiveWorkbook» не будет доступен. Я действительно создал надстройку и протестировал ее с помощью события нажатия кнопки. Вероятно, вы захотите сделать это после того, как рабочая книга будет открыта. Возможно, в событии Workbook [Startup] (https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.startup.aspx). –

+1

Вы должны иметь возможность добавить ссылку из проекта. –

 Смежные вопросы

  • Нет связанных вопросов^_^