Как зациклить и открыть все файлы CSV в моей текущей папке в VBA - PullRequest
0 голосов
/ 06 ноября 2018

Я случайно создаю новую папку на своем рабочем столе, в этой папке у меня есть один файл шаблона с расширением .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 голосов
/ 06 ноября 2018

Вы можете использовать эту функцию и макрос. Juste заменяет MsgBox (myFile + "OK") действием, которое вы хотите выполнить.

FUNCTION

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
0 голосов
/ 06 ноября 2018

Полагаю, вы хотите использовать функцию Dir. Чтобы использовать это, сделайте вызов, указав папку и тип файла в первом вызове, затем вызывайте его пустым, пока он не вернёт пустую строку. Как это:

Folder = Dir(Application.ActiveWorkbook.Path & "\*.csv")
Do While Folder <> ""
    Debug.Print Folder
    Workbooks.Open Folder
    Folder = Dir()
Loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...