Hội đồng interop văn phòng dường như có vấn đề này khi văn hóa hiện tại không phải là en-US. Cách giải quyết rõ ràng là đặt văn hóa.
Điều quan trọng là chạy toàn bộ điều dưới dạng một lệnh trên bảng điều khiển tương tác, vì PowerShell V1 luôn tạo một chuỗi mới cho mỗi lệnh gọi.
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
>> }
>>
Nguồn
2009-03-27 01:04:35
Phương thức Thêm có phải là một trong số đó có số lượng tham số tùy chọn lớn không? Nếu đó là trường hợp, sau đó bạn có thể phải cung cấp Type.EmptyType hoặc bất cứ điều gì nó được. Tra cứu cách gọi nó từ C# (không hỗ trợ tham số tùy chọn cho đến v4.0). –
Theo kinh nghiệm của tôi, tùy thuộc vào phiên bản Office không cần sử dụng kiểu Thiếu cho các tham số tùy chọn, nhưng ví dụ Word 2007 yêu cầu đối số được chuyển thành [ref] trong PS, trái ngược với Office XP chẳng hạn. – guillermooo