Extrair programaticamente o código macro (VBA) dos documentos do Word 2007
É possível extrair todo o código VBA de um documento "docm" do Word 2007 usando a API?
Eu descobri como inserir código VBA em tempo de execução e como excluir todo o código VBA, mas não extrair o código real em um fluxo ou string que eu possa armazenar (e inserir em outros documentos no futuro).
Quaisquer dicas ou recursos serão apreciados.
Editar: obrigado a todos,AardvarkA resposta foi exatamente o que eu estava procurando. Eu converti o código para C # e consegui chamá-lo de uma biblioteca de classes usando o Visual Studio 2008.
using Microsoft.Office.Interop.Word;
using Microsoft.Vbe.Interop;
...
public List<string> GetMacrosFromDoc()
{
Document doc = GetWordDoc(@"C:\Temp\test.docm");
List<string> macros = new List<string>();
VBProject prj;
CodeModule code;
string composedFile;
prj = doc.VBProject;
foreach (VBComponent comp in prj.VBComponents)
{
code = comp.CodeModule;
// Put the name of the code module at the top
composedFile = comp.Name + Environment.NewLine;
// Loop through the (1-indexed) lines
for (int i = 0; i < code.CountOfLines; i++)
{
composedFile += code.get_Lines(i + 1, 1) + Environment.NewLine;
}
// Add the macro to the list
macros.Add(composedFile);
}
CloseDoc(doc);
return macros;
}