You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

遍历文件夹处理XLSX文件:删除工作表并保护工作簿问题及修复

批量处理Excel文件:删除指定工作表并设置工作簿保护

我需要编写宏完成以下操作:遍历指定文件夹内所有XLSX文件,删除名为“Summary Copying”和“Sum Totals”的工作表,同时设置工作簿保护。但最初的代码不仅无法完成删除操作,就算去掉删除逻辑,也无法对目标文件生效,运行后更改还没保存。

初始错误代码

Sub LoopThroughFilesFolder()
Dim StrFile As String, wb As Workbook, ws As Worksheet
StrFile = Dir("C:\Users\user\Documents\Destroy\*.xlsx*")
Do While Len(StrFile) > 0

    For Each ws In Worksheets
    If ws.Name = "Summary Copying" Or ws.Name = "Sum Totals" Then
        Application.DisplayAlerts = False
        ws.Delete
        Application.DisplayAlerts = True
    End If
    Next
    
    ProtectBookStructure ThisWorkbook, "password"
    StrFile = Dir
Loop
End Sub

错误原因分析

  • 未打开目标文件夹中的文件:仅用Dir获取文件名,但从未打开目标文件,所有操作都只在当前运行宏的工作簿(ThisWorkbook)上执行,完全没触及目标文件。
  • 未保存更改:就算操作了正确文件,也没有保存步骤,导致修改丢失。
  • 工作表遍历未指定工作簿:For Each ws In Worksheets默认指向当前工作簿,而非目标文件的工作表。

修复后的代码

Sub LoopThroughFilesFolder()

   Dim myfile As String
   Dim wb As Workbook, ws As Worksheet

Application.ScreenUpdating = False

    myfile = Dir("C:\Users\user\Documents\Destroy\*.xlsx*")
    
        Do While myfile <> ""
           
           Set wb = Workbooks.Open(fileName:=myfile)
            
            For Each ws In wb.Worksheets
            If ws.Name = "Summary Copying" Or ws.Name = "Sum Totals" Then
                Application.DisplayAlerts = False
                ws.Delete
                Application.DisplayAlerts = True
            End If
            Next
          
           ProtectBookStructure wb, "password"
           
        wb.Close savechanges:=True
        myfile = Dir
    Loop
    
Application.ScreenUpdating = True

End Sub

修复要点

  • 用Workbooks.Open打开目标文件,通过Set wb绑定到该工作簿,确保后续操作针对目标文件。
  • 将For Each ws In Worksheets改为For Each ws In wb.Worksheets,明确遍历目标工作簿的工作表。
  • 操作完成后用wb.Close savechanges:=True保存更改并关闭文件,确保修改生效。
  • 加入Application.ScreenUpdating = False/True,提升运行效率,避免界面闪烁。

内容的提问来源于stack exchange,提问作者ojmayo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 16:31:14