使用VBA

时间:2017-02-20 13:34:02

标签: excel vba excel-vba directory

我有一个代码,可以读取文件夹中的所有文件,将文件名粘贴到工作表中,然后将文件数输出到消息框中。

问题:由于某些原因,当我运行代码时,它可能会以错误的顺序获取文件,这会破坏我的计算(我使用另一个子程序)。

问题:有没有办法保证文件的输入顺序正常?

到目前为止我做了什么:在代码输出文件名之前,我想用一些代码按给定的顺序对文件夹中的文件进行排序,但是我找不到任何引用怎么做。

代码:

Sub Counter()

Dim path As String, count As Integer, i As Long, var As Integer
Dim ws As Worksheet
Dim Filename As String
Dim FileTypeUserForm As UserForm
Dim x As String

Application.Calculation = xlCalculationManual

path = ThisWorkbook.path & "\*.*"

Filename = Dir(path)

ThisWorkbook.Sheets("FILES").Range("A:A").ClearContents


x = GetValue
If x = "EndProcess" Then Exit Sub


Set ws = ThisWorkbook.Sheets("FILES")
i = 0
Do While Filename <> ""
    var = InStr(Filename, x)

    If var <> 0 Then
        i = i + 1
        ws.Cells(i + 1, 1) = Filename
        Filename = Dir()

    Else: Filename = Dir()
    End If

Loop

Application.Calculation = xlCalculationAutomatic

ws.Cells(1, 2) = i

MsgBox i & " : files found in folder"
End Sub


Function GetValue()
With FileTypeUserForm
    .Show
    GetValue = .Tag
End With
Unload FileTypeUserForm
End Function

1 个答案:

答案 0 :(得分:0)

在将所有文件名放在A列

中时添加排序指令
range("A1:A" & i).sort key1:=range("A1"),order1:=xlascending,header:=xlno