VBA批量处理Excel文件时如何保护存在的指定工作表
实现方案
第一步:添加通用判断函数
先在当前VBA模块的所有过程外,新增一个工作表存在性判断的辅助函数:
' 辅助函数:判断指定工作簿中是否存在对应名称的工作表 Function SheetExists(wb As Workbook, sheetName As String) As Boolean Dim ws As Worksheet On Error Resume Next Set ws = wb.Sheets(sheetName) On Error GoTo 0 SheetExists = Not ws Is Nothing End Function
第二步:插入保护逻辑到原有代码中
找到原有代码中Application.Calculation = xlCalculationAutomatic这一行,在它后面、wb.Protect "Senha453" 'bloquear planilha这一行前面,插入如下批量保护逻辑:
' 批量判断并保护目标工作表 Dim targetSheets As Variant, sheetName As Variant ' 把所有需要保护的工作表名称放到数组里 targetSheets = Array("input dados", "CDC", "LEASING") For Each sheetName In targetSheets ' 仅当工作表存在时执行保护 If SheetExists(wb, CStr(sheetName)) Then wb.Sheets(sheetName).Protect Password:="Senha453" ' 如果需要放开筛选、排序等权限,可补充参数,示例: ' wb.Sheets(sheetName).Protect Password:="Senha453", AllowFiltering:=True, AllowSorting:=True End If Next
额外注意事项
原有代码末尾的优化设置重置部分存在笔误:
' 错误写法 Application.AskToUpdateLinks = Trueele ' 修改为正确写法 Application.AskToUpdateLinks = True
否则运行到此处会触发编译错误。
内容的提问来源于stack exchange,提问作者AllanA
相关产品推荐
相关产品推荐

