2

有谁知道为什么以下代码不适用于 Excel 2010(家庭和小型企业办公版)¿?

procedure TForm1.Button1Click(Sender: TObject);
var
  rango : OleVariant;
  ExcelObject : TExcelApplication;
  ExcelWorksheet : TExcelWorksheet;
  LCID : integer;

begin

  try
    ExcelObject := TExcelApplication.Create (self);
    LCID := LOCALE_USER_DEFAULT;

    ExcelObject.Workbooks.Add(EmptyParam, LCID);

    ExcelWorksheet := TExcelWorksheet.Create(ExcelObject);
    ExcelWorksheet.ConnectTo(ExcelObject.Worksheets.Item [1] as _Worksheet);

    rango := ExcelWorksheet.Range['B2','B2'];
    rango.Font.size := 16;
    rango.Font.Bold := True;
    rango.Value2 := 'test';

    ExcelObject.Visible[lcid] := true;

  except
    on e: exception do
      showmessage(e.message);

  end;

end;

添加工作簿时显示“未注册类”异常:“ExcelObject.Workbooks.Add(EmptyParam, LCID);”

这适用于 Office 2010 专业版(和旧版 Office 版),但不适用于家庭和小型企业版 2010 版。

4

1 回答 1

0

我知道这真的很晚了,但过去两天我一直在与同样的错误作斗争,终于弄清楚了(我认为)。由于组件中糟糕的错误处理,该错误具有误导性。

我得到的线索是它在同一台机器上的不同测试应用程序中完美运行 - 所以这不是课程注册问题。

如果我没有正确连接东西,我会收到错误(在几个地方)。在您的情况下,您可能需要执行 CONNECT。

例如

ExcelObject := TExcelApplication.Create (self);
ExcelObject.Connect;

如果您忘记执行 ConnectTo 调用以将接口连接在一起,我也看到了这一点。

例如

XlWorkBook.ConnectTo(XlApp.ActiveWorkbook);

希望这对其他人有帮助。

于 2018-09-21T04:09:57.200 回答