【问题标题】:Excel VBA get file list from current folder by typeExcel VBA按类型从当前文件夹中获取文件列表
【发布时间】:2015-02-10 05:43:56
【问题描述】:

我有一个 excel 宏来按类型从当前文件夹中获取文件列表。

Sub getfilelistfromfolder()

Dim varDirectory As Variant
Dim flag As Boolean
Dim i As Integer
Dim strDirectory As String

strDirectory = Application.ActiveWorkbook.Path & "\"
i = 1
flag = True
varDirectory = Dir("C:\Macro\*.txt", vbNormal)

While flag = True
    If varDirectory = "" Then
        flag = False
    Else
        Cells(i + 1, 1) = varDirectory
        varDirectory = Dir
        i = i + 1
    End If
Wend
End Sub

这很好用。但我想做两处修改: 1.修改路径名

varDirectory = Dir("C:\Macro\*.txt", vbNormal)

到活动工作簿路径。当我试图改变它时,我得到了错误。不知道怎么搭配

Application.ActiveWorkbook.Path & "\"

带有 .txt 文件类型条件。

  1. 我想在从 B2、B3、B4 开始的单元格中打印结果...

有人可以帮我解决这两个问题吗? 提前致谢。

【问题讨论】:

  • 向我们展示您尝试过但不起作用的代码。我们需要看看到底是什么错误造成的。

标签: vba excel


【解决方案1】:
  1. varDirectory = Dir("C:\Macro\*.txt", vbNormal)更改为varDirectory = Dir(strDirectory, vbNormal)

  2. Cells(i + 1, 1) = varDirectory更改为Cells(i + 1, 2) = varDirectory

【讨论】:

    【解决方案2】:

    我不知道您在使用 ActiveWorkbook 运行代码时遇到了什么错误,但如果您使用以下代码,它应该可以工作。而对于第二个问题,您应该将 Cells 的第二个参数从 1(A) 更改为 2(B)。

    Sub getfilelistfromfolder()
    
    Dim varDirectory As Variant
    Dim flag As Boolean
    Dim i As Integer
    Dim strDirectory As String
    
    strDirectory = Application.ActiveWorkbook.Path & "\"
    i = 1
    flag = True
    varDirectory = Dir(strDirectory & "*.pdf", vbNormal)
    
    While flag = True
        If varDirectory = "" Then
            flag = False
        Else
            Cells(i + 1, 2) = varDirectory
            varDirectory = Dir
            i = i + 1
        End If
    Wend
    End Sub
    

    【讨论】:

      【解决方案3】:

      好吧,当我尝试“立即”处理 varDirectory 字符串时,它似乎工作正常,所以我认为那里没有错误。

      刚刚设置

      strDirectory = Application.ActiveWorkbook.Path & "\*.txt"
      

      并改变这个:

          Else
          Cells(i + 1, 1) = varDirectory
          ' this is... unnecessary: varDirectory = Dir
          i = i + 1
      

      【讨论】:

      • varDirectory = Dir 行非常必要,因为它是创建循环的原因。没有那条线,循环将是无止境的。看到这个帖子:stackoverflow.com/questions/10380312/…
      • 包含该参数非常重要,否则您将获得无限数量的结果。
      猜你喜欢
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 2019-10-17
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      • 2016-12-09
      • 1970-01-01
      相关资源
      最近更新 更多