有人知道为什么以下代码不适用于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。
答案 0 :(得分:0)
我知道这真的很晚,但是最近两天我一直在同一个错误进行斗争,最终弄清楚了(我认为)。由于组件中糟糕的错误处理,该错误具有误导性。
我得到的线索是,它可以在同一台机器上的不同测试应用程序中完美运行-因此,这不是类注册问题。
如果我没有正确连接东西,则会在多个地方出现错误。在您的情况下,您可能需要执行CONNECT。
例如
ExcelObject := TExcelApplication.Create (self);
ExcelObject.Connect;
如果您忘了执行ConnectTo调用将接口连接在一起的话,我也已经看到了。
例如
XlWorkBook.ConnectTo(XlApp.ActiveWorkbook);
希望这对其他人有帮助。