Чтобы перебирать книги и их таблицы, попробуйте использовать следующий код. Если вам нужно что-то сделать с листами в соответствии с их названием, пожалуйста, более точно объясните, что вам нужно ...
Sub WorkbooksAndSheetsIteration()
Dim FileToOpen As Variant, FileCnt As Long, sh As Worksheet, selectedBook As Workbook
FileToOpen = Application.GetOpenFilename(Filefilter:="Excel Files (*.xlsx), *.xlsx", _
Title:="Select Workbook to Import", MultiSelect:=True)
If IsArray(FileToOpen) Then
For FileCnt = LBound(FileToOpen) To UBound(FileToOpen)
Set selectedBook = Workbooks.Open(fileName:=FileToOpen(FileCnt))
For Each sh In selectedBook.Sheets
For shNo = 1 To selectedBook.Sheets.Count - 1
If left(sh.Name, 1) = left(selectedBook.Sheets(i).Name, 1) And _
sh.Index <> i Then
boolOK = True: Exit For
End If
Next
Next
If boolOK Then
'do here the operation you need
'...
Else
selectedBook.Close False
End If
boolOK = False
Next FileCnt
End If
End Sub
Для сопряжения рабочих тетрадей в соответствии с номером до "BV.xlsx", пожалуйста, используйте следующий код:
Sub WorkbooksAndSheetsIterationBis()
Dim FileToOpen As Variant, FileCnt As Long, sh As Worksheet, selectedBook As Workbook
Dim shNo As Long, boolOK As Boolean, i As Long, wName As Variant, strN As String, strN2 As String
FileToOpen = Application.GetOpenFilename(Filefilter:="Excel Files (*.xlsx), *.xlsx", _
Title:="Select Workbook to Import", MultiSelect:=True)
If IsArray(FileToOpen) Then
For Each wName In FileToOpen
strN = Split(wName, "BV.xlsx")(0)
Debug.Print Right(strN, Len(strN) - InStrRev(strN, " ")): Stop
For FileCnt = LBound(FileToOpen) To UBound(FileToOpen)
strN2 = Split(FileToOpen(FileCnt), "BV.xlsx")(0)
If Right(strN, Len(strN) - InStrRev(strN, " ")) = _
Right(strN2, Len(strN2) - InStrRev(strN2, " ")) Then
boolOK = True: Exit For
End If
Next
If boolOK Then
Set selectedBook = Workbooks.Open(fileName:=FileToOpen(wName))
'do here the operation you need
'...
End If
boolOK = False
Next
End If
End Sub