Est-il possible d'extraire tout le code VBA d'un document Word 2007 "docm" à l'aide de l'API?Extraire par programme le code de macro (VBA) à partir de Word 2007 docs
J'ai trouvé comment insérer du code VBA à l'exécution, et comment supprimer tout le code VBA, mais pas extraire le code réel dans un flux ou une chaîne que je peux stocker (et insérer dans d'autres documents).
Des conseils ou des ressources seraient appréciés.
Modifier: merci à tous, Aardvark La réponse était exactement ce que je cherchais. J'ai converti son code C#, et a pu appeler à partir d'une bibliothèque de classes en utilisant 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;
}
Utilisez le StringBuilder pour optimiser l'utilisation de la mémoire: StringBuilder sb = new StringBuilder(); Pour sb.AppendLine ("votre ligne de code"); ... macros.Add (sb.ToString()); – Skuami