Я разработал рабочую книгу с поддержкой VBA, которая позволяет пользователю выбирать файл .csv (который является экспортом клиента из другой системы), а затем обрабатывает его для получения ряда различных групп пользователей, основанных на различных пользователях. определенные критерии и т. д.
Все работает очень хорошо. Тем не менее, он может обрабатывать только один CSV-файл за раз.
Текущий подход, который я использовал, в основном импортирует содержимое выбранного CSV-файла на новый лист, а затем я просто запрашиваю эти данные и делаю с ними то, что мне нужно. Однако, поскольку я не использовал VBA в течение очень долгого времени, я не уверен, как использовать то, что я уже написал, для выбора нескольких файлов CSV.
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
'We only want to allow CSV files as this is what the ADT comes in
.Filters.Add "ADT CSV Files", "*.csv", 1
'Show the dialog box
.Show
'Error check in case user cancels dialog box to prevent type-mismatch error
If (.SelectedItems.Count = 0) Then
Range("C19").Value = "File selection aborted."
Else
'Store in fullpath variable
Range("C19").Value = "Processing..."
fullpath = .SelectedItems.Item(1)
End If
End With
'A final check to make sure that the user hasn't done anything odd and somehow selected an invalid file format
If InStr(fullpath, ".csv") = 0 Then
Exit Sub
End If
Range("J26").Value = "Source File:"
Range("J27").Value = fullpath
'Now we grab the data from the file and import it into a new sheet within workbook
Set Ws = ThisWorkbook.Sheets.Add
Ws.Name = "ADT Data"
'The ADT seems to be using fairly standard formatting conditions, so the following should surfice
With Ws.QueryTables.Add(Connection:= _
"TEXT;" & fullpath, Destination:=Ws.Range("$A$1"))
.Name = "ADT Data"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileCommaDelimiter = True
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
'Now we trigger our main triage processes
Call Extract
Я предполагаю, что мне нужно добавить выбранные файлы в массив, а затем перебрать их, но с моим знанием VBA, как оно есть, я не уверен, как достичь.