Excel взаимодействие: восстановить свернутое окно - PullRequest
1 голос
/ 07 мая 2010

В моем приложении winforms, взаимодействующем с Excel через взаимодействие,

Я пытаюсь присоединиться к существующему процессу Excel, если он есть. Получение объекта, кажется, работает хорошо, но если приложение Excel свернуто (что вполне вероятно в моем случае использования), мне не удается восстановить окно и вывести его на передний план.

Я пробовал следующие утверждения:

try
    app = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
catch (Exception) { /* ignore */ }

if (app == null)
{
    app = new Excel.Application();
    app.Visible = true;
}

if (app.ActiveWindow.WindowState == Excel.XlWindowState.xlMinimized)
    app.ActiveWindow.WindowState = Excel.XlWindowState.xlNormal;

wb = ...

wb.Activate();

Ни один из них не имел никакого эффекта. Как мне этого добиться?

( Обратите внимание: моя проблема связана со случаем, когда является существующим экземпляром, поэтому "Visible = true" не требуется, а этот поток не делает применяются. )

1 Ответ

2 голосов
/ 07 мая 2010

Вы хотите app.WindowState = xlNormal, поскольку app.ActiveWindow - это текущий лист, а не главное окно экземпляров приложения.

...