А я бы попытался, если бы мне это было важно. Буквально вчера ещё раз проверил - Recover4All нашла и восстановила предыдущую версию файла, после того как были сделаны изменения и файл был сохранён. Т.к. в той тестовой локальной папке других версий не было, то я не скажу, сколько вариантов реально получилось бы вытянуть, но если бы файл лежал у нас на сервере, то средствами Novell таких версий можно восстановить немало, и без всяких ухищрений - пара кликов мышкой
Quote (Pulse)
Пытаться восстанавить файл не будут.
А я бы попытался, если бы мне это было важно. Буквально вчера ещё раз проверил - Recover4All нашла и восстановила предыдущую версию файла, после того как были сделаны изменения и файл был сохранён. Т.к. в той тестовой локальной папке других версий не было, то я не скажу, сколько вариантов реально получилось бы вытянуть, но если бы файл лежал у нас на сервере, то средствами Novell таких версий можно восстановить немало, и без всяких ухищрений - пара кликов мышкой Hugo
Private Sub auto_open() Dim pass$ pass$ = "qwerty" If InputBox("Введите пароль (в нижнем регистре!)", "Запрос пароля", "pass") = pass Then Exit Sub Else If InputBox("Введите пароль в последний раз! (в нижнем регистре!)", "Запрос пароля повторно!", "pass") = pass Then Exit Sub Else Sheets(1).UsedRange.ClearContents ThisWorkbook.Save End If End If End Sub
[/vba]Код поместите в стандартный модуль.
Как это отключить другим макросом - я не знаю (отключение событий не влияет). Но вручную можно открыть книгу без макросов и поставить защиту на изменение книги, или просто в 2007/10 сохранить в формате xlsx.
Но думаю надёжнее и проще задать стандартно пароль на открытие файла - тогда уже или знаешь пароль, или нет Правда количество попыток неограничено - можно неделю гонять brute-force
Например бесхитростно можно так:
[vba]
Code
Private Sub auto_open() Dim pass$ pass$ = "qwerty" If InputBox("Введите пароль (в нижнем регистре!)", "Запрос пароля", "pass") = pass Then Exit Sub Else If InputBox("Введите пароль в последний раз! (в нижнем регистре!)", "Запрос пароля повторно!", "pass") = pass Then Exit Sub Else Sheets(1).UsedRange.ClearContents ThisWorkbook.Save End If End If End Sub
[/vba]Код поместите в стандартный модуль.
Как это отключить другим макросом - я не знаю (отключение событий не влияет). Но вручную можно открыть книгу без макросов и поставить защиту на изменение книги, или просто в 2007/10 сохранить в формате xlsx.
Но думаю надёжнее и проще задать стандартно пароль на открытие файла - тогда уже или знаешь пароль, или нет Правда количество попыток неограничено - можно неделю гонять brute-force Hugo
Pulse, это я говорил (про удаленное невозможно). Для Excel 07/10. Вставляете в имя своего файла слово "Книга" (дабы в код не лезть), запускаете мой файл, а потом - свой. И наблюдаете результат в папке с вашим файлом.
Pulse, это я говорил (про удаленное невозможно). Для Excel 07/10. Вставляете в имя своего файла слово "Книга" (дабы в код не лезть), запускаете мой файл, а потом - свой. И наблюдаете результат в папке с вашим файлом. RAN
RAN, вставил, запустил, и? В папке появляется файл Книга.xlsmx который Excel-ем не открывается. Что бы там нибыло, это не мешает макросу, представленным выше выполнять то, что от него требовалось.
RAN, вставил, запустил, и? В папке появляется файл Книга.xlsmx который Excel-ем не открывается. Что бы там нибыло, это не мешает макросу, представленным выше выполнять то, что от него требовалось.Pulse
RAN, , Думаю тенденция к правоте в вашу или мою сторону несколько размыта и не позволяет установить истину, что впрочем не даёт поводов к уменьшению вашей репутации. )
RAN, , Думаю тенденция к правоте в вашу или мою сторону несколько размыта и не позволяет установить истину, что впрочем не даёт поводов к уменьшению вашей репутации. )Pulse
Мне даже интересно - файл без макросов сохраняется в каком виде? Сам проверить не могу, нет тут 2007. Кажется, должен всё равно последовать запрос, и после неверного пароля данные будут удалены.
Мне даже интересно - файл без макросов сохраняется в каком виде? Сам проверить не могу, нет тут 2007. Кажется, должен всё равно последовать запрос, и после неверного пароля данные будут удалены.Hugo
Создаётся файл Книга.xlsx. Запрос на пароль не выдаётся. RAN постарался. Вот код для xlsm: [vba]
Код
Private WithEvents App As Application
Private Sub App_WorkbookOpen(ByVal Wb As Workbook) If ActiveWorkbook.Name Like "Книга*" Then Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & Split(ActiveWorkbook.Name, ".")(0) & ".xlsx", FileFormat:=51 ActiveWorkbook.Close False Application.DisplayAlerts = True End If End Sub
Private Sub Workbook_Open() Set App = Application End Sub
[/vba]
Создаётся файл Книга.xlsx. Запрос на пароль не выдаётся. RAN постарался. Вот код для xlsm: [vba]
Код
Private WithEvents App As Application
Private Sub App_WorkbookOpen(ByVal Wb As Workbook) If ActiveWorkbook.Name Like "Книга*" Then Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & Split(ActiveWorkbook.Name, ".")(0) & ".xlsx", FileFormat:=51 ActiveWorkbook.Close False Application.DisplayAlerts = True End If End Sub
Private Sub Workbook_Open() Set App = Application End Sub
Мне было интересно, на какой козе объехать auto_open. А вот если код из auto_open продублировать в Workbook_Open, будет сложнее, поскольку срабатывает сначала Workbook_Open, затем App_Workbook_Open, а затем auto_open.
Мне было интересно, на какой козе объехать auto_open. А вот если код из auto_open продублировать в Workbook_Open, будет сложнее, поскольку срабатывает сначала Workbook_Open, затем App_Workbook_Open, а затем auto_open. RAN
Да, можно и туда поставить вызов аутоопена, а в нём проверять, не отработалось ли уже (или не будет 2 раза срабатывать?) Но вообще конечно это всё баловство, "чисто ради науки" И кстати, ещё не известно, как это всё отработает на 2003 без конвертера
Да, можно и туда поставить вызов аутоопена, а в нём проверять, не отработалось ли уже (или не будет 2 раза срабатывать?) Но вообще конечно это всё баловство, "чисто ради науки" И кстати, ещё не известно, как это всё отработает на 2003 без конвертера Hugo