Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


А если не открыта — тогда что делать?

Не знаю, как у Вас, а у нас — выдаёт:
Скрытый текст
Код: Выделить весь код
$xl = [Runtime.Interopservices.Marshal]::GetActiveObject('Excel.Application')
$xl.Workbooks | ForEach-Object -Process {$_.FullName}
Цитата:
Код: Выделить весь код
E:\Песочница\0410\Книга1.xls


Ещё вариант: Converting VBScript's GetObject Function.
Что-то наподобие…

Код: Выделить весь код
function Release-Ref ($ref) {
    ([System.Runtime.InteropServices.Marshal]::ReleaseComObject([System.__ComObject]$ref) -gt 0)
    [System.GC]::Collect()
    [System.GC]::WaitForPendingFinalizers() 
}

[reflection.assembly]::LoadWithPartialName("'Microsoft.VisualBasic") | Out-Null
$oWorkBook = [Microsoft.VisualBasic.Interaction]::GetObject("E:\Песочница\0410\Книга1.xls")

$oExcel = $oWorkBook.Application
$oExcel.Visible = $true
$oExcel.Windows.Item(1).Visible = $true

$oWorkBook.Path, $oWorkBook.Name
$oWorkBook.Worksheets.Item(1).Cells.Item(1, 1).Value()

$oWorkBook.Close($false)
$oExcel.Quit()

Release-Ref($oWorkBook)
Release-Ref($oExcel)
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:46, 27-11-2014 | #2