nsvrao Ответов: 1

Как закрыть один лист excel из нескольких листов excel с помощью пакетного файла windows


У меня есть несколько листов excel, открытых в моей системе windows. Я хочу закрыть определенный лист excel с помощью пакетного файла windows.

Не могли бы вы помочь мне с этим?

Что я уже пробовал:

Я пытался закрыть его". Expenses.xlsx" лист excel с помощью приведенной ниже команды.

TASKKILL /FI "WINDOWTITLE eq Expenses - Excel" /f

Но он закрывает все открытые листы excel, я хочу закрыть только один конкретный файл из нескольких открытых файлов excel.

CHill60

Вам придется открыть их в отдельных экземплярах Excel.

nsvrao

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

CHill60

Если ваш taskkill закрыл их все, то они не находятся в отдельных экземпляры Excel - просто несколько окон из одного экземпляра

ZurdoDev

1. Их называют книги, а не листы. Листы находятся внутри рабочей книги, поэтому начните с использования правильной терминологии, а затем вы сможете найти ответы в интернете.
2. Какая версия Excel? Более старые версии поддерживали только один экземпляр. Начните с просмотра в диспетчере задач, чтобы узнать, есть ли несколько экземпляров Excel или нет.

nsvrao

Excel 2016... Не существует нескольких экземпляров. В одном экземпляре excel выполняется несколько дочерних процессов.

1 Ответов

Рейтинг:
2

Richard Deeming

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

using System;
using System.Runtime.InteropServices;

static class Program
{
    static void Main(params string[] args)
    {
        try
        {
            dynamic excel = Marshal.GetActiveObject("Excel.Application");
            dynamic workbooks = excel.Workbooks;
            foreach (string sheetName in args)
            {
                try
                {
                    dynamic workbook = workbooks[sheetName];
                    workbook.Close(false);
                }
                catch (COMException)
                {
                    Console.WriteLine("The workbook '{0}' is not open.", sheetName);
                }
            }
        }
        catch (COMException)
        {
            Console.WriteLine("Excel is not running.");
        }
    }
}