vb调用excel后如何将excel彻底关闭 100

PrivateSubCommand1_Click()DimxlAppAsExcel.ApplicationDimxlBookAsExcel.WorkbookDimxlSh... Private Sub Command1_Click()
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim FileName, SheetName As String
FileName = "D:\liulb\try\7252.xls" 'excel文件名
SheetName = "sheet1" '表名
Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象
Set xlBook = xlApp.Workbooks.Open(FileName) '打开已经存在的EXCEL工件簿文件
xlApp.Visible = False '设置EXCEL对象可见(或不可见)
Set xlSheet = xlBook.Worksheets(SheetName) '设置活动工作表
xlSheet.Cells(5, 8) = Text1.Text '给单元格B5赋值
xlSheet.Cells(6, 8) = Text2.Text '取C2的值
xlSheet.Cells(13, 1) = Text3.Text
xlSheet.Cells(5, 19) = Text4.Text
xlApp.Run "'7252.xls'!Main.Main"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
"D:\liulb\try" & "\" & "Performace graphs of" & " " & xlSheet.Cells(13, 1) & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:= _
True, IgnorePrintAreas:=False, OpenAfterPublish:=True

xlBook.Saved = True
xlBook.Close
xlApp.Quit '关闭EXCEL
Set xlApp = Nothing '释放EXCEL对象
End Sub
---------------------------------------------------------------------
想实现的功能就是;VB做成的一个EXE小程序,能在后台打开excel并运行出结果后自动保存为pdf.
目前存在的问题:
第一次打开exe,后可以运行,但重新输入参数以后运行可能会报错
后台总是有个excel没有关掉,重复使用该程序后,会出现很多很多只读的excel需要关闭。
展开
 我来答
tystq
2014-12-11 · TA获得超过1201个赞
知道小有建树答主
回答量:943
采纳率:100%
帮助的人:832万
展开全部

这个我也遇到,我的解决方案是杀进程

Private Sub Command1_Click()
   Kill ("EXCEL.EXE")'这里是调用
   
End Sub
Private Sub Kill(str As String)
 Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
 Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name='" & str & "'")
 For Each objProcess In colProcessList
   objProcess.Terminate '结束进程
 Next
 Set objProcess = Nothing
 Set colProcessList = Nothing
 Set objWMIService = Nothing
End Sub
追问
你这个是相当于在VB界面上在多设置一个按键是吧?
追答
晕,你自己在过程需要的时候调用 Kill ("EXCEL.EXE")'就可以了啊
比如放到你的过程
xlApp.Quit '关闭EXCEL
Set xlApp = Nothing '释放EXCEL对象
Kill ("EXCEL.EXE")
匿名用户
2014-12-11
展开全部
Shell "cmd.exe /c taskkill /f /im excel.exe", vbHide
如果你打开了多个EXCEL,即执行多次,如果不知道多少,可以判断进程是否存在再执行。

代码:
BACKENDP:
If CheckApplicationIsRun("EXCEL.exe") = True Then
Shell "cmd.exe /c taskkill /IM EXCEL.exe /F /T", vbHide
GoTo BACKENDP:
End If
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式