自动化错误来自Delphi的Excel 2010

时间:2011-01-27 10:48:55

标签: delphi excel automation excel-2010

有人知道为什么以下代码不适用于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 Proffesional Edition(和较旧的Office Editions),但不适用于Home和Small Business Edition 2010 Edition。

1 个答案:

答案 0 :(得分:0)

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

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

如果我没有正确连接东西,则会在多个地方出现错误。在您的情况下,您可能需要执行CONNECT。

例如

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

如果您忘了执行ConnectTo调用将接口连接在一起的话,我也已经看到了。

例如

XlWorkBook.ConnectTo(XlApp.ActiveWorkbook);

希望这对其他人有帮助。