如何循环和打开VBA当前文件夹中的所有csv文件

时间:2018-11-06 09:19:29

标签: excel vba excel-vba

我在桌面上随机创建一个新文件夹,在此文件夹中,我有一个扩展名为.xlsm的模板文件,其中包含我的VBA代码。同时,我将几个csv文件与原始数据保存在同一文件夹中。

目的是一个接一个地循环浏览所有这些csv文件,将其打开,然后从中复制一些数据并将其粘贴到我的模板文件(我知道该如何做)中,并在完成所有操作后将其关闭。

当前,我遇到一个有关如何循环浏览文件夹并逐个打开这些csv的问题。我没有设置特定的文件夹名称,因为我想与其他人共享它,因此我使用Application.ActiveWorkbook.Path来获取当前文件夹的路径。

这是我的代码:

Option Explicit
Sub Range_End_Method()
Dim Dir As String
Dim i As String

Application.ScreenUpdating = False

Dir = Application.ActiveWorkbook.Path & "\"
For Each i In Dir.Files
    Debug.Print i.Name
    If (i.Name Like "*.csv") Then
      Workbooks.Open (i.Path)
    End If
Next
End Sub

2 个答案:

答案 0 :(得分:1)

我猜您想使用Dir函数。要使用它,请对其进行调用,在第一个调用中指定文件夹和文件类型,然后将其命名为空,直到返回空字符串。像这样:

Folder = Dir(Application.ActiveWorkbook.Path & "\*.csv")
Do While Folder <> ""
    Debug.Print Folder
    Workbooks.Open Folder
    Folder = Dir()
Loop

答案 1 :(得分:1)

您可以使用此功能和宏。 Juste将MsgBox(myFile +“ OK”)替换为您要执行的动作。

功能

Function ClasseurOuvert(NomFich)
On Error Resume Next
    Workbooks(NomFich).Activate
    If Err <> 0 Then Workbooks.Open FileName:=NomFich
On Error GoTo 0
End Function

MACRO

Sub LoopFiles()

Dim myPath As String, myFile As String

myPath = Application.ActiveWorkbook.Path & "\"

myFile = Dir(myPath & "\*.*")

Do While myFile <> "" And myFile Like "*.csv"

    Call ClasseurOuvert(myPath & "\" & myFile)

    With Workbooks(myFile)

    MsgBox (myFile + "OK")

    End With
    Workbooks(myFile).Save

    Workbooks(myFile).Close

    myFile = Dir()

Loop

End Sub