Лежал у меня "в заначке" подпиленный под свои нужды макрос Дмитрия (The_Prist) Ведение журнала сделанных в книге изменений. В общем-то работал, но не применялся, т.к. было очень не удобно из-за того, что пользователю нельзя отменять свои действия (и это естественно, т.к.работу макроса отменить весьма затруднительно и далеко не всегда возможно). А тут меня на форуме "Профессиональные приемы работы в Microsoft Excel" в топике Макрос по регистрации измененийAndrey Lenets навёл на мысль о другой возможности записи журнала изменений: его же Ёксель может САМ вести если файл открыть в общем доступе! Да, согласен: общий доступ "коцает" многие из полезных фенечек Ёкселя... НО! При использовании встроенного журнала изменений все допустимые в общем доступе изменения оказывается можно отменять. В общем, посмотрите, что я наваял на скорую руку. Только учтите: 1. Изменения фиксируются в журнале только после сохранения книги. 2. Создаваемый лист "Журнал" автоматически удаляется при сохранении файла или при отмене общего доступа. Поэтому если он ещё будет нужен, то его надо сначала куда-то скопировать (там есть макрос, к которому не прицеплена кнопка), а потом уже сохраняться.
P.S. Моя фантазия на этом истощилась. Может, можно ещё что-то дополировать? Жду замечаний и предложений по доработке. Только в надстройку переделать не просите - нет навыков к сожалению
Лежал у меня "в заначке" подпиленный под свои нужды макрос Дмитрия (The_Prist) Ведение журнала сделанных в книге изменений. В общем-то работал, но не применялся, т.к. было очень не удобно из-за того, что пользователю нельзя отменять свои действия (и это естественно, т.к.работу макроса отменить весьма затруднительно и далеко не всегда возможно). А тут меня на форуме "Профессиональные приемы работы в Microsoft Excel" в топике Макрос по регистрации измененийAndrey Lenets навёл на мысль о другой возможности записи журнала изменений: его же Ёксель может САМ вести если файл открыть в общем доступе! Да, согласен: общий доступ "коцает" многие из полезных фенечек Ёкселя... НО! При использовании встроенного журнала изменений все допустимые в общем доступе изменения оказывается можно отменять. В общем, посмотрите, что я наваял на скорую руку. Только учтите: 1. Изменения фиксируются в журнале только после сохранения книги. 2. Создаваемый лист "Журнал" автоматически удаляется при сохранении файла или при отмене общего доступа. Поэтому если он ещё будет нужен, то его надо сначала куда-то скопировать (там есть макрос, к которому не прицеплена кнопка), а потом уже сохраняться.
P.S. Моя фантазия на этом истощилась. Может, можно ещё что-то дополировать? Жду замечаний и предложений по доработке. Только в надстройку переделать не просите - нет навыков к сожалению
Создаваемый лист "Журнал" автоматически удаляется при сохранении файла или при отмене общего доступа. Поэтому если он ещё будет нужен, то его надо сначала куда-то скопировать (там есть макрос, к которому не прицеплена кнопка), а потом уже сохраняться.
Quote (Alex_ST)
ожет, можно ещё что-то дополировать? Жду замечаний и предложений по доработке
Предложение такое: автоматическое сохранение листа "Журнал" при сохранении или при отмене общего доступа. Насколько я понимаю события происходят и так и так, и сохранить лист со свойством VeryHidden можно. Или нет?
Quote (Alex_ST)
Создаваемый лист "Журнал" автоматически удаляется при сохранении файла или при отмене общего доступа. Поэтому если он ещё будет нужен, то его надо сначала куда-то скопировать (там есть макрос, к которому не прицеплена кнопка), а потом уже сохраняться.
Quote (Alex_ST)
ожет, можно ещё что-то дополировать? Жду замечаний и предложений по доработке
Предложение такое: автоматическое сохранение листа "Журнал" при сохранении или при отмене общего доступа. Насколько я понимаю события происходят и так и так, и сохранить лист со свойством VeryHidden можно. Или нет?
Предложение такое: автоматическое сохранение листа "Журнал" при сохранении или при отмене общего доступа.
Вот из этого сразу возникает множество сопутствующих вопросов типа где сохранять, под каким именем сохранять, как избежать дублирования записей если сохраняется всё, но не на одном и том же листе одного и того же файла и т.д. Что-то лениво копаться-разбираться. Зато меня тут навели на другой путь: чтобы не дать "шибко грамотному" юзвергу затереть историю своих действий в файле путём снятия и последующего восстановления общего доступа можно просто программно заюзать опцию меню Сервис-Защита-Защитить книгу и дать общий доступ... Что я и сделал в очередной версии файла. Честно говоря, при такой системе не вижу большой необходимости где-то вовне сохранять историю, т.к. удалить её злонамеренно становится достаточно проблематично.
Quote (Serge_007)
Предложение такое: автоматическое сохранение листа "Журнал" при сохранении или при отмене общего доступа.
Вот из этого сразу возникает множество сопутствующих вопросов типа где сохранять, под каким именем сохранять, как избежать дублирования записей если сохраняется всё, но не на одном и том же листе одного и того же файла и т.д. Что-то лениво копаться-разбираться. Зато меня тут навели на другой путь: чтобы не дать "шибко грамотному" юзвергу затереть историю своих действий в файле путём снятия и последующего восстановления общего доступа можно просто программно заюзать опцию меню Сервис-Защита-Защитить книгу и дать общий доступ... Что я и сделал в очередной версии файла. Честно говоря, при такой системе не вижу большой необходимости где-то вовне сохранять историю, т.к. удалить её злонамеренно становится достаточно проблематично.Alex_ST
Чуть добавил разных проверок чтобы не возникало ошибок. И скорректировал тексты MsgBox'ов.
На всякий случай уточню: 1. Используется возможность Excel вести журнал изменений в файлах общего доступа. С целью не дать пользователю отключить общий доступ макрос устанавливает пароль на отключение (пароль задаётся в декларациях модуля Const sShPass$ = "qwerty" ). 2. В журнале фиксируются только изменения данных. Изменение форматирования не фиксируется. 3. Запись данных в журнал производится при сохранении файла. 4. Кнопки на листе нужны только для демонстрации способа. В реальном файле они не нужны. Код макросов может быть вынесен в модуль личной книги макросов Personal.xls и запускаться оттуда (именно для этого в коде использовано обращение к ActiveWorkbook, а не к ThisWorkbook).
Чуть добавил разных проверок чтобы не возникало ошибок. И скорректировал тексты MsgBox'ов.
На всякий случай уточню: 1. Используется возможность Excel вести журнал изменений в файлах общего доступа. С целью не дать пользователю отключить общий доступ макрос устанавливает пароль на отключение (пароль задаётся в декларациях модуля Const sShPass$ = "qwerty" ). 2. В журнале фиксируются только изменения данных. Изменение форматирования не фиксируется. 3. Запись данных в журнал производится при сохранении файла. 4. Кнопки на листе нужны только для демонстрации способа. В реальном файле они не нужны. Код макросов может быть вынесен в модуль личной книги макросов Personal.xls и запускаться оттуда (именно для этого в коде использовано обращение к ActiveWorkbook, а не к ThisWorkbook).Alex_ST
Вот из этого сразу возникает множество сопутствующих вопросов типа где сохранять, под каким именем сохранять, как избежать дублирования записей если сохраняется всё, но не на одном и том же листе одного и того же файла и т.д. Что-то лениво копаться-разбираться.
А говорил...
Quote (Alex_ST)
Вот из этого сразу возникает множество сопутствующих вопросов типа где сохранять, под каким именем сохранять, как избежать дублирования записей если сохраняется всё, но не на одном и том же листе одного и того же файла и т.д. Что-то лениво копаться-разбираться.
Э, нет, Серёга! Если ты посмотришь код макроса Extract_History_LOG или просто запустишь его, то увидишь, что макрос просто копирует лист "Журнал" в новую книгу. А уж куда сохранять эту книгу и под каким именем решает пользователь
Э, нет, Серёга! Если ты посмотришь код макроса Extract_History_LOG или просто запустишь его, то увидишь, что макрос просто копирует лист "Журнал" в новую книгу. А уж куда сохранять эту книгу и под каким именем решает пользователь Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Вторник, 12.07.2011, 09:05
Alex_ST, нет) наоборот) в смысле - именно полезность. просто такого слова вроде нет, вот я его в кавычки и взяла) а еще у меня несколько вопросов: я так понимаю, что в разных версиях файлов "History.LOG.xls", ..., "5509774.xls" - Вы немного видоизменяли код. в первом файле - я могу его посмотреть, в остальных - выдает ошибку что-то типа "код непросматриваемый ошибка такая-то" я попробовала скопировать тот макрос, который видно, в свой файл, но в нем почему-то не появляется журнал(((( я не могу понять, что я не так делаю. то ли там какая-то особенность, то ли я просто-напросто не понимаю как правильно это делать.
Alex_ST, нет) наоборот) в смысле - именно полезность. просто такого слова вроде нет, вот я его в кавычки и взяла) а еще у меня несколько вопросов: я так понимаю, что в разных версиях файлов "History.LOG.xls", ..., "5509774.xls" - Вы немного видоизменяли код. в первом файле - я могу его посмотреть, в остальных - выдает ошибку что-то типа "код непросматриваемый ошибка такая-то" я попробовала скопировать тот макрос, который видно, в свой файл, но в нем почему-то не появляется журнал(((( я не могу понять, что я не так делаю. то ли там какая-то особенность, то ли я просто-напросто не понимаю как правильно это делать.k0tya
Есть женщины, с которыми хорошо,но без них еще лучше. А есть женщины, с которыми плохо, но без них еще хуже .
k0tya, вы, наверное, не загрузили к себе на комп, а напрямую из форума открыли файл 5509774.xls и он открылся "Только для чтения". А в таком режиме может глючить. Хотя, я сейчас проверил: открывается VBA и в открытом для чтения файле, и в сохранённом (естественно) А если он начинает ругаться после включения записи лога, так это естественно - в режиме общего доступа VBA-проект посмотреть нельзя. А чтобы режим общего доступа отключить нужно ввести пароль. Я же писал:
Quote (Alex_ST)
1. Используется возможность Excel вести журнал изменений в файлах общего доступа. С целью не дать пользователю отключить общий доступ макрос устанавливает пароль на отключение (пароль задаётся в декларациях модуля Const sShPass$ = "qwerty" ).
k0tya, вы, наверное, не загрузили к себе на комп, а напрямую из форума открыли файл 5509774.xls и он открылся "Только для чтения". А в таком режиме может глючить. Хотя, я сейчас проверил: открывается VBA и в открытом для чтения файле, и в сохранённом (естественно) А если он начинает ругаться после включения записи лога, так это естественно - в режиме общего доступа VBA-проект посмотреть нельзя. А чтобы режим общего доступа отключить нужно ввести пароль. Я же писал:
Quote (Alex_ST)
1. Используется возможность Excel вести журнал изменений в файлах общего доступа. С целью не дать пользователю отключить общий доступ макрос устанавливает пароль на отключение (пароль задаётся в декларациях модуля Const sShPass$ = "qwerty" ).
Вообще-то в процедуре на генерируемом по запросу листе Журнал отображаются ВСЕ СОХРАНЁННЫЕ изменения в книге, начиная с момента предоставления общего доступа. И пока ВЫ общий доступ не отключите, Журнал будет вестись. При отключении общего доступа эта таблица данных просто стирается. В постоянной записи изменений в таблицу журнала изменений скорее всего и таится причина "ожирения" файлов, лежащих долго в общем доступе. И именно поэтому типичным рекомендуемым методом "фитнеса" для таких распухших файлов является снятие и последующая установка режима общего доступа.
Вообще-то в процедуре на генерируемом по запросу листе Журнал отображаются ВСЕ СОХРАНЁННЫЕ изменения в книге, начиная с момента предоставления общего доступа. И пока ВЫ общий доступ не отключите, Журнал будет вестись. При отключении общего доступа эта таблица данных просто стирается. В постоянной записи изменений в таблицу журнала изменений скорее всего и таится причина "ожирения" файлов, лежащих долго в общем доступе. И именно поэтому типичным рекомендуемым методом "фитнеса" для таких распухших файлов является снятие и последующая установка режима общего доступа.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Пятница, 17.04.2015, 21:01
Спасибо. С Журналом все понятно, но неудобно. Вопрос: нельзя ли сделать так, чтобы изменения записывались в "примечание" к каждой ячейке, и предыдущие не удалялись после внесения последующих? Возможно ли сделать журнал без предоставления общего доступа?
Спасибо. С Журналом все понятно, но неудобно. Вопрос: нельзя ли сделать так, чтобы изменения записывались в "примечание" к каждой ячейке, и предыдущие не удалялись после внесения последующих? Возможно ли сделать журнал без предоставления общего доступа?Korax
Korax, Вы по ссылке в 1 посте на решение, предлагавшееся The_Prist смотрели? В том варианте на скрытом листе может храниться ВСЯ история, но ещё более не удобно из-за отсутствия возможности отмены пользователем действий. А вариант с примечаниями вообще рассмотрению не подлежит, т.к. каждое примечание - это графический объект на листе. Создание/редактирование их - это уже тормоза, а уж файл разжиреет из-за их большого количества со страшной силой. Да и толку от них будет мало, т.к. при их числе на листе, исчисляющемся уже несколькими десятками, лист будет выглядеть как прострелянная из дробовика рубашка в клеточку - вся в кровавую дурочку. И найти в них что нибудь будет практически не возможно, а уж определить последовательность изменений разных ячеек не возможно даже теоретически. Но вообще всё это здесь, в Готовых решениях, - оффтоп, т.к. в Вашем варианте к предлагаемому мною решению отношения не имеет. Создайте свой топик с просьбой помочь решить и предложением о том, как это должно на Ваш взгляд работать/выглядеть. Может быть кто-то и возьмётся.
Korax, Вы по ссылке в 1 посте на решение, предлагавшееся The_Prist смотрели? В том варианте на скрытом листе может храниться ВСЯ история, но ещё более не удобно из-за отсутствия возможности отмены пользователем действий. А вариант с примечаниями вообще рассмотрению не подлежит, т.к. каждое примечание - это графический объект на листе. Создание/редактирование их - это уже тормоза, а уж файл разжиреет из-за их большого количества со страшной силой. Да и толку от них будет мало, т.к. при их числе на листе, исчисляющемся уже несколькими десятками, лист будет выглядеть как прострелянная из дробовика рубашка в клеточку - вся в кровавую дурочку. И найти в них что нибудь будет практически не возможно, а уж определить последовательность изменений разных ячеек не возможно даже теоретически. Но вообще всё это здесь, в Готовых решениях, - оффтоп, т.к. в Вашем варианте к предлагаемому мною решению отношения не имеет. Создайте свой топик с просьбой помочь решить и предложением о том, как это должно на Ваш взгляд работать/выглядеть. Может быть кто-то и возьмётся.Alex_ST