Доброго времени суток Добрые люди гуру Excel и просто специалисты. Вопрос такой есть много книг с большим кол-ом листов. Мне нужен лист (Резюме) но они в книгах с добавлением разных слов по бокам типо (Резюме_вафывф или Резюме_ава_ава_ава или пробел перед самим словом)
пытался через * и обозначением имени через стринг но чтёт он ищет в листах только точные название и такого не может быть .. [vba]
Код
Sub All_File() Dim sh As Worksheet, wsDataSheet As Object, lLastrow As Long, sh1 As String Dim iCell As Range, iCell1 As Range, i As Long, iCell2 As Range, iCell3 As Range Dim iSearchText$, iSearchText1$ Dim sFolder As String, sFiles As String
'--------------------------------------------------------------------------------------------------- iSearchText$ = "Номер один*" iSearchText1$ = "Номер Два" sh1 = "*Резюме*" '--------------------------------------------------------------------------------------------------- Set wsDataSheet = ActiveWorkbook.Sheets("Вывод") 'Лист на который вставляются значения
'диалог запроса выбора папки с файлами With Application.FileDialog(msoFileDialogFolderPicker) If .Show = False Then Exit Sub sFolder = .SelectedItems(1) End With sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator) '------------------------------------------------------------------------------------------------------- Application.ScreenUpdating = False sFiles = Dir(sFolder & "*.xls*") Do While sFiles <> "" 'открываем книгу Workbooks.Open sFolder & sFiles On Error Resume Next '---------------------------------------Цикл по листам-------------------------------------------------- 'For Each sh In Worksheets ' If sh.Name <> "Резюме_ГРУППА*" Then GoTo Point '------------------------------------------------------------------------------------------------------- Set sh = Sheets(sh1) 'Лист с которого производиться поиск '------------------------------------------------------------------------------------------------------- Set iCell = sh.UsedRange.Find(iSearchText$, , xlFormulas, xlPart) Set iCell1 = sh.UsedRange.Find(iSearchText1$, , xlFormulas, xlPart) Set iCell2 = sh.UsedRange.Find(iSearchText$, , xlFormulas, xlPart) Set iCell3 = sh.UsedRange.Find(iSearchText1$, , xlFormulas, xlPart) '------------------------------------------------------------------------------------------------------- Set iCell = sh.UsedRange.Find(iSearchText$, , xlFormulas, xlPart).Offset(1, 6) Set iCell1 = sh.UsedRange.Find(iSearchText1$, , xlFormulas, xlPart).Offset(1, 3) Set iCell2 = sh.UsedRange.Find(iSearchText$, , xlFormulas, xlPart).Offset(0, 1) Set iCell3 = sh.UsedRange.Find(iSearchText1$, , xlFormulas, xlPart).Offset(0, 1) '------------------------------------------------------------------------------------------------------- wsDataSheet.Cells(lLastrow, 1).Value = iCell wsDataSheet.Cells(lLastrow, 2).Value = iCell1 wsDataSheet.Cells(lLastrow, 3).Value = iCell2 wsDataSheet.Cells(lLastrow, 4).Value = iCell3 lLastrow = lLastrow + 1
'------------------------------------------------------------------------------------------------------- 'Point: 'Next sh '------------------------------------------------------------------------------------------------------- ActiveWorkbook.Close False 'если поставить False - книга будет закрыта без сохранения sFiles = Dir Loop
Application.ScreenUpdating = True
End Sub
[/vba]
Доброго времени суток Добрые люди гуру Excel и просто специалисты. Вопрос такой есть много книг с большим кол-ом листов. Мне нужен лист (Резюме) но они в книгах с добавлением разных слов по бокам типо (Резюме_вафывф или Резюме_ава_ава_ава или пробел перед самим словом)
пытался через * и обозначением имени через стринг но чтёт он ищет в листах только точные название и такого не может быть .. [vba]
Код
Sub All_File() Dim sh As Worksheet, wsDataSheet As Object, lLastrow As Long, sh1 As String Dim iCell As Range, iCell1 As Range, i As Long, iCell2 As Range, iCell3 As Range Dim iSearchText$, iSearchText1$ Dim sFolder As String, sFiles As String
'--------------------------------------------------------------------------------------------------- iSearchText$ = "Номер один*" iSearchText1$ = "Номер Два" sh1 = "*Резюме*" '--------------------------------------------------------------------------------------------------- Set wsDataSheet = ActiveWorkbook.Sheets("Вывод") 'Лист на который вставляются значения
'диалог запроса выбора папки с файлами With Application.FileDialog(msoFileDialogFolderPicker) If .Show = False Then Exit Sub sFolder = .SelectedItems(1) End With sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator) '------------------------------------------------------------------------------------------------------- Application.ScreenUpdating = False sFiles = Dir(sFolder & "*.xls*") Do While sFiles <> "" 'открываем книгу Workbooks.Open sFolder & sFiles On Error Resume Next '---------------------------------------Цикл по листам-------------------------------------------------- 'For Each sh In Worksheets ' If sh.Name <> "Резюме_ГРУППА*" Then GoTo Point '------------------------------------------------------------------------------------------------------- Set sh = Sheets(sh1) 'Лист с которого производиться поиск '------------------------------------------------------------------------------------------------------- Set iCell = sh.UsedRange.Find(iSearchText$, , xlFormulas, xlPart) Set iCell1 = sh.UsedRange.Find(iSearchText1$, , xlFormulas, xlPart) Set iCell2 = sh.UsedRange.Find(iSearchText$, , xlFormulas, xlPart) Set iCell3 = sh.UsedRange.Find(iSearchText1$, , xlFormulas, xlPart) '------------------------------------------------------------------------------------------------------- Set iCell = sh.UsedRange.Find(iSearchText$, , xlFormulas, xlPart).Offset(1, 6) Set iCell1 = sh.UsedRange.Find(iSearchText1$, , xlFormulas, xlPart).Offset(1, 3) Set iCell2 = sh.UsedRange.Find(iSearchText$, , xlFormulas, xlPart).Offset(0, 1) Set iCell3 = sh.UsedRange.Find(iSearchText1$, , xlFormulas, xlPart).Offset(0, 1) '------------------------------------------------------------------------------------------------------- wsDataSheet.Cells(lLastrow, 1).Value = iCell wsDataSheet.Cells(lLastrow, 2).Value = iCell1 wsDataSheet.Cells(lLastrow, 3).Value = iCell2 wsDataSheet.Cells(lLastrow, 4).Value = iCell3 lLastrow = lLastrow + 1
'------------------------------------------------------------------------------------------------------- 'Point: 'Next sh '------------------------------------------------------------------------------------------------------- ActiveWorkbook.Close False 'если поставить False - книга будет закрыта без сохранения sFiles = Dir Loop
Sub tt() Dim sh As Worksheet Dim lilpeep As Boolean '------------------------------------------------------------------------------------------------------- For Each sh In Worksheets lilpeep = InStr(sh.Name, "Резюме") If lilpeep = False Then GoTo Point '------------------------------------------------------------------------------------------------------- Действие на листе где есть слово Резюме '------------------------------------------------------------------------------------------------------- Point: Next sh '------------------------------------------------------------------------------------------------------- End Sub
[/vba]
Если кому надо будет я решил эту задачу так
[vba]
Код
Sub tt() Dim sh As Worksheet Dim lilpeep As Boolean '------------------------------------------------------------------------------------------------------- For Each sh In Worksheets lilpeep = InStr(sh.Name, "Резюме") If lilpeep = False Then GoTo Point '------------------------------------------------------------------------------------------------------- Действие на листе где есть слово Резюме '------------------------------------------------------------------------------------------------------- Point: Next sh '------------------------------------------------------------------------------------------------------- End Sub
китин, просто решил поделиться своей радостью и поинтерисоваться правильно ли я воспользовался инструментом , понимаю что возможно он старше меня и мне бы уважения надо проявлять и не говорить как с другом которого знаю всю жизнь , прошу прощения если что не так пусть лучше все счастливы будут а я так делать больше не буду тогда
китин, просто решил поделиться своей радостью и поинтерисоваться правильно ли я воспользовался инструментом , понимаю что возможно он старше меня и мне бы уважения надо проявлять и не говорить как с другом которого знаю всю жизнь , прошу прощения если что не так пусть лучше все счастливы будут а я так делать больше не буду тогдаElhust
Имел в виду так в части instr, но не сщвсем так в остальном. Зачем Вам ГоТу? Вот так можно [vba]
Код
For Each sh In Worksheets lilpeep = InStr(sh.Name, "Резюме") If lilpeep Then '------------------------------------------------------------------------------------------------------- Действие на листе где есть слово Резюме '------------------------------------------------------------------------------------------------------- Next sh
Имел в виду так в части instr, но не сщвсем так в остальном. Зачем Вам ГоТу? Вот так можно [vba]
Код
For Each sh In Worksheets lilpeep = InStr(sh.Name, "Резюме") If lilpeep Then '------------------------------------------------------------------------------------------------------- Действие на листе где есть слово Резюме '------------------------------------------------------------------------------------------------------- Next sh
_Boroda_, Здорова просто думал что InStr не тру значения принимает когда совпадения находит .. там получается если не находит то 0 а если находит то значения ... вот и решил через булеан и гоу ту , а так да помню что If тру значение пропускает автоматом Спасибо за объяснения а то у меня тут рвения в изучении проснулось
_Boroda_, Здорова просто думал что InStr не тру значения принимает когда совпадения находит .. там получается если не находит то 0 а если находит то значения ... вот и решил через булеан и гоу ту , а так да помню что If тру значение пропускает автоматом Спасибо за объяснения а то у меня тут рвения в изучении проснулось Elhust
Ребят, привет. Одно замечание - зачем там лишняя переменная, которая все время пересчитывается, но используется всего раз при каждой итерации? Без нее: [vba]
Код
For Each sh In Worksheets If InStr(sh.Name, "Резюме") Then '------------------------------------------------------------------------------------------------------- Действие на листе где есть слово Резюме '------------------------------------------------------------------------------------------------------- Next sh
[/vba]
Ребят, привет. Одно замечание - зачем там лишняя переменная, которая все время пересчитывается, но используется всего раз при каждой итерации? Без нее: [vba]
Код
For Each sh In Worksheets If InStr(sh.Name, "Резюме") Then '------------------------------------------------------------------------------------------------------- Действие на листе где есть слово Резюме '------------------------------------------------------------------------------------------------------- Next sh