请教:程序中怎样控制Excel文件(100分)

  • 主题发起人 主题发起人 dreamer567
  • 开始时间 开始时间
D

dreamer567

Unregistered / Unconfirmed
GUEST, unregistred user!
现在想在程序处理中打开一个指定的Excel文件(ExcelApp := CreateOleObject('Excel.Application')),用户可对文件编辑,这是希望自己的程序处理sleep,用户关闭Excel文件后,再继续程序的处理。问题的关键是:1、怎样使程序sleep;2、怎么知道Excel文件关闭了。
 
搜索一下,这个问题已经讨论过很多次了,而且答案也很多。。
 
1,sleep(1000);
2,excelworkbook.close;
excelapplication.quit;//用excel控件,ole忘了,不经常使,这样就能关闭文件了
//用excel控件打开excel文件;
excelworkbook.connectto(excelapplication.workbook.open('c:/1/2.xls',null,null,12个,0) as _workbook);
excelworksheet.connectto(excelworkbook.activesheet as _worksheet);
 
看笔记,不想多说了
http://www.delphibbs.com/keylife/iblog_show.asp?xid=3811
 
并不是让程序关闭excel文件,而是想得到用户关闭excel文件的时间。然后程序在做点事情。不行就只好用olecontainer了。
 
一个土办法:主程序中用timer控件检查excel是否结束。
 
得到关闭的时间很简单啊,
var t:datetime;
excelworkbook1.close;
excelapplication1.quit;
t:=now;//用t进行其他操作
 
sql1981,不是这样子,你在程序中关闭excel文件,然后求时间当然可以了。
问题是我要探测到用户关闭excel文件的事件,才能t:=now;啊。
 
那你用消息来处理吧,先得到打开的excel文件的窗体的句柄,这个可用通过标题来得到,
var hd:handle;
hd:=findwindow('','biaoti');
然后在用户关闭excel文件的窗体时发送wm_close消息,你就可以截获关闭的消息了,不知道对不对,刚过完年,头脑不太清醒,[:D],新年快乐,有什么事大家一起讨论好了,qq:26750660
 
“然后在用户关闭excel文件的窗体时发送wm_close消息,你就可以截获关闭的消息了”
是怎么做呀?
用户关闭excel文件的窗体会不会自己发送wm_close消息,还是程序控制呢?
截获关闭的消息是不是要用个timer循环截获呀?
 
给我点分我给你源代码怎么样。
procedure tfrmprint2.saveAsExcel;
var
fieldNum: integer;
i,j : integer;
exls,sheet: variant;
begin
try
exls:=createoleobject('Excel.application');
sheet:=createoleobject('excel.sheet');
except
application.MessageBox('请先安装MICROSOFT EXCEL!','提示',mb_ok+mb_iconinformation);
exit;
end;
sheet:=exls.workBooks.Add;
with query2 do
begin
DisableControls;
fieldNum := dbgrid1.fieldCount;
for i:=1 to fieldNum do
begin
exls.Cells[1,i].value:=Fields[i-1].FieldName;
end;
first;
i:=2;
while not eof do
begin
for j:=1 to fieldNum do
begin
exls.Cells[i,j]:=fields[j-1].AsString;
end;
next;
i:=i+1;
end;
EnableControls;
exls.visible:=true;
end;
end;
 
你在编辑excel的时候,程序本身不就已经不被操作了吗?,和sleep有什么区别吗
 
多人接受答案了。
 
后退
顶部