Foxtable(狐表)用户栏目专家坐堂 → 如何终止excel进程


  共有3384人关注过本帖树形打印复制链接

主题:如何终止excel进程

帅哥哟,离线,有人找我吗?
zhangchi96
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:555 积分:5037 威望:0 精华:0 注册:2012/2/11 13:27:00
如何终止excel进程  发帖心情 Post By:2014/7/14 21:29:00 [只看该作者]

先上一段控件程序

 

'(1)--- 清空
With DataTables("财政统发在职")
    .DataRows.Clear()
End With
DataTables("财政统发在职").save()

 

Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    FileSys.CopyFile( dlg.FileName,"d:\财政导出表.xls" ,True)  '复制表
    '---- 下面开始删除表的前两行
    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("d:\财政导出表.xls" )
    Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)'指定工作
    '    ws.rows("1:2").delete(MSExcel.XlDirection.xlUp)
    ws.rows("1:2").delete(MSExcel.XlDirection.xlUp)
    wb.Save
    app.quit
End If

 

' --- 合并数据的代码
If FileSys.FileExists( "d:\财政导出表.xls" ) Then '如果指定的文件存在
    Dim mg As New Merger
    mg.SourcePath = "d:\财政导出表.xls"   '指定数据文件
    mg.Format = "excel" '指定格式
    mg.SourceTableName = "sheet1$" '指定要合并的表
    mg.DataTableName = "财政统发在职" '指定接收数据的表
    '以下语句的格式示范:   mg.FieldMaps.Add(原表的列名,现表的列名)
    mg.FieldMaps.Add("单位名称","单位名称")
    mg.FieldMaps.Add("部门名称","部门名称")
    mg.FieldMaps.Add("姓名","姓名")
    mg.FieldMaps.Add("性别","性别")
    mg.Merge() '开始合并
End If

以上代码使用时一切正常,但再次使用时提示,系统提示:进程无法终止 "d:\财政导出表.xls“,

在[任务管理器]中,找到excel.exe进程,然后选择【结束进程】,再次使用以上代码,一切正常。

 

请教,如果在代码中加入终止excel.exe进程的命令?

[此贴子已经被作者于2014-7-14 21:29:57编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/14 21:33:00 [只看该作者]

应该没问题的,改一下这段

 

Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    FileSys.CopyFile( dlg.FileName,"d:\财政导出表.xls" ,True)  '复制表
    '---- 下面开始删除表的前两行
    Dim App As New MSExcel.Application
    try
        Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("d:\财政导出表.xls" )
        Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)'指定工作
        '    ws.rows("1:2").delete(MSExcel.XlDirection.xlUp)
        ws.rows("1:2").delete(MSExcel.XlDirection.xlUp)
        wb.Save
    catch ex As exception
        msgbox(ex.message)
    finally
        app.quit
    End try
End If


 回到顶部
帅哥哟,离线,有人找我吗?
zhangchi96
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:555 积分:5037 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2014/7/14 22:25:00 [只看该作者]

按照代码改了,好像没有效,怎么办呢?请专家帮我分析分析!


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/14 22:29:00 [只看该作者]

以下是引用zhangchi96在2014-7-14 22:25:00的发言:

按照代码改了,好像没有效,怎么办呢?请专家帮我分析分析!

 

先删除excel.exe进程,然后测试,不可能有问题的。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/14 22:34:00 [只看该作者]

如果要硬性关闭,参考

 

 

Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("excel")

For Each p As System.Diagnostics.Process In ps
    p.kill
Next


 回到顶部
帅哥哟,离线,有人找我吗?
zhangchi96
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:555 积分:5037 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2014/7/15 12:36:00 [只看该作者]

谢谢,把下面的代码加到原代码的末尾,在运行的时候我观察了资源管理器中的 excel.exe 进程,确实,在运行了下列代码后,自动关闭了。

再次谢谢甜版主!

Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("excel")

For Each p As System.Diagnostics.Process In ps
    p.kill
Next


 回到顶部