以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请问如何结束Excel进程  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=148421)

--  作者:km007
--  发布时间:2020/4/7 17:19:00
--  请问如何结束Excel进程

Dim wbr As WinForm.WebBrowser = e.Form.Controls("WebBrowser1")
Dim rpt As String = ProjectPath & "Reports\\资料卡.xls"
wbr.OfficeToolBar = True \'如果不需要显示工具栏,可删除此行代码
wbr
.AddRess = rpt


关闭窗口后AfterClose事件代码

FileSys.DeleteFile(rpt,2,2) \'则彻底删除之



我想该窗口关闭后,将该Excel文件彻底删除,但是弹出下图报错,请问如何可以解决?



此主题相关图片如下:qq图片20200407171705.png
按此在新窗口浏览图片


--  作者:有点蓝
--  发布时间:2020/4/7 17:32:00
--  
强制杀掉execl进程
Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses()
For Each p As System.Diagnostics.Process In ps
    output.show(p.processName)
    If ("Excel" = p.ProcessName)
        msgbox(p.MainWindowTitle)
        p.kill
    End If
Next
FileSys.DeleteFile(rpt,2,2)

--  作者:km007
--  发布时间:2020/4/7 17:43:00
--  
这样的话,会把其他Excel的进程都被关掉了,如果我仅想关闭是 WebBrowser 打开的Excel文件的进程呢?
--  作者:km007
--  发布时间:2020/4/7 18:42:00
--  
蓝版,请赐教
--  作者:有点蓝
--  发布时间:2020/4/7 20:02:00
--  
试试
Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses()
For Each p As System.Diagnostics.Process In ps
    output.show(p.processName)
    If ("Excel" = p.ProcessName andalso p.MainWindowTitle = "")
        msgbox(p.MainWindowTitle)
        p.kill
    End If
Next
FileSys.DeleteFile(rpt,2,2)

--  作者:km007
--  发布时间:2020/4/7 21:15:00
--  
以下是引用有点蓝在2020/4/7 20:02:00的发言:
试试
Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses()
For Each p As System.Diagnostics.Process In ps
    output.show(p.processName)
    If ("Excel" = p.ProcessName andalso p.MainWindowTitle = "")
        msgbox(p.MainWindowTitle)
        p.kill
    End If
Next
FileSys.DeleteFile(rpt,2,2)

刚测试,在没有打开其他Excel文件时,这代码是没问题,但如果存在已打开了其他Excel文件时,还是会报一楼的那个截图错误


--  作者:有点蓝
--  发布时间:2020/4/7 21:49:00
--  
beforeclose事件

Dim wbr As WinForm.WebBrowser = e.Form.Controls("WebBrowser1")
wbr
.AddRess = nothing
application.doevents

--  作者:km007
--  发布时间:2020/4/7 22:35:00
--  
蓝版厉害!图片点击可在新窗口打开查看

另外再请教个问题:由于我将窗口中,用控件将  WebBrowser1  显示的Excel文件左上角的 保存按钮 挡住了,不想给操作员点击

自己另外在窗口中添加了一个按钮控件,我想操作员点击该按钮控件后 实现跟 Excel自带的保存功能一样,请问这个代码该如何写呢?

还有就是,  WebBrowser1  显示的Excel,如存在修改过,关闭时,会提示下图的提示


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20200407225048.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2020/4/7 22:52:40编辑过]

--  作者:有点蓝
--  发布时间:2020/4/7 22:58:00
--  
比较麻烦


下载信息  [文件大小:21.9 KB  下载次数:26]
图片点击可在新窗口打开查看点击浏览该文件:webbrowser操作excel.rar


比如:
Dim oDocument As object = axWebBrowser.Gettype().InvokeMember("Document", System.Reflection.BindingFlags.GetProperty, Nothing, axWebBrowser, Nothing)
oDocument.save

--  作者:km007
--  发布时间:2020/4/7 23:59:00
--  

蓝版,保存的问题解决了,但占用进程的问题依旧


操作步骤

1、先用OFFICE随便打开一份Excel文件;

2、打开狐表项目窗口中  WebBrowser1  显示Excel文件


BeforeClose事件:


Dim wbr As WinForm.WebBrowser = e.Form.Controls("WebBrowser1")
wbr.AddRess = Nothing
application.doevents

AfterClose事件:


Dim rpt As String = ProjectPath & "Reports\\Bee8879fd.xls"
Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses()
For Each p As System.Diagnostics.Process In ps
    If ("Excel" = p.ProcessName AndAlso p.MainWindowTitle = "")
        p.kill
    End If
Next
Try
    FileSys.DeleteFile(rpt,2,2) \'则彻底删除之
Catch ex As Exception
End Try

3、关闭 WebBrowser1 窗口,此时会依旧会出现以下截图提示


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20200407235329.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2020/4/8 0:00:36编辑过]