Страницы: 1
RSS
Как выбрать файлы и затем сделать условие их отбора
 
Добрый день!

Выбираю файлы из диалогового окна, затем нужно будет работать с именем файла, чтобы по определенным условиям выбрать нужные файлы. Не могу придумать как сделать чтобы в if получить имя файла, чтобы, например, проверить на наличие "01.01.2020" в имени файла
Код
Sub CombineWorkbooks()
    Dim FilesToOpen
    Dim x As Integer
    Dim lLastRow As Long
 
     lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox (lLastRow - 1)
        
    'вызываем диалог выбора файлов для импорта   
   FilesToOpen = Application.GetOpenFilename _
      (FileFilter:="All files (*.*), *.*", _
      MultiSelect:=True, Title:="Files to Merge")
 
    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "Не выбрано ни одного файла!"
        Exit Sub
    End If

    'проходим по всем выбранным файлам
    x = 1
        
    While x <= UBound(FilesToOpen)
  
вот здесь должен быть if с отбором файлов по имени файла   
 Set importWB = Workbooks.Open(Filename:=FilesToOpen(x))

 x = x + 1
    Wend
End Sub
Изменено: Maksimus - 31.03.2020 16:00:30
 
Попробуйте такой вариант
Код
Sub CombineWorkbooks()

    Dim FilesToOpen As Variant
    Dim i As Integer
    Dim importWB As Workbook

    'вызываем диалог выбора файлов для импорта
    FilesToOpen = Application.GetOpenFilename _
        (FileFilter:="All files (*.*), *.*", _
        MultiSelect:=True, Title:="Files to Merge")
  
    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "Не выбрано ни одного файла!"
        Exit Sub
    End If
     
    'проходим по всем выбранным файлам
    For i = 1 To UBound(FilesToOpen)
        Set importWB = GetObject(FilesToOpen(i))
        If importWB.Name Like "*01.01.2020*" Then
            importWB.Windows(1).Visible = True
        Else
            importWB.Close False
        End If
    Next
End Sub
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
 
Спасибо за подсказку. Вот это работает
Код
       Set importWB = GetObject(FilesToOpen(i))
       If importWB.Name Like "*01.01.2020*" Then
      importWB.Windows(1).Visible = True



А как можно обращаться к имени файла, без его открытия? т.к. такой способ открывает все файлы.
 
Попробуйте так:
Код
Sub CombineWorkbooks()
 
    Dim i As Integer
    Dim wbName As String
 
    'вызываем диалог выбора файлов для импорта
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = True
        .Show
        For i = 1 To .SelectedItems.Count
            wbName = Right(.SelectedItems(i), Len(.SelectedItems(i)) - Len(.InitialFileName))
            If LCase(wbName) Like "*01.01.2020*" Then
                Workbooks.Open (.SelectedItems(i))
            End If
        Next
    End With
    

End Sub
Изменено: Valo - 31.03.2020 15:31:43
Наша суть отражается в наших повторяющихся действиях. Отсюда следует, что совершенство есть не действие, а привычка. Аристотель.
Страницы: 1
Наверх