afrcmg 2022-07-27 00:53 采纳率: 82.4%
浏览 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日

悬赏问题

  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签)
  • ¥50 sft下载大文阻塞卡死
  • ¥15 机器人轨迹规划相关问题
  • ¥15 word样式右侧翻页键消失
  • ¥15 springboot+vue 集成keycloak sso到阿里云
  • ¥15 win7系统进入桌面过一秒后突然黑屏