Delphi/Excel-未实例化工作表

Delphi/Excel-未实例化工作表,excel,delphi,office-interop,Excel,Delphi,Office Interop,Delphi RIO/Excel 2016。我正在使用Delphi启动Excel,然后创建一个新的电子表格,我将在稍后更新。。。。我已经用Delphi/Excel编写了很多代码,我看到了我以前从未见过的行为。我创建Excel,然后执行Excel应用程序。工作表。添加。。。创建新的工作表。由于我刚刚启动Excel,Worksheets对象为nil,因此,当我尝试添加新工作表时,会出现OLE错误(800A03EC)。如果我在ExcelApp.Worksheets.Add行之前单步执行代码,我会转到E

Delphi RIO/Excel 2016。我正在使用Delphi启动Excel,然后创建一个新的电子表格,我将在稍后更新。。。。我已经用Delphi/Excel编写了很多代码,我看到了我以前从未见过的行为。我创建Excel,然后执行Excel应用程序。工作表。添加。。。创建新的工作表。由于我刚刚启动Excel,Worksheets对象为nil,因此,当我尝试添加新工作表时,会出现OLE错误(800A03EC)。如果我在ExcelApp.Worksheets.Add行之前单步执行代码,我会转到Excel,并执行文件/新建,这样会显示一个空工作表,我的代码工作正常。所以问题是,当ExcelApp.Worksheets为零时,如何实例化它?我可以发誓“添加”例程会自动完成

function glib_TestExcel: Integer;
var
  myAPP: OleVariant;
  oExcel : ExcelApplication;
  thisSheet: _Worksheet;
begin
  if not Assigned(oExcel) then
  begin
    myAPP := CreateOleObject('Excel.Application');
    oExcel := IDispatch(myAPP) as ExcelApplication;

    oExcel.Visible[LOCALE_USER_DEFAULT] := True;
    oExcel.ScreenUpdating[LOCALE_USER_DEFAULT] := True;

    // THIS IS THE PROBLEM LINE BELOW
     oExcel.Worksheets.Add(EmptyParam, EmptyParam,1, xlWorksheet, LOCALE_USER_DEFAULT );

     // Get a handle to the new sheet and set the Sheet Name
     thisSheet := oExcel.ActiveSheet as _Worksheet;
     thisSheet.Name := 'New Sheet1';
     result := glib_SUCCESS;
  end;
end;

您忘记了首先创建
工作簿
,以托管
工作表
s。

这就是罪魁祸首。提交答案,我会接受;