afrcmg 2022-07-27 00:53 采纳率: 87.5%
浏览 64
已结题

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
  • 写回答

4条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-07-27 03:15
    关注

    检查一下 VBAPassword 函数是不是在去除密码后没有成功关闭文件,卡在内存里,所以后面无法修改。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月4日
  • 已采纳回答 7月27日
  • 创建了问题 7月27日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效