Excel工作簿的VBA循环文件夹,并删除除一张纸外的所有文件

约翰·泰勒

尝试将一些VBA组合在一起以完成一个相当简单的任务。循环浏览一个.xlsx文件文件夹,打开每个文件,删除所有工作簿中除具有相同名称的文件外的所有工作表,并使用相同的名称保存工作簿。

这是代码,但是不断抛出错误

Public Sub RemoveSheetsLoopThroughFiles()
    
    Dim targetWorkbook As Workbook
    Dim ws As Worksheet
    
    Dim filePath As String
    Dim folderPath As String
    Dim folderWildcard As String
    
    folderPath = "[folder]\"
    folderWildcard = "*.xlsx"
     
    ' Get the file path concat folder and wildcards
    filePath = Dir(folderPath & folderWildcard)
      
    Do While Len(filePath) > 0
        ' Open the workbook and set reference
        Set targetWorkbook = Workbooks.Open(Filename:=filePath)
        'Set targetWorkbook = Workbooks.Open(folderPath & folderWildcard)
        
        For Each ws In targetWorkbook ERROR HIGHLIGHT OCCURRING HERE
        Application.DisplayAlerts = False
        If ws.Name <> "[sheet name to keep]" Then
        ws.Delete
        End If
        
        Next ws
        'Application.DisplayAlerts = True

        'Debug.Print filePath
        
        filePath = Dir
        
        targetWorkbook.Close True
        
        'Set targetWorkbook = Nothing

        
    Loop
    
MsgBox ("all sheets removed")
    
End Sub
悉达思·劳特

对于targetWorkbook中的每个ws在这里发生错误突出显示将其更改为targetWorkbook.Worksheets中的每个ws。同样也不需要使用Application.DisplayAlerts = True / False或Set targetWorkbook =循环中没有任何内容;)您可能还想看看优化VBA代码并提高如何使用事件的性能– Siddharth Rout 21分钟前

顺便说一句Set TargetWorkbook = Workbooks.Open(Filename:= filePath)应该设置Set TargetWorkbook = Workbooks.Open(Filename:= folderPath&filePath)– Siddharth Rout 2分钟前编辑删除

根据我的评论,尝试一下。我测试了它,这有效

Option Explicit

Sub Sample()
    Dim scrnUpdating As Boolean
    Dim dsplyAlerts As Boolean
    
    Dim wb As Workbook
    Dim ws As Worksheet
    
    On Error GoTo Whoa
    
    Dim fldr As String: fldr = "C:\Users\routs\Desktop\Test\"
    Dim FileExtn As String: FileExtn = "*.xlsx"
    Dim filePath  As String
    
    filePath = Dir(fldr & FileExtn)
    
    With Application
        '~~> Get user's current setting
        scrnUpdating = .ScreenUpdating
        dsplyAlerts = .DisplayAlerts
        
        '~~> Set it to necessary setting
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With
   
    Do While Len(filePath) > 0
        Set wb = Workbooks.Open(Filename:=fldr & filePath)
        
        If wb.Worksheets.Count > 1 Then
            For Each ws In wb.Worksheets
                If ws.Name <> "[sheet name to keep]" Then ws.Delete
            Next ws
        Else
            MsgBox wb.Name & " ignored as it contains only 1 worksheet"
        End If
        
        wb.Close True
        DoEvents
        
        filePath = Dir
    Loop        
    MsgBox "All sheets removed"       
LetsContinue:
    With Application
        '~~> Reset original settings
        .ScreenUpdating = scrnUpdating
        .DisplayAlerts = dsplyAlerts
    End With
    
    Exit Sub
Whoa:
    MsgBox Err.Description
    Resume LetsContinue
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

复制另一张Excel工作簿中的数据-复制一张纸而不是一张纸

来自分类Dev

VBA-尝试打开文件夹中的所有工作簿

来自分类Dev

使用VBA在工作簿文件夹中循环编码?

来自分类Dev

如何删除Windows批处理脚本中除一个文件夹外的文件夹中的所有文件夹?

来自分类Dev

cmd删除除最后5个文件夹外的所有文件夹

来自分类Dev

如何用php删除文件夹中除一个以外的所有文件?

来自分类Dev

删除除特定文件夹外的所有内容

