2015-11-04 3 views
0

Ниже VBA находит наиболее недавно измененный файл в определенном месте, то копии, файл в другое место:Поиск определенного шаблона

Dim objFSO As Object 
Dim objFolder As Object 
Dim objFile As Object 

Dim strcopyfile As String 
Dim strpaste As String 
Dim strName As String 
Dim varDate As Variant 

strcopyfile = "C:\Flow" 
strpaste = "C:\Users\Draft.xlsx" 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFolder = objFSO.getfolder(strcopyfile) 

For Each objFile In objFolder.Files 
    If objFile.DateLastModified > varDate Then 
     varDate = objFile.DateLastModified 
     strName = objFile.Name 

     FileCopy objFile, strpaste 

    End If 
Next 'objFile 

Есть ли способ копирования только специально сформулированные файлы?

Что-то похожее на функцию LIKE в SQL, например .: WHERE City LIKE 's%'.

+0

Да, вы можете сделать 'if strName like' – findwindow

+4

' Если objFile.Name Like "s *" Then' –

ответ

0

Поскольку у вас уже есть strName для хранения имени файла, вы можете использовать встроенную функцию INSTR, чтобы проверить, содержит ли строка подстроку. INSTR принимает эти Счетчики:

Положения строки, чтобы начать поиск, самой строки, Строки для поиска, Как искать (vbTextCompare [регистронезависимо] и vbBinaryCompare [чувствительны к регистру] является двумя соответствующими перечисления здесь)

Затем INSTR возвращает номер, обозначающий позицию найденной строки, или 0, если строка не была найдена. Например;

strName = "this is a test file.txt" 

?INSTR(1,strName,"test file",vbTextCompare) 

Вернется 11, так как «тестовый файл» появится в 11-й позиции.

Так строить в своем коде, я хотел бы добавить, если заявление выполнить команду копирования:

If Instr(1,strName,"test file",vbTextCompare) > 0 then 
    FileCopy objFile, strpaste 
end if 

Надеется, что это помогает!

+0

Я думаю, что комментарий Тима более прост, подразумевая использование 'и' в 'if' для измененная дата. – findwindow

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