|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.01.2011, 17:03 | #1 |
Пользователь
Регистрация: 27.12.2010
Сообщений: 82
|
Как узнать, сохранялся ли в процессе работы файл
Добрый день. Помогите разобраться со следующим вопросом.
Такой сценарий: пользователь открывает файл, работает в нем, сохраняет. Workbook.saved насколько я понимаю становится True, затем он делает еще изменения, она меняется обратно на false. Затем жмет крестик и выходит, при этом на вопрос "сохранить ли изменения?" отвечает НЕТ и файл "откатывается" к последнему сохранению. Как мне отследить, сохранял он его или нет. То есть откатился файл к началу или какому-то новому состоянию. результат мне нужно получить в булевой переменной, которая должна попасть в следующим образом объявленную процедуру Код:
|
18.01.2011, 17:43 | #2 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Код:
webmoney: E265281470651 Z422237915069 R418926282008
|
18.01.2011, 18:23 | #3 |
Пользователь
Регистрация: 27.12.2010
Сообщений: 82
|
Hugo121
это что вообще такое??? я же написал что после сохранения будут еще изменения и ThisWorkbook.Saved станет false. |
18.01.2011, 18:27 | #4 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Ну и вот - значит месиджа не будет.
Соотв. , если добавить Else, можете встроить свои действия. Или Вам нужно узнать, были ли вообще сохранения?
webmoney: E265281470651 Z422237915069 R418926282008
|
18.01.2011, 18:33 | #5 |
Пользователь
Регистрация: 27.12.2010
Сообщений: 82
|
да.
Я вроде так и написал сразу) Последний раз редактировалось 3BEPOBOY; 18.01.2011 в 18:35. |
18.01.2011, 18:47 | #6 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Код:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
18.01.2011, 18:50 | #7 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Код:
|
18.01.2011, 20:45 | #8 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Может так?
Или там ещё одно условие добавить нужно...
webmoney: E265281470651 Z422237915069 R418926282008
|
18.01.2011, 21:32 | #9 |
Пользователь
Регистрация: 27.12.2010
Сообщений: 82
|
EducatedFool
вы не правильно поняли, файл уже сохранен. Вопрос пересохранялся ли в процессе работы. Но предложенный вами вариант возможно тоже когда-нибудь пригодится. Hugo121 а вы правильно поняли. Подозревал что через BeforSave нужно делать. А вот про глобальные переменные не знал. По пути домой подумал, похоже мне все-таки и этого знания пока недостаточно для полного решения задачи. Я все дорабатываю "косяки" своего первого макроса, который проверяет файл на изменения и пишет в лог инфу кто и когда сменил. На сегодня не проработан лишь один момент: 1. пользователь открывает файл, изменет, сохраняет. 2. затем удалет изменения, но передумывает и решает их оставить. 3. жмет крестик и "не сохранять" итого после нажатия крестика макрос проверяет что же наделал пользователь, видит что ничего, и не записывает ничего в лог, после чего происходит откат на сохранение и мы имеем фактически измененный документ, но измменения оказываются незарегистрированными. Поэтому я решил что если проверить сохранялся ли файл в процессе работы, можно писать в лог если сохранялся, и не писать если нет. Но тут теперь пользователь может просто открыть файл, сохранить "вхолостую", чиркнуть пару строк и выйти без сохранений, тогда будет ненужная запись в лог... Хм, только сейчас дошло что я вообще не умею проверять файл на изменения, если пользователь выходит без сохранения. Подкиньте мысль пожалуйста. Свой корявый макрос до утра показать не могу, на работе остался. Но суть такова: 1. при открытии создается скрытый лист, туда копируется содержимое искомого листа 2. при закрытии эти листы сравниваются. Также задается вопрос пользователю, изменял он что-то или нет. 3. Итого в логе оказываются фактические изменения + наврал/не наврал пользователь. Но отследить их при выходе из файла без сохранения пока не очень получается. Последний раз редактировалось 3BEPOBOY; 18.01.2011 в 21:43. |
18.01.2011, 22:50 | #10 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Отслеживать изменения нужно во всём файле, или только в определённой области?
Изменения формул тоже нужно отслеживать? Если следить нужно только за значениями в определённой области, то например такой вариант - при открытии файла эти данные берутся в public массив, при закрытии файла первый массив сравнивается с текущим. Тут ещё нужно продумать, что делать при сохранениях в процессе работы - обновлять public или нет, продумать мелочи.
webmoney: E265281470651 Z422237915069 R418926282008
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Полное зависание Delphi в процессе работы | artemavd | Общие вопросы Delphi | 10 | 05.12.2010 05:25 |
Как можно изменить у DBGrid Datasource в процессе работы приложения ?? | Kamelli_13 | БД в Delphi | 6 | 01.05.2009 17:14 |
Как осуществить возможность выбора БД в процессе работы программы | Cabyrc | БД в Delphi | 9 | 21.03.2009 08:30 |
Как узнать время работы программы в паскаль? | bullvinkle | Помощь студентам | 2 | 26.12.2008 11:20 |
Блокировка функции в процессе ее работы | Andr180nag | JavaScript, Ajax | 2 | 11.08.2008 18:07 |