怎么在一个线程中调用EXCEL?(100分)

  • 主题发起人 主题发起人 robotin
  • 开始时间 开始时间
R

robotin

Unregistered / Unconfirmed
GUEST, unregistred user!
我想做一个线程,它的任务就是调用excel。
如下所示:
//线程
unit Unit2;
interface
uses
Classes,Windows;
type
TMyThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute;
override;
end;


var
hSemaphore: THandle;
implementation
uses comObj,SysUtils;

{ TMyThread }
procedure TMyThread.Execute;
begin

WaitForSingleobject (hSemaphore, 100000);
ExcelApplication:=CreateOleObject('Excel.Application');
ExcelApplication.Visible:=true;
ExcelApplication.workbooks.add(1);
ExcelWorkSheet:=ExcelApplication.workbooks[1].sheets[1];
ReleaseSemaphore(hSemaphore, 1, nil);
end;

initialization
hSemaphore:=CreateSemaphore(
nil, 10, 10, 'ThDB_MD_Semaphore');
end.


//调用
……
procedure TForm1.BitBtn1Click(Sender: TObject);
var GetDataThread:TGetDataThread;
begin

GetDataThread:= TGetDataThread.Create (True);
GetDataThread.Priority := tpLowest;
GetDataThread.FreeOnTerminate:=True;
GetDataThread.Resume;
end;
……
这样做好象不行。
 
不行的原因?有何提示?
 
线程调用ole,要使用oleinitialize
 
又提前啦?抱歉,前头我说错了,是coinitialize
procedure TMyThread.Execute;
begin
CoInitialize(nil);
。。。//do something
CoUninitialize;

end;

 
elan,我照你的方法试了一下,
很管用,3X!100分全给你了。
 
接受答案了.
 

Similar threads

后退
顶部