Я пытаюсь написать код VBA для макроса, который объединяет файл .pptx и файл .xlsx определенным образом. Я уже разобрался, как кодировать объединяющуюся часть. Однако у меня есть каталог с сотнями файлов, которые необходимо объединить, и на данный момент я должен выбрать каждый отдельный файл .xls и файл .pptx с помощью диалогового окна файла. Я хотел бы ускорить весь процесс, написав код, который сканирует файлы в каталоге (который я выбрал с помощью диалогового окна файлов), затем возвращает путь к соответствующим файлам .xls и .pptx, а затем объединяет каждое совпадение. ,
Соответствующие файлы имеют одинаковые имена со следующим синтаксисом:
XLS-файлы: 123ABC456_sheets_011.xlsx
PPTX-файлы: 123ABC456_slides_011.pptx
Поэтому для сравнения необходимо сравнить только первые 9 цифр.
Я попытался написать код, который создает строковый массив с путем ко всем файлам в определенном каталоге, однако, поскольку у меня нет большого опыта работы с VBA, я не знаю, как посмотреть, является ли массив заполнен всеми именами файлов. На данный момент я застрял. Я думаю, что лучше создать два строковых массива, один с файлами .xlsx, а другой с файлами .pptx, а затем как-то сравнить их друг с другом, но я понятия не имею, как это сделать.
Внизу вы можете увидеть, что у меня есть до сих пор. Буду рад, если кто-нибудь сможет мне помочь!
Sub IdentifyFiles()
Dim selectedPATH As String
Dim XLSArray As Variant
Dim i As Integer
Dim oFile As Object
Dim oFSO As Object
Dim oFolder As Object
Dim oFiles As Object
'Dialog to choose the folder
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.Title = "Please choose folder"
If .Show = -1 Then
'ok click
selectedPATH = .SelectedItems(1)
Else
'cancel click
End If
End With
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.Getfolder(selectedPATH)
Set oFiles = oFolder.Files
If oFiles.Count = 0 Then MsgBox "no contents in chosen folder"
ReDim XLSArray(1 To oFiles.Count)
i = 1
For Each oFile In oFiles
XLSArray(i) = oFile.Name
i = i + 1
Next
End Sub