通过文件扩展名循环,excel vba

时间:2016-01-13 10:53:26

标签: excel-vba vba excel

我使用的是文件扩展数组并循环遍历工作簿文件夹。代码命名为Sheet(1).name =“MyName”

我注意到即使数组中没有actionButton,它仍然会打开并命名表格。

enter image description here

这是代码。任何人都可以看到他们是否遇到同样的问题并且能够解决它。

"*.xlsm"

2 个答案:

答案 0 :(得分:7)

HELLO.ABCD的旧版短(8.3)文件名看起来像ABCDEF~1.ABC - 请参阅扩展名被截断为3个字符。

在你的情况下,GET.XLSMABCDEF~1.XLS8.3 form is also matched由Win32 API FindFirstFile(这是Dir()调用的内容)当你指定*.XLS

只需使用

过滤掉循环中的异常
If Not UCase$(MyFile) Like "*.XLSM" Then 
    ....

答案 1 :(得分:3)

虽然Alex已经解决了您的查询,但我已将您的代码更新为

  • 确保它处理所有excel文件类型
  • 处理已存在的工作表名称(否则您的代码将出错)
  • 清理并正确使用变量
  • 关闭时恢复活动

    Sub LoopThroughFolder()
    
    Dim Wb As Workbook
    Dim MyFile As String
    Dim MyDir As String
    Dim StrFile As String
    
    
    MyDir = "C:\temp\"
    ChDir MyDir
    
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With
    
    StrFile = "*.xls*"
    
    MyFile = Dir(MyDir & StrFile)
        Do While Len(MyFile) > 0
            If MyFile Like "*.xlsx" Or MyFile Like "*.xlx" Then
                Set Wb = Workbooks.Open(MyFile)
                On Error Resume Next
                Wb.Sheets(1).Name = "MySheet"
                On Error GoTo 0
    
                Wb.Save
                Wb.Close False
            End If
            MyFile = Dir()
        Loop
    
    With Application
        .ScreenUpdating = True
        .DisplayAlerts = True
    End With
    
    End Sub