Excel的无法第2次调用的问题 先谢谢了 都看看吧 找了很多地方都没人知道(100分)

我遇到过,重新启动即可(计算机)
 
晕 不用重启的 关掉应用程序就可以了
 
没有关闭Excel进程
Var
WorkBooks: OleVariant;
WorkSheets: OleVariant;
begin
inherited;
if FSQLConnection = nil then
Exit;
Try
Self.ExcelApplication1.Connect;
WorkBooks := Self.ExcelApplication1.WorkBooks.Add(Null, 0);
WorkSheets := WorkBooks.ActiveSheet;
WorkSheets.Name := Self.Caption;
do
WriteReportTitles(WorkSheets);
do
WriteReportBody(WorkSheets);
WorkBooks.SaveAs(Self.Caption + FormatDateTime('YYYYMMDDHHNNSS', Now) + '.xls');
Self.ExcelApplication1.Visible[0] := system.True;
Finally
Self.ExcelApplication1.Disconnect;
end;
end;
 
disconnect方法 不适用于我自己建的excel类哦 我原来用的D自带的控件 也用了disconnect 但好像也不成功哦
 
在每次掉用excel之前先关闭你的excel连接。
 
to zhlfdm
先谢谢你回答,我自己的程序已经可以解决程序自己调用excel 我的程序每次同时打开几个excel文件都不出问题 主要是打开程序 然后再单独用excel就不行 用程序调用可以的
 
我遇到过跟你一样的问题:
v.Quit;
后面加上;
v := Unassigned;
 
哦 那好 试试楼上的方法
 
按照楼上的方法出现
有个错误 Method'Unassigned' not supported by automation object.
 
关不了就是那个KILLTASK不就是多几行吗
 
楼上的说清楚具体该如何做好吗 谢谢
对前面答过的我觉得好像方法应该是可以的 就是我这个地方可能有什么地方不适用 也很感谢大家
 
我是现在用的第一次用了后都好好的,第二、三次都可以很好用,在一次用完后关闭是这样写的,你可以参考一下
FWorkSheet := null;
FXlApp.WorkBooks.Close;
FXlApp.Quit;
FXlApp := null;
 
啊 楼上的偶像啊 终于解决部分问题了 但是还有个问题 我的excel如果是由用户自己关 而不是程序关 怎么办啊
 
am2001
能再告诉我吗
 
帮顶!
http://www.source520.com
站长开发推广同盟 站长朋友的终极驿站
同时拥有海量源码电子经典书籍下载
http://www.source520.com/search/search.asp
"编程.站长"论坛搜索引擎-----为中国站长注入动力!
 
今天回来上班才上来
刚我试了一下,如果把Excel窗口显示出来,那用户自己关闭Excel后还会有一个Excel的进程在的,在程序退出时用上面的代码关闭也可以正常关闭的
我就用二个按钮以下这几行程序测试都好的,运行后点N次Button1自己关闭Excel后再点Button2都能关闭Excel进程,第二次运行也都好好的
procedure TForm1.Button1Click(Sender: TObject);
begin
FXlApp := CreateOleObject('Excel.Application');
FXlApp.Visible := True;
FXlApp.WorkBooks.Open('C:/Documents and Settings/Administrator/桌面/a.xls');
FWorkSheet := FXlApp.WorkBooks[1].WorkSheets[1];
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
FWorkSheet := null;
FXlApp.WorkBooks.Close;
FXlApp.Quit;
FXlApp := null;
end;
 
你动态创建EXCEL控件。然后卸载干净就不会出现哪个问题了
 
to am2001:
可是程序里面button2的代码该放哪里呢 我不可能让用户自己关了EXCEL后又多按一个按钮
 
procedure CloseAllExcelApps;
var
Hwnd : THandle;
begin
Hwnd := FindWindow('XLMAIN',nil);
while Hwnd <> 0do
begin
SendMessage(Hwnd,WM_CLOSE,0,0);
Hwnd := FindWindow('XLMAIN',nil);
end;
end;
 
可以考虑在窗体时关闭呢?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部