vb调用excel文件,当保存时,如果点取消会报错,是怎么回事呢

我没用api编写,只是在需要调用excel的按钮里写了如下代码:PrivateSubImage6_Click()'调出excel,以便打印DimxlappAsExcel.... 我没用api编写,只是在需要调用excel的按钮里写了如下代码:

Private Sub Image6_Click() '调出excel,以便打印
Dim xlapp As Excel.Application
Dim xlbook As Excel.Workbook
Dim xlsheet As Excel.Worksheet
Set xlapp = CreateObject("excel.application")
Set xlbook = Excel.Workbooks.Open(App.Path & "\data\base.xls")
Set xlsheet = Excel.Worksheets(1)
xlapp.Visible = True

With xlsheet
.Cells(5, 3) = textname.Text '姓名
.Cells(5, 5) = "" '主险
.Cells(5, 7) = "" '附加险
Dim excel_i
For excel_i = 0 To 7
.Cells(excel_i + 7, 3) = Textresult1(excel_i) & " 元" '医疗费
.Cells(excel_i + 7, 4) = Textresult2(excel_i) & " 元" '扣除费
Next excel_i
.Cells(14, 5) = Textresult3(7) & " 元" '理算费
.Cells(15, 2) = Labelresult.Caption '理算公式
End With

xlbook.SaveAs "d:\计算表-" & textname.Text & ".xls"
End Sub
有时候保存好了,关闭excel后,发现任务管理器里还是有excel进程,
该怎么改进才好呢?
l00o00l你好,错误解决了,
但是
点击取消后,他问我要不要保存base.xls 就是我开始打开的那个。怎么能让它不显示呢?
我马上要上台讲解使用方法,这对我很重要。成功解决的话我会追加分的
展开
 我来答
l00o00l
推荐于2016-07-18
知道答主
回答量:16
采纳率:0%
帮助的人:0
展开全部
VB错误处理使用On Error语句。
我试着给你改了一下,你看是不是这样。
Private Sub Image6_Click() '调出excel,以便打印
Dim xlapp As Excel.Application
Dim xlbook As Excel.Workbook
Dim xlsheet As Excel.Worksheet
'********************追加代码开始*********************
On Error GoTo Image6_Click_Err
'********************追加代码结束*********************
Set xlapp = CreateObject("excel.application")
Set xlbook = Excel.Workbooks.Open(App.path & "\data\base.xls")
Set xlsheet = Excel.Worksheets(1)
xlapp.Visible = True

With xlsheet
.Cells(5, 3) = textname.Text '姓名
.Cells(5, 5) = "" '主险
.Cells(5, 7) = "" '附加险
Dim excel_i
For excel_i = 0 To 7
.Cells(excel_i + 7, 3) = Textresult1(excel_i) & " 元" '医疗费
.Cells(excel_i + 7, 4) = Textresult2(excel_i) & " 元" '扣除费
Next excel_i
.Cells(14, 5) = Textresult3(7) & " 元" '理算费
.Cells(15, 2) = Labelresult.Caption '理算公式
End With

xlbook.SaveAs "d:\计算表-" & textname.Text & ".xls"
'********************追加代码开始*********************
Exit Sub
Image6_Click_Err:
If Not xlbook Is Nothing Then
xlbook.Close
Set xlbook = Nothing
End If
If Not xlapp Is Nothing Then
xlapp.Quit
Set xlapp = Nothing
End If
'********************追加代码结束*********************
End Sub
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-11-05
展开全部
Excel.Application对象创建后,系统将启动Excel进程,在程序运行完毕后,必须让Excel.Application对象Quit(退出),否则,系统进程将无法消除。如同你的应用程序,在程序结束时要End掉一样。如果Excel.Application不Quit,就如同你的程序未End而仅仅Hide,程序实际尚未结束,只是未在任务栏显示。另外,编程要形成一个良好的习惯,创建的对象要卸载:Set obj = Nothing以释放内存。
鉴于此,在你的程序结束前,要:
xlApp.Quit
Set xlsheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
89248541
2010-11-05 · TA获得超过538个赞
知道小有建树答主
回答量:174
采纳率:100%
帮助的人:170万
展开全部
xlBook.Close
xlApp.Quit '关闭Excel
Set xlBook = Nothing
Set xlApp = Nothing
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lyhx5232
2010-11-05 · TA获得超过473个赞
知道小有建树答主
回答量:557
采纳率:0%
帮助的人:558万
展开全部
在End Sub前面加上下面的几行代码:
xlbook.Close
xlapp.Quit
Set xlBook = Nothing
Set xlApp = Nothing
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式