我的任务是在不同的文档中运行不同的宏。 我从配置中获取每个路径的文件名和宏列表。 Word是否具有Visio中的ExecuteLine之类的功能。 此实现的本质是,不必在每个文档之前都指定激活。
...
//This is an implementation for Visio.
//office_classes is list of visio classes from R.O.T
if (office_classes[i].FullName == filename)
{
foreach (var item in macro)
{
//item is macro name
office_classes[i].ExecuteLine(item);
}
}
...
...
//This implementation that I use now
Word.Application oXL;
try
{
oXL = (Word.Application)Marshal.GetActiveObject("Word.Application");
}
catch (Exception)
{
Console.WriteLine(string.Format("ERROR: NOT FOUND - {0}", filename.Replace("\\\\", "\\")));
return;
}
int count = oXL.Documents.Count;
Console.WriteLine(count);
oXL.Documents[1].Activate();
int i = 0;
foreach (var zzz in oXL.Documents)
{
i++;
if (oXL.Documents[i].FullName == filename)
{
Console.WriteLine(filename);
Console.ReadKey();
oXL.Documents[i].Activate();
foreach (var item in macro)
{
Console.WriteLine(item);
Console.ReadKey();
oXL.Run(item);
}
}
}
...