Здравствуйте! Помогите с решением задачи! есть файл 1 -: после работы в нем через формы, по нажатию кнопки выход он сохраняется в другой папке.
надо сделать чтоб после его закрытия он удалялся из текущей папки
в голову пришла идея использовать файл 2, в котором при открытии из файла1 запускается макрос на закрытие файла 1 и его удаление [vba]
Код
'закрываем все книги кроме этой wbc = Workbooks.Count iPath = ТhisWorkbook.Path For w = 1 To wbc On Error Resume Next If Workbooks(w).FullName<>ТhisWorkbook.FullName Then Workbooks(w).Close False End If Next w 'удаляем все книги из текущей папки Dim s As String s = Dir(iPath & "\*.*")
Do While s <> "" s = Dir If s<>ТhisWorkbook.Name Then Kill (iPath & "\" & s) end if Loop Application.quit end sub
[/vba]
Что тут не так? У меня все заканчивается на открытии файла 2 и закрытии всех остальных кроме файла1, а удаления из текущей папки не происходит. но, когда запускаю на прямую файл 2, то все работает???
Здравствуйте! Помогите с решением задачи! есть файл 1 -: после работы в нем через формы, по нажатию кнопки выход он сохраняется в другой папке.
надо сделать чтоб после его закрытия он удалялся из текущей папки
в голову пришла идея использовать файл 2, в котором при открытии из файла1 запускается макрос на закрытие файла 1 и его удаление [vba]
Код
'закрываем все книги кроме этой wbc = Workbooks.Count iPath = ТhisWorkbook.Path For w = 1 To wbc On Error Resume Next If Workbooks(w).FullName<>ТhisWorkbook.FullName Then Workbooks(w).Close False End If Next w 'удаляем все книги из текущей папки Dim s As String s = Dir(iPath & "\*.*")
Do While s <> "" s = Dir If s<>ТhisWorkbook.Name Then Kill (iPath & "\" & s) end if Loop Application.quit end sub
[/vba]
Что тут не так? У меня все заканчивается на открытии файла 2 и закрытии всех остальных кроме файла1, а удаления из текущей папки не происходит. но, когда запускаю на прямую файл 2, то все работает???urlchik
Век живи - век учись!
Сообщение отредактировал urlchik - Пятница, 28.02.2020, 16:17
Do While sFileName <> "" If sFileName <> "." And sFileName <> ".." And InStr(1, sFileName, "~") = 0 Then sDeleteFile = sFilePath & sFileName ' снятие аттрибутов "Скрытый", "Системный" и "Только для чтения" VBA.SetAttr sDeleteFile, (VBA.GetAttr(sDeleteFile) And vbArchive) If sDeleteFile <> ThisWorkbook.FullName Then Kill (sDeleteFile) End If sFileName = Dir Loop End Sub
[/vba]
[vba]
Код
Sub Пример() Dim wb As Workbook, sFilePath As String, sFileName As String, sDeleteFile As String
For Each wb In Workbooks If wb.Name <> ThisWorkbook.Name Then wb.Close False' True если надо сохранить Next wb
Do While sFileName <> "" If sFileName <> "." And sFileName <> ".." And InStr(1, sFileName, "~") = 0 Then sDeleteFile = sFilePath & sFileName ' снятие аттрибутов "Скрытый", "Системный" и "Только для чтения" VBA.SetAttr sDeleteFile, (VBA.GetAttr(sDeleteFile) And vbArchive) If sDeleteFile <> ThisWorkbook.FullName Then Kill (sDeleteFile) End If sFileName = Dir Loop End Sub
Здравствуйте, если файл должен удалить только самого себя, то можно проще [vba]
Код
Sub ThisWorkbookKill() Dim sPathForSave$, WB As Workbook Set WB = ThisWorkbook sPathForSave = WB.Path & "\SaveFolder\" ' папка должна существовать ' или тогда VBA.MkDir (sPathForSave) ' создает папку WB.SaveCopyAs sPathForSave & WB.Name WB.ChangeFileAccess xlReadOnly VBA.Kill (WB.FullName) WB.Close False End Sub
[/vba]
Здравствуйте, если файл должен удалить только самого себя, то можно проще [vba]
Код
Sub ThisWorkbookKill() Dim sPathForSave$, WB As Workbook Set WB = ThisWorkbook sPathForSave = WB.Path & "\SaveFolder\" ' папка должна существовать ' или тогда VBA.MkDir (sPathForSave) ' создает папку WB.SaveCopyAs sPathForSave & WB.Name WB.ChangeFileAccess xlReadOnly VBA.Kill (WB.FullName) WB.Close False End Sub