![]() |
Выяснить открыта ли книга Excel и если открыта, подключится к ней
Вот такая возникла заморока и никак не найду способ реализации.
С выяснением того, что книга открыта я придумал такой вариант: Код:
(Get-Process excel | Select-Object -Property MainWindowTitle) -match "Заказы_2014.xls" Если кто-то с книгой работает, прерывать работу нельзя. Код:
$xl = [Runtime.Interopservices.Marshal]::GetActiveObject('Excel.Application') Намучался с поиском ответа, прошу помощи. |
А если не открыта — тогда что делать?
Не знаю, как у Вас, а у нас — выдаёт: Скрытый текст
Код:
$xl = [Runtime.Interopservices.Marshal]::GetActiveObject('Excel.Application') Цитата:
Ещё вариант: Converting VBScript's GetObject Function. Что-то наподобие…
Код:
function Release-Ref ($ref) { |
Если книга закрыта, то открыть через comObject, тогда вообще никаких проблем.
У меня вышеприведенный код выдает ошибку: Код:
Исключение при вызове "GetActiveObject" с "1" аргументами: "Операция недоступна (Исключение из HRESULT: 0x800401E3 (MK_E_UNAVAILABLE))" Код:
$xl = [Runtime.Interopservices.Marshal]::GetActiveObject('Excel.Application') Код:
C:\Users\User\Test\Заказы.xls Проверил на Win 7 и Office 2007. Та же картина. |
Цитата:
Форумы caduser.ru When CoCreateInstance returns 0x80080005 (CO_E_SERVER_EXEC_FAILURE) - Antimail - Site Home - MSDN Blogs и попробуйте проверить аналогичную методику с try и повторным запросом. У меня, кстати, в отличие от Вас, тоже XP (как у автора по первой ссылке), и проблема тоже не воспроизводится. Цитата:
P.S. Поройтесь ещё здесь: powershell GetActiveObject Exception from HRESULT 0x800401E3 MK_E_UNAVAILABLE - Поиск в Google, может чего найдёте. |
Супер!! тема с try catch прокатила. Спасибо за наводку. Работает, конечно, с задержкой, но мне в данном случае это безразлично.
Привожу свой вариант, может кому пригодится. Код:
[reflection.assembly]::LoadWithPartialName("'Microsoft.VisualBasic") | Out-Null |
corbis, если где-нибудь, когда-нибудь, в будущем наткнётесь на объяснение причин возникновения данной проблемы под новыми ОС и методами их решения — не сочтите за труд, отпишитесь здесь.
|
Время: 21:05. |
Время: 21:05.
© OSzone.net 2001-