开发者

Getting an error with excel ole "Add method of Workbooks class failed"

开发者 https://www.devze.com 2022-12-13 20:24 出处:网络
I am trying to open and refresh an excel 2003 spreadsheet via ole.However I am getting the error \"Add method of Workbooks class failed\" with no further information.

I am trying to open and refresh an excel 2003 spreadsheet via ole. However I am getting the error "Add method of Workbooks class failed" with no further information.

The code works in unit tests, and works on 3 servers but fails with the error on our web server. It is being run from a service app running under the Local System Account.

The same version of excel is installed on all servers (2003 sp3). The file(s) in question all exist and are at the expected location.

There are no macros in the spreadsheets, but there are database queries. The spreadsheets can all be opened.

The calling code is

if VarIsEmpty(XLApp) then
begin
  XLApp := CreateOleObject('Exc开发者_运维知识库el.Application');
  try
    XLApp.DisplayAlerts:=  wdAlertsNone;
  except
...
  end;
  XLApp.AutomationSecurity:= msoAutomationSecurityForceDisable;
end;

fullFileName:= ExpandReportFileName( partialFilename);
if not FileExists(fullFileName) then
  raise Exception.Create('File not found: ' + fullFileName);

XLAPP.Workbooks.Add(fullFileName);  << fail here

Any ideas on what else I can try?


I had been getting the same error for

xls.WorkBooks.Add(xlWBATWorksheet);

I changed that line to

xls.Application.Workbooks.Add;

Now it is working. You might try to get a Workbook first then try to call its methods.


Automating Office applications in a service is not supported.

While it is possible, it's very difficult, and you'll run into many problems, such as this one. It'll also be very slow.

You should look for a Delphi component that manipulates Excel files.

Depending on what you're trying to do, you might be able to use OLE DB instead.


Workbooks.Open might be the method you're looking for

Add creates a new empty workbook. If you supply a filename, that file is used as a template for the new file - see here

Open just opens the file as you would expect - see here


I ran into this error when I happened to have the Excel spreadsheet file selected in a Windows Explorer window, not open, just selected. When I deselect the file, I do not get the error.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号