Не могу убить xls файлы - PullRequest
       23

Не могу убить xls файлы

0 голосов
/ 24 июля 2010

Я использовал каждую версию подпрограмм Kill для удаления файлов xls в текущем каталоге, но безуспешно.Вот мой кодЯ хочу удалить все файлы xls, кроме wbCntl.Выполнение этого кода показывает, что все работает, за исключением команды Kill swb.(swb публично определяется как строка)

    'Close all files except wbCntl
        swb1 = wbCntl.Name
        For Each wb In Application.Workbooks
            swb = wb.Name
            If swb <> swb1 Then
                Workbooks(swb).Close SaveChanges:=False
                On Error Resume Next
                Kill swb
                Err.Clear
            End If
        Next wb

Может кто-нибудь помочь мне с этим

Ответы [ 3 ]

0 голосов
/ 25 июля 2010

Это не работает, потому что свойство Name - это просто имя файла. Метод Kill требует полного пути. Попробуйте вместо этого использовать свойство FullName.

Также вы можете столкнуться со странностями, когда удаляете элемент из коллекции, которую вы просматриваете, используя «For Each». Попробуйте это:

Public Sub Example()
    Dim lngIndx As Long
    Dim strFilePath As String
    For lngIndx = Excel.Workbooks.Count To 1& Step -1
        strFilePath = Excel.Workbooks(lngIndx).FullName
        If strFilePath <> ThisWorkbook.FullName Then
            Excel.Workbooks(lngIndx).Close False
            SafeKill strFilePath
        End If
    Next
End Sub

Private Sub SafeKill(ByVal path As String)
    On Error Resume Next
    Kill path
End Sub
0 голосов
/ 30 июля 2010

Благодаря как stakx, так и особенно Oorang. Ваш код работал отлично. Извините, что я так долго работал над этим. Кроме того, я не уверен, если это способ ответить на ваши хорошие решения. Я новичок на этом сайте. Хотел бы дать большие пальцы вам обоим. Грант

0 голосов
/ 24 июля 2010

Я не думаю, что Application.Workbooks - это то, что вы хотите. Справка по Excel 2003 VBA придает этой коллекции следующее значение:

Коллекция всего Workbook объекты, которые в настоящее время открыты в Приложение Microsoft Excel.

Однако вы хотите перебирать файлы Excel в текущем каталоге, что очень отличается от этого.

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

...