Excel精英培训网

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

[已解决]怎么能批量保护工作表

[复制链接]
发表于 2012-12-3 20:20 | 显示全部楼层 |阅读模式
哪位知道怎么批量保护工作表,谢谢啦!!
工作表的部分单元格设置了锁定,需要批量保护一个工作薄中的1-40个工作表
要求能选定锁定单元格,选定未锁定单元格和插入行
最佳答案
2012-12-3 21:06
  1. Sub 批量保护()
  2.     Dim i&, j&
  3.     'If Worksheets.Count < 40 Then Exit Sub
  4.     Do
  5.         j = Application.InputBox("请输入要锁定的工作表数量" & "[<=" & Worksheets.Count & "]" & vbCr & vbCr & "输入0则退出程序", , , , , , , 1)
  6.     Loop Until (j > 0 And j <= Worksheets.Count) Or j = 0
  7.     If j = 0 Then Exit Sub
  8.     For i = 1 To j
  9.         Worksheets(i).Protect Password:="6666", DrawingObjects:=True, Contents:=True, Scenarios:=True _
  10.         , AllowInsertingRows:=True
  11.     Next
  12. End Sub
复制代码
发表于 2012-12-3 20:24 | 显示全部楼层
回复

使用道具 举报

发表于 2012-12-3 20:29 | 显示全部楼层
  1. Sub 批量保护()
  2.     Dim i&
  3.     If Worksheets.Count < 40 Then Exit Sub
  4.     For i = 1 To 40
  5.         Worksheets(i).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
  6.         , AllowInsertingRows:=True
  7.     Next
  8. End Sub
复制代码
回复

使用道具 举报

发表于 2012-12-3 20:33 | 显示全部楼层
  1. Sub 批量去保护()
  2.     Dim i&
  3.     If Worksheets.Count < 40 Then Exit Sub
  4.     For i = 1 To 40
  5.         Worksheets(i).Unprotect
  6.     Next
  7. End Sub
复制代码
回复

使用道具 举报

发表于 2012-12-3 20:38 | 显示全部楼层
  1. Sub 批量保护2()
  2.     Dim i&, j&
  3.     'If Worksheets.Count < 40 Then Exit Sub
  4.     Do
  5.         j = Application.InputBox("请输入要锁定的工作表数量" & "[<=" & Worksheets.Count & "]" & vbCr & vbCr & "输入0则退出程序", , , , , , , 1)
  6.     Loop Until (j > 0 And j < Worksheets.Count) Or j = 0
  7.     If j = 0 Then Exit Sub
  8.     For i = 1 To j
  9.         Worksheets(i).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
  10.         , AllowInsertingRows:=True
  11.     Next
  12. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2012-12-3 20:56 | 显示全部楼层
本帖最后由 ccentaurc2005 于 2012-12-3 20:58 编辑
hwc2ycy 发表于 2012-12-3 20:38


太谢谢班主任啦!!!能不能再提个小要求啊!!密码还没设置,密码全是"6666"
还是说这个不用设置密码就能保护工作表啊
回复

使用道具 举报

发表于 2012-12-3 21:04 | 显示全部楼层
密码只是一个可选项。
回复

使用道具 举报

发表于 2012-12-3 21:06 | 显示全部楼层    本楼为最佳答案   
  1. Sub 批量保护()
  2.     Dim i&, j&
  3.     'If Worksheets.Count < 40 Then Exit Sub
  4.     Do
  5.         j = Application.InputBox("请输入要锁定的工作表数量" & "[<=" & Worksheets.Count & "]" & vbCr & vbCr & "输入0则退出程序", , , , , , , 1)
  6.     Loop Until (j > 0 And j <= Worksheets.Count) Or j = 0
  7.     If j = 0 Then Exit Sub
  8.     For i = 1 To j
  9.         Worksheets(i).Protect Password:="6666", DrawingObjects:=True, Contents:=True, Scenarios:=True _
  10.         , AllowInsertingRows:=True
  11.     Next
  12. End Sub
复制代码
回复

使用道具 举报

发表于 2012-12-3 21:19 | 显示全部楼层
  1. Sub 批量密码保护3()
  2.     Dim i&, j&, pswd$
  3.     Do
  4.         j = Application.InputBox("请输入要锁定的工作表数量" & "[<=" & Worksheets.Count & "]" & vbCr & vbCr & "输入0则退出程序", , , , , , , 1)
  5.     Loop Until (j > 0 And j <= Worksheets.Count) Or j = 0
  6.     pswd = Application.InputBox("请输入要设置的密码", , , , , , , 2)

  7.     If j = 0 Then Exit Sub
  8.     For i = 1 To j
  9.         Worksheets(i).Protect Password:=pswd, DrawingObjects:=True, Contents:=True, Scenarios:=True _
  10.         , AllowInsertingRows:=True
  11.     Next
  12. End Sub
复制代码
回复

使用道具 举报

发表于 2012-12-3 21:39 | 显示全部楼层
  1. Sub 批量密码保护()
  2.     Dim i&, j&, pswd$
  3.     Do
  4.         j = Application.InputBox("请输入要锁定的工作表数量" & "[<=" & Worksheets.Count & "]" & vbCr & vbCr & "输入0则退出程序", , , , , , , 1)
  5.     Loop Until (j > 0 And j <= Worksheets.Count) Or j = 0
  6.     pswd = Application.InputBox("请输入要设置的密码", , , , , , , 2)

  7.     If j = 0 Then Exit Sub
  8.     For i = 1 To j
  9.         If Not Worksheets(i).ProtectContents Then
  10.         
  11.             Worksheets(i).Protect Password:=pswd, DrawingObjects:=True, Contents:=True, Scenarios:=True _
  12.             , AllowInsertingRows:=True
  13.         Else
  14.             MsgBox Worksheets(i).Name & "已打开了工作表保护,请先解决保护"
  15.         End If
  16.     Next
  17. End Sub

  18. Sub 批量去密码保护2()
  19.     Dim i&, j&, pswd$
  20.     Do
  21.         j = Application.InputBox("请输入要去除保护的工作表数量" & "[<=" & Worksheets.Count & "]" & vbCr & vbCr & "输入0则退出程序", , , , , , , 1)
  22.     Loop Until (j > 0 And j <= Worksheets.Count) Or j = 0
  23.     On Error Resume Next
  24.     If j = 0 Then Exit Sub
  25.     For i = 1 To j
  26.         If Worksheets(i).ProtectContents Then
  27.             MsgBox "准备去除 " & Worksheets(i).Name & "的保护,确定后,如有密码提示,请输入正确的密码"
  28. 1:
  29.             Worksheets(i).Unprotect
  30.             If Err.Number <> 0 Then
  31.                 MsgBox "密码不对,请重新输入"
  32.                 Err.Clear
  33.                 GoTo 1
  34.             End If
  35.         End If

  36.     Next
  37. End Sub
复制代码
再改了下,能检测工作表是否有保护。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 22:00 , Processed in 0.380972 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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