Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Закрытие и удаление файла_1 через файл_2 - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Закрытие и удаление файла_1 через файл_2
urlchik Дата: Пятница, 28.02.2020, 14:25 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте!
Помогите с решением задачи!
есть файл 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 - Пятница, 28.02.2020, 16:17
 
Ответить
СообщениеЗдравствуйте!
Помогите с решением задачи!
есть файл 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
Дата добавления - 28.02.2020 в 14:25
Sobirjon Дата: Понедельник, 02.03.2020, 13:21 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 151
Репутация: 2 ±
Замечаний: 0% ±

2016
[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
    
    sFilePath = ThisWorkbook.Path & Application.PathSeparator
    sFileName = Dir(sFilePath & "\*", vbHidden + vbDirectory)
    
    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]


Сообщение отредактировал Sobirjon - Понедельник, 02.03.2020, 13:26
 
Ответить
Сообщение[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
    
    sFilePath = ThisWorkbook.Path & Application.PathSeparator
    sFileName = Dir(sFilePath & "\*", vbHidden + vbDirectory)
    
    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]

Автор - Sobirjon
Дата добавления - 02.03.2020 в 13:21
urlchik Дата: Вторник, 03.03.2020, 12:49 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Sub Пример()


громадное спасибо!


Век живи - век учись!
 
Ответить
Сообщение
Sub Пример()


громадное спасибо!

Автор - urlchik
Дата добавления - 03.03.2020 в 12:49
boa Дата: Вторник, 03.03.2020, 20:34 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация: 167 ±
Замечаний: 0% ±

365
Здравствуйте,
если файл должен удалить только самого себя, то можно проще
[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
[/vba]

Автор - boa
Дата добавления - 03.03.2020 в 20:34
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!