我正在尝试使用SAP ABAP OLE OBJECT打开密码保护的excel文件,如下所示:
DATA: lt_excel_line(4096) OCCURS 10 WITH HEADER LINE.
DATA: app TYPE ole2_object,
workbook TYPE ole2_object,
worksheet TYPE ole2_object.
CREATE OBJECT app 'EXCEL.APPLICATION'.
SET PROPERTY OF app 'VISIBLE' = 0.
CALL METHOD OF app 'WORKBOOKS' = workbook.
CALL METHOD OF workbook 'OPEN'
EXPORTING
#1 = '<filename>'
#5 = '<password>'.
文件名和密码绝对正确,下面的VBA代码按要求打开文件,没有问题:
Dim wb1 As Workbook
Set wb1 = Workbooks.Open Filename:="<filename>", Password:="<password>")
但是ABAP代码总是返回sy- subc = 2。有人知道会发生什么吗?或者我还能尝试什么?感谢您的帮助。
我认为问题在于参数只是位置(只是猜测),因为SAP GUI自动化不支持参数名称。在Filename
和Password
之间有3个参数,所以你对它们进行了正确的编号,但我猜SAP GUI自动化控制器不这样看。
我复制了你的问题,并使其工作如下:
CALL METHOD OF workbook 'OPEN' = document
EXPORTING
#1 = '<filename>'
#2 = 0 "UpdateLinks
#3 = 0 "ReadOnly
#4 = 1 "Format
#5 = '<password>'.
这里我显式地传递参数UpdateLinks
, ReadOnly
和Format
。
我首先在VBA中测试了它。似乎Format
(#4)必须设置为true。我不知道那是干什么用的。
记住像我在这里所做的那样将文档句柄设置为这个调用的返回值,否则你就没有对它的引用!