Excel中VBA的小问题

我想要做一个自动解锁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但这只是为了保护共享工作簿设置而设计的,以便人们无法在没有密码的情况下将其删除。

其次,当共享工作簿时,您无法取消保护或保护工作表。您必须取消共享工作簿,取消保护工作表,然后再次共享工作簿。这不是很实际。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632