Excel精英培训网

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

[已解决]新年度自动备份数据出错问题

[复制链接]
发表于 2014-5-15 09:13 | 显示全部楼层 |阅读模式
工业产品档案管理.zip (23.36 KB, 下载次数: 28)
C~~P82HWPZVT2[RYFTCQRNG.jpg
 楼主| 发表于 2014-5-15 09:21 | 显示全部楼层
自动备份后,系统清除表一数据,表四年度时间变为本年度,重新开始新年度工作
回复

使用道具 举报

发表于 2014-5-15 09:30 | 显示全部楼层
看看引用的range对象是不是空的了。
回复

使用道具 举报

 楼主| 发表于 2014-5-15 09:46 | 显示全部楼层
hwc2ycy 发表于 2014-5-15 09:30
看看引用的range对象是不是空的了。

感谢老师关注。引用的range对象不是空的吧?备份出的表中,VBA编码和模块也未删除掉。VBA我刚刚开始学习,请老师多指点。
回复

使用道具 举报

发表于 2014-5-15 10:30 | 显示全部楼层
你用的是savecopyas方法,是重新备份一个。当前的工作簿还是原来的不是新备份的。
你的错误是还有个change事件。
可以在在调用clearcontents方法前先禁用事件。

回复

使用道具 举报

发表于 2014-5-15 10:32 | 显示全部楼层
SaveCopyAs 方法
参阅参阅参阅参阅将指定工作簿的副本保存到文件,但不更改内存中的打开工作簿。

回复

使用道具 举报

发表于 2014-5-15 10:33 | 显示全部楼层
SaveCopyAs 方法
参阅参阅参阅参阅将指定工作簿的副本保存到文件,但不更改内存中的打开工作簿。
  1.     Sheet1.Activate
  2.     If Year(Date) > Sheet4.[b2] Then
  3.         MsgBox "新年度在d盘许可档案备份目录下自动备份上年度档案表,清空后重新开始工作!", , "提示"
  4.         aa = InputBox("请输入继续工作密码!", "密码录入")
  5.         ' DoEvents
  6.         If aa = VBA.Format(VBA.Date, "YYYYMMDD") Then
  7.             MsgBox "密码正确!欢迎在新年度使用系统!"

  8.             Dim TheBackUpDir As String
  9.             TheBackUpDir = "D:\许可档案备份"
  10.             If Len(Dir(TheBackUpDir, vbDirectory)) = 0 Then
  11.                 MkDir TheBackUpDir
  12.             End If
  13.             ThisWorkbook.SaveAs TheBackUpDir & "" & Year(Date) - 1 & "工业产品档案备份.xls"
  14.             With ActiveWorkbook

  15.                 For Each ms In .Sheets(1).Shapes
  16.                     If ms.Type = 6 Or ms.Type = 8 Then ms.Delete
  17.                 Next ms
  18.                 For Each vbc In .VBProject.VBComponents
  19.                     If vbc.Type = 100 Then
  20.                         vbc.CodeModule.DeleteLines 1, vbc.CodeModule.CountOfLines
  21.                     End If
  22.                 Next vbc

  23.             End With
  24.             Application.EnableEvents = False
  25.             Sheet1.Range("A3:T" & Sheet1.Range("A65536").End(3).Row).ClearContents
  26.             Sheet4.[b2] = Year(Date)
  27.             Sheet1.Select
  28.             Application.EnableEvents = True
  29.         Else
  30.             MsgBox "密码错误,程序退出!"
  31.             Application.Quit
  32.             ' ActiveWorkbook.Close False
  33.         End If
  34.     End If
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-5-15 10:46 | 显示全部楼层
本帖最后由 sdwffw 于 2014-5-15 10:52 编辑
hwc2ycy 发表于 2014-5-15 10:33
SaveCopyAs 方法
参阅参阅参阅参阅将指定工作簿的副本保存到文件,但不更改内存中的打开工作簿。


谢谢老师,测试发现,备份出的表没有数据了。同时虽然没有VBA码,但模块未删除
回复

使用道具 举报

 楼主| 发表于 2014-5-15 10:58 | 显示全部楼层
hwc2ycy 发表于 2014-5-15 10:33
SaveCopyAs 方法
参阅参阅参阅参阅将指定工作簿的副本保存到文件,但不更改内存中的打开工作簿。

想法是备份出的表保留数据,去掉VBA编码和模块,并不需要同时打开此备份表。备份结束后,原表只清除数据,保留程序功能,“设置表”中时间改为当前年度,重新开始工作。
回复

使用道具 举报

发表于 2014-5-15 11:22 | 显示全部楼层
模块的删除因为你原来的代码里没有针对标准模块做删除操作,呆会我再改下。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 20:35 , Processed in 0.525676 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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