Export do Excela- w wątku

0

Mam taki problem, potrzebuje eksportować dane do Excela. Danych jest dość sporo a nie chciał bym żeby w tym czasie aplikacja była zablokowana dlatego chciałbym aby eksport odbywał się w tle.
Wcześnie eksport odbywał się bez wątku, trzeba było czekać ale wszystko działało bez problemu. Dorzuciłem do programu wątek i wszystko się sypie. Oczywiście kiedy zadam wątkowi wykonywanie innych czynność niż wypełnianie excel'a wszystko działa poprawianie.

Oto źródło(program zawiera tylko przycisk Button1):

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Math, Excel2000, ComObj;

type
  TForm1 = class(TForm)
    Button1: TButton;

    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TExpExcel = class(TThread)
  private
  Excel: Variant;
  protected
    procedure Execute; override;
  public
  end;

var
  Form1: TForm1;
  ExpExcel: TExpExcel;

implementation

procedure TExpExcel.Execute;

begin
 FreeOnTerminate := true;
   begin
    Excel:=CreateOleObject('Excel.Application');
    Excel.SheetsInNewWorkbook := 1;
    Excel.application.workbooks.ADD;
    Excel.Visible:=true;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);

begin
ExpExcel:=TExpExcel.Create(false);
end;

end.

Po kliknięciu przycisku Button1 wyskakuje komunikat o błędzie: Project Project2.exe raised exception class EOleSysError with message 'Funkcja CoInitialize' nie została wywołana'. Process stoped. Use Step or Run to continue'

Proszę o pomoc, szukałem w googlach i na forum ale nic niestety nie znalazłem.
Z góry dzięki

0

Choćby http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.database.ado/2003-11/0552.html

 A nawet wystarcza zrozumienie treści błędu i ... wywołanie tejże metody.
0

Kolego nav a mógłbyś napisać mi to tak na "chłopski rozum" bo nie bardzo rozumiem co mam zrobić i jak uruchomić tą metodę. Na stronie do której dałeś mi linka coś jest ale niestety nie umiem na podstawie tego wywnioskować co zrobić :(

Sorki ale początkujący jestem
Z góry dzieki

0

Już doszedłem do tego co i jak, dzieki

1 użytkowników online, w tym zalogowanych: 0, gości: 1