Excel精英培训网

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

[已解决]求高手帮看看加密代码部分

[复制链接]
发表于 2013-5-6 12:32 | 显示全部楼层 |阅读模式
  1. '需要加一段加密代码,当我运行该宏代码的时候自动解锁工作表(不需要输入密码),填充完数据后又加密。并且加密后还可以复制/粘贴工作表数据。密码要求:123
  2. Sub 分月汇总表()
  3. n = Sheets("明细表").Range("A65536").End(xlUp).Row
  4. For i = 5 To 31 '费用统计表行数

  5. '总金额
  6. Cells(i, 5) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " , 明细表!D4:D" & n & " ,""=2013年1月"") "
  7. Cells(i, 11) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " , 明细表!D4:D" & n & " ,""=2013年2月"") "
  8. Cells(i, 17) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " , 明细表!D4:D" & n & " ,""=2013年3月"") "
  9. Cells(i, 23) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " , 明细表!D4:D" & n & " ,""=2013年4月"") "
  10. Cells(i, 29) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " , 明细表!D4:D" & n & " ,""=2013年5月"") "
  11. Cells(i, 35) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " , 明细表!D4:D" & n & " ,""=2013年6月"") "
  12. Cells(i, 41) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " , 明细表!D4:D" & n & " ,""=2013年7月"") "
  13. Cells(i, 47) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " , 明细表!D4:D" & n & " ,""=2013年8月"") "
  14. Cells(i, 53) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " , 明细表!D4:D" & n & " ,""=2013年9月"") "
  15. Cells(i, 59) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " , 明细表!D4:D" & n & " ,""=2013年10月"") "
  16. Cells(i, 65) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " , 明细表!D4:D" & n & " ,""=2013年11月"") "
  17. Cells(i, 71) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " , 明细表!D4:D" & n & " ,""=2013年12月"") "
  18. '用油金额
  19. Cells(i, 6) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年1月"") "
  20. Cells(i, 12) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年2月"") "
  21. Cells(i, 18) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年3月"") "
  22. Cells(i, 24) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年4月"") "
  23. Cells(i, 30) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年5月"") "
  24. Cells(i, 36) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年6月"") "
  25. Cells(i, 42) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年7月"") "
  26. Cells(i, 48) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年8月"") "
  27. Cells(i, 54) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年9月"") "
  28. Cells(i, 60) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年10月"") "
  29. Cells(i, 66) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年11月"") "
  30. Cells(i, 72) = "=SUMIFS(明细表!$H$4:$H$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年12月"") "
  31. '用油升数
  32. Cells(i, 7) = "=SUMIFS(明细表!$G$4:$G$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年1月"") "
  33. Cells(i, 13) = "=SUMIFS(明细表!$G$4:$G$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年2月"") "
  34. Cells(i, 19) = "=SUMIFS(明细表!$G$4:$G$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年3月"") "
  35. Cells(i, 25) = "=SUMIFS(明细表!$G$4:$G$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年4月"") "
  36. Cells(i, 31) = "=SUMIFS(明细表!$G$4:$G$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年5月"") "
  37. Cells(i, 37) = "=SUMIFS(明细表!$G$4:$G$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年6月"") "
  38. Cells(i, 43) = "=SUMIFS(明细表!$G$4:$G$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年7月"") "
  39. Cells(i, 49) = "=SUMIFS(明细表!$G$4:$G$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年8月"") "
  40. Cells(i, 55) = "=SUMIFS(明细表!$G$4:$G$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年9月"") "
  41. Cells(i, 61) = "=SUMIFS(明细表!$G$4:$G$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年10月"") "
  42. Cells(i, 67) = "=SUMIFS(明细表!$G$4:$G$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年11月"") "
  43. Cells(i, 73) = "=SUMIFS(明细表!$G$4:$G$" & n & " , 明细表!$F$4:$F$" & n & " , B" & i & " ,明细表!$E$4:$E$" & n & " , ""=加油费"" , 明细表!D4:D" & n & " ,""=2013年12月"") "
  44. '期初里程
  45. For j = 0 To 11
  46. If Cells(i, 2) = Sheets("车辆里程统计表").Cells(i - 1, 2) Then
  47. Cells(i, 8 + j * 6) = Sheets("车辆里程统计表").Cells(i - 1, 5 + j * 2)
  48. Cells(i, 9 + j * 6) = Sheets("车辆里程统计表").Cells(i - 1, 6 + j * 2)
  49. Cells(i, 10 + j * 6) = Cells(i, 9 + j * 6) - Cells(i, 8 + j * 6)
  50. Else
  51. Cells(i, 8 + j * 6) = "不匹配"
  52. End If
  53. Next j


  54. Next i

  55. End Sub

