Как мне настроить оператор if на прием только файлов xlsx из указанной папки?
Привет! Я запускаю макрос, который берет файлы Excel из нескольких папок и подпапок, а затем компилирует их в один файл Excel. Он решает, какой файл извлекать, поскольку только 1 файл может быть извлечен из местоположения, называемого тестом Гувера.
Соответствующая часть макроса находится здесь, и я хочу изменить цикл для распознавания только файлов ".xlsx":
Sub DoFolder(Folder)
Dim SubFolder As Folder
Dim i As Integer
Dim CopyR As Range
For Each SubFolder In Folder.SubFolders
DoFolder SubFolder
Next
If Folder.SubFolders.Count = 0 Then
If Folder.Files.Count = 1 Then
Else: MsgBox "2+ files: " & Folder.Path
End If
For Each File In Folder.Files
Hoover File
Next
Else
End If
End Sub
Это хорошо работает для проверки двух файлов в папке, но я хочу взять только файл xlsx из этой папки.
Полный макрос здесь, если необходимо:
'Option Explicit
Public wbm As Workbook
Public wbk As Workbook
Public File As File
Sub CM()
Dim FileSystem As Object
Dim HostFolder As String
Application.DisplayAlerts = False
Application.ScreenUpdating = False
HostFolder = "C:\Review Pack\Hoover Test"
Set FileSystem = CreateObject("Scripting.FileSystemObject")
Set wbm = ThisWorkbook
DoFolder FileSystem.GetFolder(HostFolder)
For Each sht In wbm.Worksheets
sht.Cells.Replace what:="" & Chr(10) & "", Replacement:=" ", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Next sht
Application.ScreenUpdating = True
'LightOff
MsgBox "Done"
End Sub
Sub DoFolder(Folder)
Dim SubFolder As Folder
Dim i As Integer
Dim CopyR As Range
For Each SubFolder In Folder.SubFolders
DoFolder SubFolder
Next
If Folder.SubFolders.Count = 0 Then
If Folder.Files.Count = 1 Then
Else: MsgBox "2+ files: " & Folder.Path
End If
For Each File In Folder.Files
Hoover File
Next
Else
End If
End Sub
Sub Hoover(File)
Dim i As Integer
Dim LineNo As Integer
Set wbk = Workbooks.Open(File.Path, , False)
Application.AskToUpdateLinks = False
If wbk.MultiUserEditing Then
wbk.ExclusiveAccess
End If
For i = 2 To 11
If Sheets(i).FilterMode Then
wbk.Sheets(i).Unprotect "x"
Sheets(i).Cells.AutoFilter
End If
LineNo = wbm.Sheets(i).Range("A" & Rows.Count).End(xlUp).Row + 1
wbm.Sheets(i).Range("A" & LineNo & ":" & "AB" & LineNo + 990).Value = wbk.Sheets(i).Range("A10:AB1000").Value
Next i
wbk.Close False
End Sub