2014-11-14 5 views
0

Я пытаюсь удалить текстовый файл, где он содержит часть предшествующих дат месяца в названии имени файла и в текущем году.vba, если файл существует, тогда удалите

так, например, если сегодня ноября это будет месяц номер 11 и в прошлом месяце будет месяц номер 10.

, поэтому я хочу, чтобы удалить файл, в котором он содержит номер месяца 10, потому что это в прошлом месяце.

по какой-то причине мой код вызывает первенствовать к сбою и не отвечать, может кто-то пожалуйста, покажите мне, как я могу изменить свой код, чтобы получить эту работу, благодаря

Dim iMonth As Integer 
Dim iYear As Integer 
iMonth = Month(Date) - 1 
iYear = Year(Date) 
Dim DirFile As String 
DirFile = "P:\Log (" & iMonth & "-" & iYear & ")*.txt" 
Do While DirFile <> "" 
Count = Count + 1 
Loop 
If Count > 0 Then 
SetAttr DirFile, vbNormal 
'Then delete the file 
Kill DirFile 
End If 
+0

Вы можете улучшить поведение, используя Scripting.FileSystemObject, который является стандартным COM-объектом в Windows. – Bathsheba

ответ

0

Ваше давая строку DirFile значение, то создание петля в то время как петли в то время как строка DirFile не является пустым, поэтому он будет работать вечно (запирание первенствовать), вам потребуется код, который будет проверять, если файл существует на самом деле, а затем удалить его

DirFile = "P:\Log (" & iMonth & "-" & iYear & ")*.txt" 
Do While DirFile <> "" 'always true 
Count = Count + 1 
Loop 

использование Try

Dim iMonth As Integer 
Dim iYear As Integer 
iMonth = Month(Date) - 1 
iYear = Year(Date) 
Dim DirFile As String 
DirFile = "P:\Log (" & iMonth & "-" & iYear & ")*.txt" 

    If Len(Dir(DirFile)) <> 0 Then 
     SetAttr DirFile, vbNormal 
     Kill DirFile 
    End If 
Смежные вопросы