Ошибка автоматизации Excel 2010 от Delphi - PullRequest
2 голосов
/ 27 января 2011

Кто-нибудь знает, почему следующий код не работает с Excel 2010 ( для дома и малого бизнеса Office Edition ) ¿?

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), но не с Home и Small Business Edition 2010 Edition.

1 Ответ

0 голосов
/ 21 сентября 2018

Я знаю, что это действительно поздно, но я боролся с той же самой ошибкой последние два дня и наконец понял (я думаю).Ошибка вводит в заблуждение из-за дурацкой обработки ошибок в компоненте.

Я имел в виду, что она отлично работала в другом тестовом приложении на той же машине - так что это не было проблемой регистрации класса.*

Я получаю ошибку (в нескольких местах), если у меня не все правильно подключено.В вашем случае вам, вероятно, нужно выполнить команду CONNECT.

Например,

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

Я также видел это, если вы забудете выполнить вызов ConnectTo для соединения интерфейсов.

Например,

XlWorkBook.ConnectTo(XlApp.ActiveWorkbook);

Надеюсь, это поможет кому-то еще.

...