Как составить список всех открытых книг Excel - PullRequest
0 голосов
/ 27 декабря 2018

Я пишу консольное приложение ac # с .net 4.7.1.У меня есть несколько открытых книг Excel на моем компьютере.Я пытаюсь перечислить все открытые книги Excel на моем компьютере.

Я просмотрел несколько сообщений SO и собрал этот код, в котором должны быть перечислены все открытые книги Excel на моем компьютере, но при запуске кода ни одна из открытых книг Excel не появляется в списке.

using System;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;

namespace ExcelWorkbooks
{
    class Program
    {
        static void Main(string[] args)
        {
            Application oXL = new Microsoft.Office.Interop.Excel.Application();
            oXL = (Application)Marshal.GetActiveObject("Excel.Application");
            Console.WriteLine("starting");
            foreach (Microsoft.Office.Interop.Excel.Workbook blah in oXL.Workbooks)
            {
                Console.WriteLine(blah.Name.ToString());
            }
            Console.WriteLine("ending");
            Console.ReadLine();
        }
    }
}

вывод должен быть

начиная с

здесь должен быть список открытых книг Excel

до

но вместо этого вот что выводится

начало

окончание

Если кто-то может указать мне правильное направление того, что нужно добавить/ вычел или изменил в моем коде, чтобы он перечислял все открытые книги Excel на моем компьютере, я был бы признателен.Заранее спасибо.

РЕДАКТИРОВАТЬ: я играл с этим и закрыл 2 открытые книги Excel.Затем я посмотрел в диспетчере задач и увидел, что даже после того, как я закрыл все книги Excel, все еще выполнялось около 10 процессов «EXCEL».Я закрыл все процессы «EXCEL», а затем снова открыл 2 книги Excel.Теперь в приведенном выше коде перечислены 2 открытые книги Excel.Итак, я полагаю, что вопрос несколько изменился: почему были запущены 10 процессов «EXCEL», когда у меня было только 2 открытых книги, и, что более важно, в будущем, как мне с этим бороться, так что если есть дополнительные процессы «EXCEL», я могу справиться с этимпоэтому он покажет открытые книги Excel.Спасибо.

1 Ответ

0 голосов
/ 27 декабря 2018

, чтобы вывести список имен текущих книг экземпляров Excel, просто измените:

Application oXL = new Microsoft.Office.Interop.Excel.Application();
oXL = (Application)Marshal.GetActiveObject("Excel.Application");

на:

 Application oXL = (Application)Marshal.GetActiveObject("Excel.Application");

. Вы можете добавить блок Try / Catch для обработки случаяэкземпляр Excel недоступен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...