Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 10107|回复: 6

[已解决]关于vba使用关闭事件的问题,请指教!

[复制链接]
发表于 2014-7-5 10:06 | 显示全部楼层 |阅读模式
本帖最后由 haikeyia 于 2014-7-5 11:39 编辑

我有一个统计表,需要在关闭前将sheet2中的数据导出到新工作表中保存,我这代码用在窗体事件中没有问题,可用在Workbook_BeforeClose(Cancel As Boolean)中,数据无法在新建的表格中粘贴保存,有点不明白了,求指教!
请见附件 tongji2.rar (10.47 KB, 下载次数: 31)
发表于 2014-7-5 11:07 | 显示全部楼层
  1. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  2.   
  3.    
  4.     Sheet2.Select
  5.     Cells.Select
  6.     Selection.Copy
  7.     Workbooks.Add
  8.     Range("A1").Select
  9.     ActiveSheet.Paste
  10.     Application.DisplayAlerts = False
  11.     Application.EnableEvents = False
  12.     ActiveWorkbook.SaveAs filename:="E:\数据统计" & Format(Date, "yyyymmdd")
  13.     ActiveWindow.Close savechange = True
  14.     Windows("tongji2.xls").Activate
  15.     Sheet3.Select
  16.     ActiveWindow.Close savechange = True
  17. End Sub
复制代码
测了有效呀。
回复

使用道具 举报

发表于 2014-7-5 11:11 | 显示全部楼层
这样有个BUG,关闭后再次打开同一个文件,事件已经不起作用了。
回复

使用道具 举报

 楼主| 发表于 2014-7-5 11:15 | 显示全部楼层
我的代码能够生成新的文件,但没有数据,不知哪儿的原因
回复

使用道具 举报

发表于 2014-7-5 11:19 | 显示全部楼层
  1. Private isClose As Boolean
  2. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  3.     If Not iclose Then
  4.         isClose = True
  5.         Sheet2.Select
  6.         Cells.Select
  7.         Selection.Copy
  8.         Workbooks.Add
  9.         Range("A1").Select
  10.         ActiveSheet.Paste
  11.         Application.DisplayAlerts = False
  12.         ActiveWorkbook.SaveAs filename:="E:\数据统计" & Format(Date, "yyyymmdd")
  13.         ActiveWindow.Close savechange = True
  14.         Application.DisplayAlerts = True
  15.         Windows("tongji2.xls").Activate
  16.         Sheet3.Select
  17.         ActiveWindow.Close savechange = True
  18.         MsgBox "ok"
  19.     End If
  20. End Sub
复制代码
回复

使用道具 举报

发表于 2014-7-5 11:26 | 显示全部楼层    本楼为最佳答案   
  1. Option Explicit
  2. Private isClose As Boolean
  3. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  4.     If Not isClose Then
  5.         isClose = True
  6.         Sheet2.Copy
  7.         Application.DisplayAlerts = False
  8.         ActiveWorkbook.SaveAs filename:="E:\数据统计" & Format(Date, "yyyymmdd")
  9.         ActiveWindow.Close savechanges:=True
  10.         Application.DisplayAlerts = True
  11.         Windows("tongji2.xls").Activate
  12.         Sheet3.Select
  13.         MsgBox "ok"
  14.         ActiveWindow.Close savechanges:=True
  15.     End If
  16. End Sub
复制代码
刚有错误。
回复

使用道具 举报

 楼主| 发表于 2014-7-5 11:39 | 显示全部楼层
本帖最后由 haikeyia 于 2014-7-5 14:46 编辑

可以实现了,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-24 03:31 , Processed in 0.389859 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表