Страницы: 1
RSS
Переименовывать файл Excel при его закрытии (VBA)
 
Добрый день!

Подскажите пожалуйста как сделать так, чтобы при закрытии файла Excel, его название переименовывалось автоматически определенным образом?
Есть такие событийные процедуры:
Код
Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean)    
End Sub 
Private Sub Workbook_AfterSave (ByVal Success As Boolean)    
End Sub
Кто сталкивался с таким вопросом, то подскажите.
Например файл называется "Отчет", а после закрытия, он автоматически переименовывается в "Отчет 18.05.2017".
 
вообще то вам нужно событие
Код
Workbook_BeforeClose
Изменено: V - 18.05.2017 15:27:02
 
Вариант
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="\\Srv-02\Public\" & ActiveWorkbook.Name & " " & Date & ".xls", FileFormat:= _
        xlExcel8
Application.DisplayAlerts = True
End Sub
Изменено: V - 18.05.2017 15:32:43
 
если этот файл 2-й раз сегодня открыть, то сохранится уже как "Отчет 18.05.2017 18.05.2017"
а завтра, после первого открыть, сохранить, будет "Отчет 18.05.2017 18.05.2017 19.05.2017"
и т.д.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Что то у меня ничего не происходит. Что не так?
Полный путь к файлу: C:\Users\User\Desktop\Docs\Docs\Test.xlsb
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="\\Users\User\Desktop\Docs\Docs\" & ActiveWorkbook.Test & " " & Date & ".xlsb", FileFormat:= _
        xlExcel8
Application.DisplayAlerts = True
End Sub
 
Код
ActiveWorkbook.SaveAs thisworkbook.path & "\" & "Test "  & Date & ".xlsb", FileFormat:= xlExcel8
Я сам - дурнее всякого примера! ...
 
Заменил вышеуказанную часть кода, выхожу с файла и ничего не происходит.
В чем может быть загвоздка?
У меня Excel 2013.
Изменено: Limos - 18.05.2017 16:53:05
 
И никто помочь не может?
Всем привет!
 
М.б. макросы не разрешены.
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
уберите обход ошибок и установите breakpoint там где сохранение, пошагово пройдите процедуру.
Если есть ошибка - оно ругнеться, если отключены макросы, то на breakpoint  не остановится, т.к. в процедуру не запустит
 
В настройках в безопасности стоит "отключить все макросы с уведомлением".
Может ли быть в этом проблема?
 
Limos, ну а как Вы думаете, если макросы у Вас отключены?  ;)
 
Цитата
Limos написал:
В настройках в безопасности стоит "отключить все макросы с уведомлением".
Может ли быть в этом проблема?
Если на вопрос Excel "Включить макросы?" вы отвечаете "нет", то в этом.  :)
 
Включил макросы и код не работает((((
Кто поможет?
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & "Test " & Date & ".xlsb", FileFormat:=xlExcel8
Application.DisplayAlerts = True
End Sub
По идее, какое бы название у файла не было он должен при закрытии книги превращать в Test ...... .xlsb
Но этого не происходит. Название остается прежнее.
 
Цитата
Limos написал:
Название остается прежнее.
Проверил: сохраняет с новым именем.
 
1) код д.б. в модуле КНИГИ!
2) так измените:
Код
Me.SaveAs ThisWorkbook.Path & "\" & "Test " & Date & ".xlsb", FileFormat:=xlExcel8
Я сам - дурнее всякого примера! ...
 
Ничего не меняется, может я что-то не так делаю в плане выхода из файла?

Я просто нажимаю на крестик в правом верхнем углу.
И код я разместил вроде бы корректно.  
 
Перестанете тупить и все получится.
Цитата
kuklp написал:
1) код д.б. в модуле КНИГИ!
ЭтаКнига, ЙошкарОла!
Я сам - дурнее всякого примера! ...
 
Учите матчасть:
Что такое модуль? Какие бывают модули?
Я сам - дурнее всякого примера! ...
 
Отлично, а как заменить тот же файл, чтоб у меня их миллион не оказалось?
Он просто делает еще один.

И при открытии не открывается, выдает ошибку:

Исходный файл в формате *.xlsb
Изменено: Limos - 01.06.2017 16:17:02
 
Цитата
Limos написал:
при открытии не открывается, выдает ошибку
Код
FileFormat:=xlExcel8

должно быть:
Код
FileFormat:=ThisWorkbook.FileFormat
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Ошибку устранил, но есть нюанс.....

Как заменить название действующего файла, а то он создает новый?
Он просто делает еще один. Тип Save As, а мне нужно Save просто....  
 
Просто save не изменит имя.
Думаю нужно делать savecopyas, и затем убить исходный файл.
Можно это взять за основу (из закромов, автора не записал):
Код
книга может сама себя уничтожить вот так:

Sub KillMe()
With ThisWorkbook
.ChangeFileAccess xlReadOnly
Kill .FullName
.Close False
End With
End Sub

Если у файла установлен флажок "Только чтение", Kill не сработает.
Нужно перед Kill поставить
setattr .FullName, 0

Изменено: Hugo - 02.06.2017 10:37:05
Страницы: 1
Наверх