Los ensamblados de interoperabilidad de Office parecen tener este problema cuando la referencia cultural actual no es en-US. La solución obvia es establecer la cultura.
Es importante ejecutar todo esto como un solo comando en la consola interactiva, ya que PowerShell V1 siempre crea un nuevo hilo para cada invocación de comando.
PS C:\Users\jachymko> $e = new-object -com excel.application
PS C:\Users\jachymko> $e.workbooks.add()
Exception calling "Add" with "0" argument(s): "Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))"
At line:1 char:17
+ $e.workbooks.add <<<<()
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
PS C:\Users\jachymko> & {
>> [threading.thread]::CurrentThread.CurrentCulture = 'en-US'
>> $e = new-object -com excel.application
>> $e.workbooks.add()
>> $e.visible=1
>> }
>>
¿El método Agregar es uno de los que toma una gran cantidad de parámetros opcionales? Si ese es el caso, es posible que deba proporcionar Type.EmptyType o lo que sea. Busque cómo llamar desde C# (que no tiene soporte de parámetros opcional hasta v4.0). –
En mi experiencia, dependiendo de la versión de Office no es necesario utilizar el tipo Falta para parámetros opcionales, pero por ejemplo Word 2007 requiere que los argumentos se pasen como [ref] en PS, a diferencia de Office XP, por ejemplo. – guillermooo