我想要做一个自动解锁Excel的VBA脚本。
手上的文件的VBA工具是锁着的,也就是说有脚本也进不去。
所以实际上分2步。1.解锁VBA。2.解锁保护编辑(就是Excel“审阅”里的保护工作表的解锁)
目前实际亲测已经能实现了。
第一步是新建个表格,输入脚本解锁VBA
第二步是在解锁VBA后的文件中输入解锁脚本。
但是这样有点麻烦,我想把第二步的脚本也放到第一个表格的VBA里,这样这个汇总的脚本就能先解锁VBA,再解锁保护
但是汇总的脚本,第1步是没问题的,第2步总是不行(偶尔好像有一次我发现成功了,但问题是好像保存不了,也就是说有可能是成功但没保存)。我不懂VBA,所以上来问问,看能不能帮忙看下是哪里的问题,是不是保存的问题?怎么改?
代码如下
Sub MoveProtect()
Dim FileName As String
FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla),*.xls;*.xla", , "VBA破解")
If FileName = CStr(False) Then
Exit Sub
Else
VBAPassword FileName, False
End If
'上面是解开VBA密码的脚本,每次都能成功,下面是解开保护区域的脚本,每次不能成功,感觉好像是因为保存不成功的原因
'我试过把xlBook.save放到For里面,但是提示“只读”
Dim Sheet As Excel.Worksheet
Set xlBook = Workbooks.Open(FileName)
'For i = 1 To Worksheets.Count
For Each Sheet In xlBook.Worksheets
'Set Sheet = xlBook.Worksheets(i)
Sheet.Protect DrawingObjects:=True, CONTENTS:=True, AllowFiltering:=True
Sheet.Protect DrawingObjects:=False, CONTENTS:=True, AllowFiltering:=True
Sheet.Unprotect
Next
xlBook.Save
xlBook.Close
End Sub
检查一下 VBAPassword 函数是不是在去除密码后没有成功关闭文件,卡在内存里,所以后面无法修改。
你想让鲁智深倒拔垂杨柳
但是鲁智深在睡觉
所以你需要先派时迁把他叫醒
现在你问:我能不能不派时迁去,让鲁智深自己叫醒自己
你自己觉得有可能吗
UnprotectSharing和ProtectSharing都属于Workbook对象。所以你不能做你想做的事情。
您可以这样做ThisWorkbook.UnprotectSharing和ThisWorkbook.ProtectSharing但这只是为了保护共享工作簿设置而设计的,以便人们无法在没有密码的情况下将其删除。
其次,当共享工作簿时,您无法取消保护或保护工作表。您必须取消共享工作簿,取消保护工作表,然后再次共享工作簿。这不是很实际。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!