簡體   English   中英

來自Delphi的自動化錯誤Excel 2010

[英]Automation error Excel 2010 from Delphi

有人知道為什么以下代碼不適用於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版。

我知道這確實很晚,但是最近兩天我一直在與這個錯誤進行斗爭,終於弄明白了(我認為)。 由於組件中糟糕的錯誤處理,該錯誤具有誤導性。

我得到的線索是,它可以在同一台機器上的不同測試應用程序中完美運行-因此,這不是類注冊問題。

如果沒有正確連接東西,我會在多個地方出現錯誤。 在您的情況下,您可能需要執行CONNECT。

例如

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

如果您忘記了執行ConnectTo調用以將接口連接在一起,那么我也看到了這一點。

例如

XlWorkBook.ConnectTo(XlApp.ActiveWorkbook);

希望這對其他人有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM