受保护Excel工作表运行列文件加超链接VBA宏失效问题求助
问题原因
你设置的UserInterFaceOnly:=True仅允许VBA修改单元格内容等基础操作,插入超链接属于受限制的编辑操作,不在默认开放的权限范围内,所以会运行失败。
解决方案1:宏运行前后临时切换工作表保护(兼容性最优,所有Excel版本通用)
修改updatting过程代码,执行操作前先取消保护,操作完成后重新开启保护即可,同时建议明确指定操作工作表避免误操作:
Sub updatting() Dim xFSO As Object Dim xFolder As Object Dim xFile As Object Dim xPath As String Dim I As Integer ' 先取消Sheet3保护 Sheet3.Unprotect Password:="abc" xPath = "C:\Users\risha\Downloads\a_few_little_tests\New folder" If xPath = "" Then Exit Sub Set xFSO = CreateObject("Scripting.FileSystemObject") Set xFolder = xFSO.GetFolder(xPath) For Each xFile In xFolder.Files I = I + 1 ' 明确指定操作Sheet3,避免ActiveSheet误操作其他工作表 Sheet3.Hyperlinks.Add Sheet3.Cells(I, 14), xFile.Path, , , xFile.Name Next ' 操作完成后重新开启保护,保留UserInterFaceOnly设置 Sheet3.Protect Password:="abc", UserInterFaceOnly:=True End Sub
解决方案2:开启保护时直接开放超链接插入权限(适合Excel 2010及以上版本)
修改Workbook_Open中的保护代码,添加AllowInsertingHyperlinks:=True参数,直接允许插入超链接操作:
Private Sub Workbook_Open() Sheet3.Protect Password:="abc", UserInterFaceOnly:=True, AllowInsertingHyperlinks:=True End Sub
注意:该方案仅支持在未锁定的单元格插入超链接,如果你的第14列(N列)单元格设置了锁定,还是需要先取消单元格锁定,或者使用第一种方案。
内容的提问来源于stack exchange,提问作者Shab Meh
相关产品推荐
相关产品推荐