复制代码
最佳答案
2013-5-6 14:41
  1. Sub ProtectSheet()
  2.     ActiveSheet.protect Password:="123", Contents:=True, Scenarios:=True
  3.     ActiveSheet.EnableSelection = xlUnlockedCells
  4. End Sub

  5. Sub UnprotectSheet()
  6.     ActiveSheet.Unprotect Password:="123"
  7. End Sub
复制代码
不会提示嘛。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-5-6 13:29 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-5-6 14:07 | 显示全部楼层
hwc2ycy 发表于 2013-5-6 13:29
这有加密的价值嘛,

大哥,你不知道,公司里面用表的人老是自己修改表的结构,老是帮他们重新设置,很辛苦的,只能加密不让他们乱改!

点评

呵呵,你录制保护工作表,工作簿的宏吧,就会了。  发表于 2013-5-6 14:09
回复

使用道具 举报

 楼主| 发表于 2013-5-6 14:26 | 显示全部楼层
yunsin1015 发表于 2013-5-6 14:07
大哥,你不知道,公司里面用表的人老是自己修改表的结构,老是帮他们重新设置,很辛苦的,只能加密不让他 ...

我录了:ActiveSheet.Unprotect Password:="123"


ActiveSheet.Protect Password:="123"
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells



可是我运行的时候会出现输入密码的那个对话框,输入密码才能接着运算!我很郁闷,所以才求救啊~~~~{:011:}
回复

使用道具 举报

发表于 2013-5-6 14:36 | 显示全部楼层
==,我试试。
回复

使用道具 举报

发表于 2013-5-6 14:41 | 显示全部楼层    本楼为最佳答案   
  1. Sub ProtectSheet()
  2.     ActiveSheet.protect Password:="123", Contents:=True, Scenarios:=True
  3.     ActiveSheet.EnableSelection = xlUnlockedCells
  4. End Sub

  5. Sub UnprotectSheet()
  6.     ActiveSheet.Unprotect Password:="123"
  7. End Sub
复制代码
不会提示嘛。
回复

使用道具 举报

发表于 2013-5-6 14:42 | 显示全部楼层
yunsin1015 发表于 2013-5-6 14:26
我录了:ActiveSheet.Unprotect Password:="123"

你是不是要运算的没打开呢,保护设置不对。
回复

使用道具 举报

发表于 2013-5-6 14:44 | 显示全部楼层
保护后,你要去修改就不行的。
录个动画吧。
回复

使用道具 举报

发表于 2013-5-6 14:46 | 显示全部楼层
我把参数搞错了,默认值原来是TRUE,可以省略的,倒是为FALSE的不能省,

Password 可选 Variant 一个字符串,该字符串为工作表或工作簿指定区分大小写的密码。如果省略此参数,不用密码就可以取消对工作表或工作簿的保护。否则,必须指定密码才能取消对工作表或工作簿的保护。如果忘记了密码,就无法取消对工作表或工作簿的保护。
DrawingObjects 可选 Variant 如果为 True,则保护形状。默认值是 True。
Contents 可选 Variant 如果为 True,则保护内容。对于图表,这样会保护整个图表。对于工作表,这样会保护锁定的单元格。默认值是 True。
Scenarios 可选 Variant 如果为 True,则保护方案。此参数仅对工作表有效。默认值是 True。
UserInterfaceOnly 可选 Variant 如果为 True,则保护用户界面,但不保护宏。如果省略此参数,则既保护宏也保护用户界面。
回复

使用道具 举报

发表于 2013-5-6 15:17 | 显示全部楼层
本帖最后由 ZengLH 于 2013-5-7 08:35 编辑

在你的thisworkbook中加入如下代碼,并將如下“你的工作表名稱”改成你自己想加密在工作表名稱就行了!

Private Sub Workbook_BeforeClose(Cancel As Boolean)
   Sheets("你的工作表名稱").Protect Password:="123", AllowFiltering:=True, AllowUsingPivotTables:=True
End Sub

Private Sub Workbook_Open()
Sheets("你的工作表名稱").Unprotect Password:="123"
End Sub



如果別人也啟用宏,一樣可以修改表單!只用如下代碼就行了,每次使用你自己要輸密碼,別人不知道密碼就改不了
Private Sub Workbook_BeforeClose(Cancel As Boolean)
   Sheets("你的工作表名稱").Protect Password:="123", AllowFiltering:=True, AllowUsingPivotTables:=True
End Sub
000.JPG
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 04:29 , Processed in 0.496046 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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