none
Ошибка при работе с New-Object -ComObject excel.application RRS feed

  • Вопрос

  • $excelobj = New-Object -ComObject excel.application
    $excelobj.Visible = $true
    $excelobj.Workbooks.Add()
    

    Получаю

    Исключение при вызове "Add" с "0" аргументами: "Использован старый формат, либо библиотека имеет неверный тип. (Исключение из HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))"
    строка:3 знак:1
    + $excelobj.Workbooks.Add()
    + ~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : ComMethodTargetInvocation

    Тоже самое с любыми другими методами

    Подскажите пожалуйста как это исправить в поше

    13 июля 2015 г. 8:13
    Модератор

Ответы

  • 1) Изменить локальные настройки на en-Us

    2) Либо использовать функцию http://blogs.msdn.com/b/monad/archive/2005/11/30/498432.aspx?Redirected=true

    Function Using-Culture (
    [System.Globalization.CultureInfo]$culture = (throw "USAGE: Using-Culture -Culture culture -Script {scriptblock}"),
    [ScriptBlock]$script= (throw "USAGE: Using-Culture -Culture culture -Script {scriptblock}"))
    {
        $OldCulture = [System.Threading.Thread]::CurrentThread.CurrentCulture
        trap 
        {
            [System.Threading.Thread]::CurrentThread.CurrentCulture = $OldCulture
        }
        [System.Threading.Thread]::CurrentThread.CurrentCulture = $culture
        Invoke-Command $script
        [System.Threading.Thread]::CurrentThread.CurrentCulture = $OldCulture
    }
    
    Using-Culture en-us {
    	$excelobj = New-Object -ComObject excel.application
    	$excelobj.Visible = $true
    	$excelobj.Workbooks.Add()
    }

    3) Использовать InvokeMember с локализацией en-us - https://richardspowershellblog.wordpress.com/2008/03/23/powershell-and-excel/



    • Изменено KazunEditor 13 июля 2015 г. 8:18
    • Помечено в качестве ответа Vector BCOModerator 13 июля 2015 г. 8:21
    13 июля 2015 г. 8:16
    Отвечающий

Все ответы