У меня есть папка с защищенными паролем рабочими книгами (один и тот же пароль) для всех филиалов нашей компании, Ливерпуль, Манчестер и др. c.
В каждой книге есть простая таблица с данными о продажах, номер продажи, имя, адрес электронной почты, инвентарный код и т. д. c, иногда по 3 рабочих листа в каждой рабочей книге
У меня есть основная рабочая книга со списком биржевых кодов.
Мне нужно иметь возможность создать макрос, который просматривает все книги в строке F, и если он находит совпадающее значение для любого из биржевых кодов, скопируйте эту строку и вставьте ее на новый лист в основной книге с заголовком рабочий лист с тем же именем, что и имя файла, в котором он находился, со строками данных повсюду.
У меня было что-то похожее, который искал одну ключевую фразу и возвращал строку, но мне нужно, чтобы он искал любая строка из целого ряда строк.
Sub STBP()
Application.ScreenUpdating = False
Dim desWS As Worksheet, srcWS As Worksheet, wkbSource As Workbook, response As String, LastRow As Long
Set desWS = ThisWorkbook.Sheets("Sales to be Processed")
response = InputBox("Please enter the search string.")
If response = "" Then Exit Sub
Const strPath As String = "C:\Users\marc.delaney\Documents\TestSave\" 'change folder path to suit your needs
ChDir strPath
strExtension = Dir(strPath & "*.xls*")
Do While strExtension <> ""
Set wkbSource = Workbooks.Open(strPath & strExtension)
With wkbSource
LastRow = desWS.Range("C" & Rows.Count).End(xlUp).Row
Set srcWS = .Sheets("Sales To Be Processed")
srcWS.Unprotect Password:="cgeod18"
With srcWS.Cells(7, 2).CurrentRegion
.AutoFilter Field:=12, Criteria1:="=*" & response & "*"
desWS.Range("A" & LastRow + 1) = wkbSource.Name
srcWS.AutoFilter.Range.Offset(1, 0).Copy desWS.Cells(desWS.Rows.Count, "B").End(xlUp).Offset(1, 0)
End With
.Close SaveChanges:=False
End With
strExtension = Dir
Loop
Columns.AutoFit
Application.ScreenUpdating = True
End Sub