Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Visual Basic Новый топик    Ответить
 Помогите разобраться с ошибкой. * в имени файла.  [new]
desdichento
Guest
Добрый день!

Возникла необходимость обработки файлов. Файлы экселевские, падают с почты в одну папку. В имени содержат текущую дату формата "ДД.ММ.ГГГГ". А вот с расширением косяк: отправитель выставляет его как бог на душу положит. Может ".xls" забубенить, а может ".xlsx" или даже ".xlsm". Написал простенький макрос, а он отказывается работать. Ткните носом в ошибку, пожалуйста.

Sub Импорт_2017()
    Dim FSO As Object
    Dim SourceFolder As Object
    Dim FileItem As Object
    Dim bDate As Date
    Dim strDay As Variant
    Dim strMonth As Variant
    Dim strYear As Variant

    bDate = VBA.Date
    strYear = DatePart("yyyy", bDate)
    strMonth = Format(DatePart("m", bDate), "00")
    strDay = Format(DatePart("d", bDate), "00")
    
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set SourceFolder = FSO.GetFolder("D:\Документы\Входящие\")

    For Each FileItem In SourceFolder.Files
        If FileItem.Name = strDay & "." & strMonth & "." & strYear & ".xls*" Then
                ' всякая разная обработка
        End If
    Next FileItem
End Sub


Модератор: Учимся использовать тэги оформления кода - FAQ


И несмотря на наличие файла "13.10.2017.xlsx" в нужной папке, блок For Each проскакивает без захода в If. Типа "13.10.2017.xlsx" и "13.10.2017.xls*" - это разные файлы.
13 окт 17, 14:11    [20867581]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с ошибкой. * в имени файла.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 19142
If FileItem.Name = проверяет на строгое равенство. Хотите сравнивать с шаблоном - используйте оператор LIKE.
13 окт 17, 14:20    [20867643]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с ошибкой. * в имени файла.  [new]
desdichento
Guest
Akina, спасибо!
13 окт 17, 14:24    [20867658]     Ответить | Цитировать Сообщить модератору
Все форумы / Visual Basic Ответить