我在桌面上随机创建一个新文件夹,在此文件夹中,我有一个扩展名为.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
答案 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