VB6运行第一次正常,运行第二次报错?

woshibanzhiyan 2019-08-12 12:53:00
窗体2放的代码如图,开始运行时,窗体1出现,点击窗体1按钮1卸载窗体1卸载,出现窗体2,录入相关资料,点击窗体2的按钮1生成的excel工作簿,正常保存。再点击窗体2的按钮2,正常卸载窗体2,出现窗体1。一个循环完成。当再次点击窗体1的按钮1,窗体1卸载,窗体2出现,录入数据后,点击窗体2的按钮1。就会出错,提示实时错误91,对象变量块或with块变量未设置。全部退出重新运行就不会报错(我在里面放了一个dot.xls的模板excel工作簿)。另外,代码最后怎么才可以测底结束excel.exe进程?我的代码这样的,麻烦帮忙改一改。万分感谢。
Private Sub Command1_Click()
Dim xlApp As New Excel.Application '定义并创建EXCEL对象
Dim xlBook As Excel.Workbook '创建工作簿
'xlapp.DisplayAlerts =False
xlApp.Visible = True '让Excel可见
Set xlBook = xlApp.Workbooks.Open(App.Path & "/dot.xls") '打开Excel模板
With xlBook.ActiveSheet
.Range("b4") = Text1.Text '填充第一行第一列的值
.Range("i4") = Text2.Text ' 填充其他行列的值,具体的填充位置得根据模板来做
End With
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=1234 '表格设定密Set excel_Book = excel_App.Workbooks.Open(App.Path & "\dot.XLS")
ChDir "D:\评定表牧牛科技"
Dim a As Long
ActiveWorkbook.SaveAs FileName:="D:\评定表牧牛科技\" & Text1.Text & Text2.Text & ".xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
Excel.ActiveWorkbook.Close
Set excel_App = Nothing
End Sub
...全文
272 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuifengde 2019-08-14
  • 打赏
  • 举报
回复
在运行前,先 on error resume next 下kill excel进程 再开始你的业务
woshibanzhiyan 2019-08-12
  • 打赏
  • 举报
回复
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=1234 '表格设定密Set excel_Book = excel_App.Workbooks.Open(App.Path & "\dot.XLS") 这一行开始报错。 本代码第一次运行没有问题。再次运行时报错,原因是:第一次运行后excel.exe仍在进程中。所以才这样;如果我在任务管理器中手动结束excel.exe,又会出现实时错误462远程服务器不存在或不能使用。
VB业余爱好者 2019-08-12
  • 打赏
  • 举报
回复
首先,加断点看报错的是哪一行。

其次,在Set excel_App = Nothing前建议先关闭excel_App 对象,即excel_App.Close
VB业余爱好者 2019-08-12
  • 打赏
  • 举报
回复
你定义的EXCEL对象名是xlApp,为什么最后关闭的变成了excel_App ?改好了,试一下。

Private Sub Command1_Click()
Dim xlApp As New Excel.Application '定义并创建EXCEL对象
Dim xlBook As Excel.Workbook '创建工作簿
'xlapp.DisplayAlerts =False

xlApp.Visible = True '让Excel可见
Set xlBook = xlApp.Workbooks.Open(App.Path & "/dot.xls") '打开Excel模板
With xlBook.ActiveSheet
.Range("b4") = Text1.Text '填充第一行第一列的值
.Range("i4") = Text2.Text ' 填充其他行列的值,具体的填充位置得根据模板来做
End With

xlBook.ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=1234 '表格设定密Set excel_Book = excel_App.Workbooks.Open(App.Path & "\dot.XLS")
ChDir "D:\评定表牧牛科技"
Dim a As Long

xlBook.SaveAs FileName:="D:\评定表牧牛科技\" & Text1.Text & Text2.Text & ".xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False

xlApp.Quit
Set xlApp = Nothing
End Sub
woshibanzhiyan 2019-08-12
  • 打赏
  • 举报
回复
不行,试了很多方法
VB业余爱好者 2019-08-12
  • 打赏
  • 举报
回复
引用 3 楼 milaoshu1020 的回复:
[quote=引用 1 楼 VB业余爱好者 的回复:] 首先,加断点看报错的是哪一行。 其次,在Set excel_App = Nothing前建议先关闭excel_App 对象,即excel_App.Close
好像应该是 excel_App.Quit ;[/quote] 对对对,是quit
milaoshu1020 2019-08-12
  • 打赏
  • 举报
回复
引用 1 楼 VB业余爱好者 的回复:
首先,加断点看报错的是哪一行。

其次,在Set excel_App = Nothing前建议先关闭excel_App 对象,即excel_App.Close

好像应该是 excel_App.Quit ;

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