Excel精英培训网

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

[已解决]求自动加密

[复制链接]
发表于 2014-11-14 09:39 | 显示全部楼层 |阅读模式
42学分
本帖最后由 tayisha 于 2014-12-12 15:34 编辑

现在遇到一个自动加密文件的困难,求一个自动加密宏,具体见附件
最佳答案
2014-11-14 14:35
本帖最后由 suye1010 于 2014-11-14 15:19 编辑
  1. Dim EAPP,YBwb,MMwb,TEMPwb,i,j,d,FN,Arr,Shell, FinalFilePath,Prefix
  2. Set EAPP=CreateObject("Excel.Application")

  3. FN=EAPP.GetOpenFilename("Excel Files(*.xls;*.xlsx),*.xls;*.xlsx,All Files(*.*),*.*",,"请选择源表",False)
  4. If FN=False Then
  5. Wscript.Quit
  6. End If
  7. Set YBwb = EAPP.Workbooks.Open(FN)
  8. Arr= YBwb.Sheets(1).Cells(1,1).CurrentRegion
  9. YBwb.Close False

  10. FN=EAPP.GetOpenFilename("Excel Files(*.xls;*.xlsx),*.xls;*.xlsx,All Files(*.*),*.*",,"请选择密码文件", False)
  11. If FN=False Then
  12. Wscript.Quit
  13. End if
  14. Set MMwb = EAPP.Workbooks.Open(FN)
  15. Set d= CreateObject("Scripting.Dictionary")
  16. For i= 1 to MMwb.Sheets(1).Cells(1,1).CurrentRegion.Rows.Count
  17. d(MMwb.Sheets(1).Cells(i,1).Value)= MMwb.Sheets(1).Cells(i,2).Value
  18. Next
  19. MMwb.Close False

  20. Set Shell = CreateObject("Shell.Application")
  21. Set FinalFilePath = Shell.BrowseForFolder(0, "请选择存储加密后工作表的文件夹", 0, 0)
  22. If FinalFilePath Is Nothing Then
  23. Wscript.Quit
  24. End If

  25. Prefix = InputBox("请输入测验成绩单的周数", "测验周数")
  26. If Len(Prefix) = 0 Then
  27. Wscript.Quit
  28. End If

  29. For i=2 to UBound(Arr)
  30. Set TEMPwb=EAPP.Workbooks.Add
  31. For j=1 to UBound(Arr,2)
  32. TEMPwb.Sheets(1).Cells(1,j)=Arr(1,j)
  33. TEMPwb.Sheets(1).Cells(2,j)=Arr(i,j)
  34. Next
  35. TEMPwb.Password=d(Arr(i,1))
  36. TEMPwb.Close True,FinalFilePath.self.Path&"/"&Prefix&"-"&Arr(i,1)&".xlsx"
  37. Next

  38. Msgbox "已完成文件加密"
  39. EAPP.Quit
复制代码
只需要源表和密码表就可以,第2步也让程序自动处理了。复制代码到记事本,另存为.vbs的文件后双击运行即可。
加密成绩单.zip (746 Bytes, 下载次数: 31)

求自动加密20141114.rar

115.63 KB, 下载次数: 15

发表于 2014-11-14 14:35 | 显示全部楼层    本楼为最佳答案   

选择文件后自动加密的VBS程序

本帖最后由 suye1010 于 2014-11-14 15:19 编辑
  1. Dim EAPP,YBwb,MMwb,TEMPwb,i,j,d,FN,Arr,Shell, FinalFilePath,Prefix
  2. Set EAPP=CreateObject("Excel.Application")

  3. FN=EAPP.GetOpenFilename("Excel Files(*.xls;*.xlsx),*.xls;*.xlsx,All Files(*.*),*.*",,"请选择源表",False)
  4. If FN=False Then
  5. Wscript.Quit
  6. End If
  7. Set YBwb = EAPP.Workbooks.Open(FN)
  8. Arr= YBwb.Sheets(1).Cells(1,1).CurrentRegion
  9. YBwb.Close False

  10. FN=EAPP.GetOpenFilename("Excel Files(*.xls;*.xlsx),*.xls;*.xlsx,All Files(*.*),*.*",,"请选择密码文件", False)
  11. If FN=False Then
  12. Wscript.Quit
  13. End if
  14. Set MMwb = EAPP.Workbooks.Open(FN)
  15. Set d= CreateObject("Scripting.Dictionary")
  16. For i= 1 to MMwb.Sheets(1).Cells(1,1).CurrentRegion.Rows.Count
  17. d(MMwb.Sheets(1).Cells(i,1).Value)= MMwb.Sheets(1).Cells(i,2).Value
  18. Next
  19. MMwb.Close False

  20. Set Shell = CreateObject("Shell.Application")
  21. Set FinalFilePath = Shell.BrowseForFolder(0, "请选择存储加密后工作表的文件夹", 0, 0)
  22. If FinalFilePath Is Nothing Then
  23. Wscript.Quit
  24. End If

  25. Prefix = InputBox("请输入测验成绩单的周数", "测验周数")
  26. If Len(Prefix) = 0 Then
  27. Wscript.Quit
  28. End If

  29. For i=2 to UBound(Arr)
  30. Set TEMPwb=EAPP.Workbooks.Add
  31. For j=1 to UBound(Arr,2)
  32. TEMPwb.Sheets(1).Cells(1,j)=Arr(1,j)
  33. TEMPwb.Sheets(1).Cells(2,j)=Arr(i,j)
  34. Next
  35. TEMPwb.Password=d(Arr(i,1))
  36. TEMPwb.Close True,FinalFilePath.self.Path&"/"&Prefix&"-"&Arr(i,1)&".xlsx"
  37. Next

  38. Msgbox "已完成文件加密"
  39. EAPP.Quit
复制代码
只需要源表和密码表就可以,第2步也让程序自动处理了。复制代码到记事本,另存为.vbs的文件后双击运行即可。
加密成绩单.zip (746 Bytes, 下载次数: 31)
回复

使用道具 举报

 楼主| 发表于 2014-11-14 15:32 | 显示全部楼层
suye1010 发表于 2014-11-14 14:35
只需要源表和密码表就可以,第2步也让程序自动处理了。复制代码到记事本,另存为.vbs的文件后双击运行即可。 ...

太谢谢了,就是我要的
回复

使用道具 举报

 楼主| 发表于 2014-12-12 15:23 | 显示全部楼层
上面的宏不知道咋地不能用了,求改善
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-25 23:50 , Processed in 0.326048 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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