Доброго времени суток! Замучался бороться с раздолбайством пользователей... Суть проблемы: Есть документ в который дежурный в конце дня вносит изменения и сохраняет под следующим номером, но это в идеале. На практике очень часто бывает так, что вместо "Сохранить как" они на автомате жмут "Сохранить" тем самым запахивая данные за предыдущий день у другого человека. Достали! Вопрос: Подскажите как реализовать следующий алгоритм: Сотрудник приходя на работу открывает документ условно №2555 созданный 17.09.2018 вносит в него изменения, после этого выбирает "Сохранить как", присваивает ему следующий номер и сохраняет. Дата сохранения соответственно 18.09.2018. Можно ли сделать так чтобы проходила проверка по номеру документа и по дате сохранения? То есть если сотрудник открыл документ, внёс в него изменения и попытался его просто сохранить не поменяв номер, то ему в этом будет отказано и будет выдано соответствующее сообщение. При этом если дата создания документа и дата сохранения сохранения совпадают, то правило проверки номера не действует.
Доброго времени суток! Замучался бороться с раздолбайством пользователей... Суть проблемы: Есть документ в который дежурный в конце дня вносит изменения и сохраняет под следующим номером, но это в идеале. На практике очень часто бывает так, что вместо "Сохранить как" они на автомате жмут "Сохранить" тем самым запахивая данные за предыдущий день у другого человека. Достали! Вопрос: Подскажите как реализовать следующий алгоритм: Сотрудник приходя на работу открывает документ условно №2555 созданный 17.09.2018 вносит в него изменения, после этого выбирает "Сохранить как", присваивает ему следующий номер и сохраняет. Дата сохранения соответственно 18.09.2018. Можно ли сделать так чтобы проходила проверка по номеру документа и по дате сохранения? То есть если сотрудник открыл документ, внёс в него изменения и попытался его просто сохранить не поменяв номер, то ему в этом будет отказано и будет выдано соответствующее сообщение. При этом если дата создания документа и дата сохранения сохранения совпадают, то правило проверки номера не действует.Andrey410
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If Date <> DateValue(Me.BuiltinDocumentProperties("Creation Date")) Then If Not SaveAsUI Then Cancel = True MsgBox "Такой файл уже есть" Exit Sub End If End If End Sub
[/vba]
В модуль книги положите вот такой макрос [vba]
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If Date <> DateValue(Me.BuiltinDocumentProperties("Creation Date")) Then If Not SaveAsUI Then Cancel = True MsgBox "Такой файл уже есть" Exit Sub End If End If End Sub
Огромное спасибо! Поставил макрос, но что-то не срастается. При попытке просто сохранить файл под тем же именем, но с другой текущей датой выдаёт сообщение, что такой файл есть. Всё здорово! А вот дальше чудеса начинаются. Сохраняем файл под другим именем, пытаемся сохранить после внесения изменений и получаем тот же блок... Попробую более подробно описать что должен делать сотрудник: 1. приходит на работу и открывает файл за предыдущий день. Выбирает "Сохранить как" и присваивает ему другое имя. (на этом этапе у него не должно быть возможности просто сохранить файл, не переименовав его) 2. в течении дня работает с этим файлом. Сохраняет, открывает, закрывает, редактирует и .т.п. 3. в конце дня в последний раз сохраняет файл и выводит его на печать. 4. и вот на следующий день этот файл должен быть закрыт на любые изменения под этим номером и вчерашней датой. Как- так...
Может я что-то не правильно делаю?
Огромное спасибо! Поставил макрос, но что-то не срастается. При попытке просто сохранить файл под тем же именем, но с другой текущей датой выдаёт сообщение, что такой файл есть. Всё здорово! А вот дальше чудеса начинаются. Сохраняем файл под другим именем, пытаемся сохранить после внесения изменений и получаем тот же блок... Попробую более подробно описать что должен делать сотрудник: 1. приходит на работу и открывает файл за предыдущий день. Выбирает "Сохранить как" и присваивает ему другое имя. (на этом этапе у него не должно быть возможности просто сохранить файл, не переименовав его) 2. в течении дня работает с этим файлом. Сохраняет, открывает, закрывает, редактирует и .т.п. 3. в конце дня в последний раз сохраняет файл и выводит его на печать. 4. и вот на следующий день этот файл должен быть закрыт на любые изменения под этим номером и вчерашней датой. Как- так...
если дата создания документа и дата сохранения сохранения совпадают, то правило проверки номера не действует.
Нужна не дата создания, а дата сохранения У меня были подозрения на этот счет, но, уж если Вы так написали... Вот так попробуйте [vba]
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If Date <> DateValue(FileDateTime(Me.FullName)) Then If Not SaveAsUI Then Cancel = True MsgBox "Такой файл уже есть" Exit Sub End If End If End Sub
[/vba]
Делаете Вы все правильно. Вы написали в первом посте не совсем так
если дата создания документа и дата сохранения сохранения совпадают, то правило проверки номера не действует.
Нужна не дата создания, а дата сохранения У меня были подозрения на этот счет, но, уж если Вы так написали... Вот так попробуйте [vba]
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If Date <> DateValue(FileDateTime(Me.FullName)) Then If Not SaveAsUI Then Cancel = True MsgBox "Такой файл уже есть" Exit Sub End If End If End Sub