如何在特定文档中运行宏?

时间:2019-04-23 18:39:52

标签: c# ms-word office-interop

我的任务是在不同的文档中运行不同的宏。 我从配置中获取每个路径的文件名和宏列表。 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);
                }
            }
        }
...

0 个答案:

没有答案