Как запустить макрос в конкретном документе? - PullRequest
0 голосов
/ 23 апреля 2019

У меня задача запуска разных макросов в разных документах.Я беру имена файлов и список макросов для каждого пути из конфига.Есть ли в Word такая функция, как ExecuteLine в Visio.Суть этой реализации в том, что нет необходимости прописывать Activate перед каждым документом.

...
//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);
                }
            }
        }
...
...