Ist es möglich, den gesamten VBA-Code aus einem Word 2007 "Docm" -Dokument mithilfe der API zu extrahieren?Makrocode (VBA) programmatisch aus Word 2007-Dokumenten extrahieren
Ich habe gefunden, wie Sie VBA-Code zur Laufzeit einfügen, und wie Sie alle VBA-Code löschen, aber nicht den tatsächlichen Code in einen Stream oder String, die ich speichern (und zukünftig in andere Dokumente einfügen).
Alle Tipps oder Ressourcen würden geschätzt.
Bearbeiten: danke an alle, Aardvark 's Antwort war genau das, was ich gesucht habe. Ich habe seinen Code in C# konvertiert, und konnte es von einer Klassenbibliothek nennen 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;
}
den Stringbuilder Nutzen Sie die Speichernutzung zu optimieren: String sb = new Stringbuilder(); für .... sb.AppendLine ("Ihre Codezeile"); ... macros.Add (sb.ToString()); – Skuami