Можно ли извлечь весь код VBA из документа Word docm Word 2007 с помощью API?
Я нашел, как вставить код VBA во время выполнения и как удалить весь код VBA, но не вытащить фактический код в поток или строку, которые я могу хранить (и вставлять в другие документы в будущем).
Любые советы или ресурсы будут оценены.
Изменить: спасибо всем, Aardvark ответ был именно тем, что я искал. Я преобразовал свой код в С# и смог вызвать его из библиотеки классов с помощью 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;
}