2015-06-17 4 views
2

Это моя вторая попытка взломать эту проблему, с которой я столкнулся.Раскройте файлы, которые начинаются с определенной строки

В двух словах я получаю несколько файлов, отправленных мне на еженедельной основе, которые начинаются с тех же 11 символов, и все, что после этого может отличаться от недели к неделе.

У меня есть базовый код, который распаковывает файлы, когда точное имя файла найдено, но я надеюсь отойти от него, имея процедуру, которая использует подстановочные знаки. Итак, все, что является zip-файлом, и все, что начинается с этих 11 символов.

Я получил это далеко, но, похоже, ударил стену с ошибкой пространства имен, может кто-нибудь, пожалуйста, помогите мне, куда я иду не так?

Set fso = CreateObject("Scripting.FileSystemObject") 

ExtractTo="C:\Users\W1 Process\_ThisWeek\" 

For Each f In fso.GetFolder("C:\Users\W1 Process\_ThisWeek\").Files 
    If LCase(fso.GetExtensionName(f)) = "zip" And Left(f.Name, 11) = "Home Weekly" Then 
    set objShell = CreateObject("Shell.Application") 

    set FilesInZip=objShell.NameSpace(ZipFile).items 
    objShell.NameSpace(ExtractTo).CopyHere(FilesInZip) 

    Set fso = Nothing 
    Set objShell = Nothing 
    End If 
Next 

ответ

0

Вы можете использовать regular expression для сопоставления имен переменных файла:

Set re = New RegExp 
re.Pattern = "^home weekly.*\.zip$" 

Set fso = CreateObject("Scripting.FileSystemObject") 
Set app = CreateObject("Shell.Application") 

ExtractTo = "C:\Users\W1 Process\_ThisWeek" 

For Each f In fso.GetFolder("C:\Users\W1 Process\_ThisWeek").Files 
    If re.Test(f.Name) Then 
    Set FilesInZip = app.NameSpace(f.Path).Items 
    app.NameSpace(ExtractTo).CopyHere(FilesInZip) 
    End If 
Next 
+0

Большое спасибо сэр, это работает отлично. – Saf

+0

Выполнено, еще раз спасибо. – Saf

+0

есть способ, которым я не могу получить подсказки на экране, если я хочу заменить файлы, когда они уже существуют? – Saf

Смежные вопросы