Страницы: 1
RSS
Удалить открытый файл без сохранения макросом из другой книги, с очисткой буфера обмена
 
Добрый день. Есть открытый файл "qwerty.xlsx"в котором выполняются операции. Как очистить буфер обмена, закрыть и удалить файл без activate и select? Также чтобы не прописывать путь, так как файл создается автоматически:
Код
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="qwerty.xlsx"
 
А зачем его тогда сохранять вообще, если надо удалить? Закройте без сохранения и он сам исчезнет. Или поясните задачу конкретнее.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
1.Создать файл, присвоить имя "qwerty" для дальнейшего обращения к файлу (если можно без сохранения присвоить имя, подскажите пожалуйста).
2. Производятся разные операции.
3. Очистить буфер обмена, закрыть и удалить файл "qwerty" - kill, close, какой код?
Нужна помощь по 3 пункту.
 
Удалить файл, из которого работает макрос не получится. Сначала надо закрыть файл, а затем удалить. Для этого нужно запускать макрос из другого файла. Если вы из другого файла запускаете макрос, то запомните в переменную путь и имя файла
Код
a=activeworkbook.fullname
затем закройте его
Код
activeworkbook.close
потом удалите с помощью Kill и очистите буфер

Код
Kill a 
Application.CutCopyMode = False

Вру. можно удалить макросом из открытой книги.

Код
 a$ = ActiveWorkbook.FullName
    ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly
    SetAttr a$, vbNormal: Kill a$
    ActiveWorkbook.Close saveChanges:=False
Изменено: Hellmaster - 15.10.2019 13:15:03
 

Так выдает ошибку

Код
Workbooks.Add
    ActiveWorkbook.SaveAs Filename:="обработка.xlsx"
    a = ActiveWorkbook.FullName
a.Close
Kill a
Application.CutCopyMode = False
 
Код
Sub DelSelf()
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    Dim batFullName As String
    batFullName = ThisWorkbook.Path & "\" & "selfdel.bat"
    With fso.createtextfile(batFullName, True)
        .WriteLine "chcp 1251"
        .WriteLine "if exist """ & ThisWorkbook.FullName & """ ("
        .WriteLine "DEL """ & ThisWorkbook.FullName & """"
        .WriteLine """" & batFullName & """"
        .WriteLine ") ELSE ("
        .WriteLine "DEL """ & batFullName & """"
        .WriteLine ")"
        .Close
    End With
    Shell "cmd /c " & """" & batFullName & """", vbNormalFocus
    Application.Quit
    
End Sub
Вот такой вариант удаления файла, содержащего макрос, через бат файл.
 
slider85, попробуйте не
Цитата
slider85 написал:
a.Close
а
Код
ActiveWorkbook.close
 
Цитата
Апострофф написал: ActiveWorkbook.close
1. Макрос выполняется в другом файле
2. Закрываемый и удаляемый файл НЕ является активным
 
Цитата
slider85 написал:
Workbooks.Add    
ActiveWorkbook.SaveAs Filename:="обработка.xlsx"    
a = ActiveWorkbook.FullName
файл обработка.xlsx является активным, не надо заблуждаться.
 
Да, прописал как сказали и все работает.
Большое спасибо за помощь)
 
Имхо по описанию задачи всё проще:
Код
set qwerty=workbooks.add
работаем с объектом qwerty
qwerty.close false
Application.CutCopyMode = False
Страницы: 1
Наверх