起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 139|回复: 5

EXCEL进程问题**

[复制链接]
发表于 2008-10-27 10:49:37 | 显示全部楼层 |阅读模式
上周六问了关于判断Excel里的行数问题。
采用lixy给的方法,可以正确判断(采用Excel的 UsedRange.Rows.Count属性),但是退出时却关不上。

该如何关闭呢?
以下 我就简单调用了下打开,然后即关闭,但是进程关不上。
就是一个按钮,点击后Excel进程关不上。

procedure TMainForm.Button4Click(Sender: TObject);
var
  openDialog:TOpenDialog;
  Object;
  excelApp,excelWBs,excelWSsispatchHelper;
begin
  openDialog:=TOpenDialog.Create(nil);
  if openDialog.Execute then
  begin
    o:=ComObj.CreateOleObject('Excel.Application');
    excelApp := DispatchHelper.Create(o);
    DispatchHelper.Create(excelApp.PropertyGet('WorkBooks',[])).InvokeMethod('Open',[openDialog.FileName]);

    excelApp.InvokeMethod('Quit',[]);
    (o as System.IDisposable).Dispose;
  end;

end;
回复

使用道具 举报

 楼主| 发表于 2008-10-27 10:50:19 | 显示全部楼层
excelApp.InvokeMethod('Quit',[]);
    (o as System.IDisposable).Dispose;
这两句似乎不起作用,关不上。
回复 支持 反对

使用道具 举报

发表于 2008-10-27 10:53:01 | 显示全部楼层
我这里也又这样的问题,
回复 支持 反对

使用道具 举报

发表于 2008-10-27 11:20:48 | 显示全部楼层
procedure TMainForm.Button1Click(Sender: TObject);
var
  openDialog:TOpenDialog;
  o,o1: Object ;
  excelApp,b: DispatchHelper;
begin
  openDialog:=TOpenDialog.Create(nil);
  if openDialog.Execute then
  begin
    o:=ComObj.CreateOleObject('Excel.Application');
    excelApp := DispatchHelper.Create(o);
    o1:=excelApp.PropertyGet('WorkBooks',[]);
  DispatchHelper.Create(o1).InvokeMethod('Open',[openDialog.FileName]);
//   =DispatchHelper.Create(excelApp.PropertyGet('WorkBooks',[])).InvokeMethod('Open',[openDialog.FileName]);
     excelApp.InvokeMethod('Quit',[]);
     (o1 as System.IDisposable).Dispose;
    (o as System.IDisposable).Dispose;

  end;

end;

------------这样呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-27 11:26:30 | 显示全部楼层
lixy 你那里试了 可以??
我这里还是关不掉

不知  crskyp用楼上代码怎样呢。
回复 支持 反对

使用道具 举报

发表于 2008-10-27 11:39:58 | 显示全部楼层
如果4楼代码会遗留EXCEL进程的话。
那我无能为力了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-24 04:06 , Processed in 0.038326 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表