来自分类Dev

批处理文件:复制除一个文件夹外的所有文件和文件夹

来自分类Dev

VBA循环浏览文件夹中的所有文件并删除无效字符

来自分类Dev

将除一个文件夹外的所有文件夹移动到子目录-git

来自分类Dev

批处理命令从一个文件夹中删除除一个文件外的所有内容(子文件夹和文件)

来自分类Dev

文件夹中除一个命名文件夹外的所有文件夹的glob

来自分类Dev

gulp src会忽略除一个文件夹外的所有文件夹中的文件

来自分类Dev

Python从文件夹中所有excel文件中提取第一张表

来自分类Dev

恢复除一个文件夹外的所有文件

来自分类Dev

删除除X个最近的文件夹外的所有文件夹

来自分类Dev

暂存除一个文件夹外的所有文件夹

来自分类Dev

更改除一个文件夹外的所有文件夹的所有者

来自分类Dev

删除文件夹中除具有某些前缀的文件外的所有文件

来自分类Dev

删除文件夹中除具有特定名称的文件夹外的所有文件夹

来自分类Dev

自动复制除该文件夹外的文件夹中的所有文件

来自分类Dev

VBA循环浏览文件夹中的所有文件并删除无效字符

来自分类Dev

批处理文件,删除目录中除最新文件夹外的所有文件夹

来自分类Dev

删除目录中除两个特定文件夹外的所有内容

来自分类Dev

从文件夹中的所有工作簿导入数据

来自分类Dev

递归删除solaris中除特定文件外的所有文件+文件夹

来自分类Dev

为 VBA 中除一张工作表外的所有工作表输出多个 CSV 文件并重命名

来自分类Dev

合并工作簿中除一张以外的所有工作表

来自分类Dev

循环浏览子文件夹中的 Excel 文件并将数据复制并粘贴到一张纸上

Related 相关文章

  1. 1

    复制另一张Excel工作簿中的数据-复制一张纸而不是一张纸

  2. 2

    VBA-尝试打开文件夹中的所有工作簿

  3. 3

    使用VBA在工作簿文件夹中循环编码?

  4. 4

    如何删除Windows批处理脚本中除一个文件夹外的文件夹中的所有文件夹?

  5. 5

    cmd删除除最后5个文件夹外的所有文件夹

  6. 6

    如何用php删除文件夹中除一个以外的所有文件?

  7. 7

    删除除特定文件夹外的所有内容

  8. 8

    批处理文件:复制除一个文件夹外的所有文件和文件夹

  9. 9

    VBA循环浏览文件夹中的所有文件并删除无效字符

  10. 10

    将除一个文件夹外的所有文件夹移动到子目录-git

  11. 11

    批处理命令从一个文件夹中删除除一个文件外的所有内容(子文件夹和文件)

  12. 12

    文件夹中除一个命名文件夹外的所有文件夹的glob

  13. 13

    gulp src会忽略除一个文件夹外的所有文件夹中的文件

  14. 14

    Python从文件夹中所有excel文件中提取第一张表

  15. 15

    恢复除一个文件夹外的所有文件

  16. 16

    删除除X个最近的文件夹外的所有文件夹

  17. 17

    暂存除一个文件夹外的所有文件夹

  18. 18

    更改除一个文件夹外的所有文件夹的所有者

  19. 19

    删除文件夹中除具有某些前缀的文件外的所有文件

  20. 20

    删除文件夹中除具有特定名称的文件夹外的所有文件夹

  21. 21

    自动复制除该文件夹外的文件夹中的所有文件

  22. 22

    VBA循环浏览文件夹中的所有文件并删除无效字符

  23. 23

    批处理文件,删除目录中除最新文件夹外的所有文件夹

  24. 24

    删除目录中除两个特定文件夹外的所有内容

  25. 25

    从文件夹中的所有工作簿导入数据

  26. 26

    递归删除solaris中除特定文件外的所有文件+文件夹

  27. 27

    为 VBA 中除一张工作表外的所有工作表输出多个 CSV 文件并重命名

  28. 28

    合并工作簿中除一张以外的所有工作表

  29. 29

    循环浏览子文件夹中的 Excel 文件并将数据复制并粘贴到一张纸上

热门标签

归档