Excel VBA按类型从当前文件夹获取文件列表

时间:2014-11-10 13:22:12

标签: excel vba excel-vba

我有一个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开始的单元格中打印结果......
  2. 有人可以帮我解决这两个问题吗? 提前谢谢。

3 个答案:

答案 0 :(得分:2)

  1. varDirectory = Dir("C:\Macro\*.txt", vbNormal)更改为varDirectory = Dir(strDirectory, vbNormal)

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

答案 1 :(得分:1)

我不知道在使用ActiveWorkbook运行代码时遇到了什么错误,但如果使用以下代码则应该有效。对于第二个问题,您应该将Cell的第二个参数从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

答案 2 :(得分:0)

好吧,当我尝试"立即"时,varDirectory字符串似乎工作正常。所以我不认为那里有错误。

只需设置

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

并改变这一点:

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