2015-02-04 3 views
1

Я хочу удалить файлы без Excel в папке с помощью VBA.Удаление файлов из Excel в папке VBA

Это код, который я нашел отсюда: Excel Delete Files.

Dim fName As String 
fName = Dir("C:\test\*.*") 
Do While fName <> "" 
    If fName <> "fileA.xls" Then'or .txt or .csv or whatever 
     Kill "C:\test\" & fName 
    End If 
    fName = Dir 
Loop 

Я изменил код так:

folderPath = Dir("C:\test\") 
Do While folderPath <> "" 
    If folderPath <> "*.xls" Then'or .txt or .csv or whatever 
    Kill "C:\test\" & folderPath 
    End If 
    folderPath = Dir 
Loop 

Это дает мне ошибку говоря файл не найден. Но у меня есть файл в папке, которую нужно удалить.

Нужно руководствоваться этим.

+0

Укажите, существует ли файл в данном месте. –

+0

Это есть. Я это обеспечил. – lakesh

+0

Я понимаю, что это немного редакционная статья, но я бы посоветовал не использовать имена переменных, которые не точно представляют данные, хранящиеся в ней: в частности, переменная с именем 'folderPath', вероятно, не должна использоваться для хранения * * имени файла *. –

ответ

4

Использование нижеследующего должно выполняться по мере необходимости. Обратите внимание, что лучше использовать оператор Like для сравнения частичных строк, в этом случае оператор Not ищет только те, которые не совпадают.

strFileName = Dir("C:\test\*") 
Do While strFileName <> "" 
    If Not lcase$(strFileName) Like "*.xls" Then 'or .txt or .csv or whatever 
    Kill "C:\test\" & strFileName 
    End If 
    strFileName = Dir 
Loop 

Обратите внимание, если вы хотите, чтобы игнорировать все файлы Excel затем рассмотреть альтернативные расширения и явно учитывать их с And следующим образом:

If Not lcase$(strFileName) Like "*.xls" And Not lcase$(strFileName) Like "*.xlsx" Then

Вспоминая .txt, .csv,. xlsm и т. д.

+1

Должно также, вероятно, 'lcase $ (strFileName), как ...' –

+0

Хорошая точка, отредактированная. – Simon1979

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