Новости:

Подпишитесь на рассылку новых сообщений форума через службу рассылок: Subscribe.ru

Главное меню

Макрос по регистрации изменений

Автор Ingvar, 03.05.2011, 14:11

« назад - далее »

Ingvar

Добрый день.

возникла идея.
На сети в общем доступе есть файл.
Куда все по мере изменений вносять комментарии и изменения.
Так-во цель, добавив 3-4 столбца получить в них макросом следующую информацию :
1х при изменении ячейки или группы(возможно их можно задать) вносилось "изменено"
2х регистрировался логин виндовс и машина с которой произошло изменение
3х изменения не просто вошли в ред. на ячейку а изменение данных в ячейке. Т.е.
Если было "Привет" и зашли и оставили "Привет" это не изменение. А Если после редактирования стало "Превед!" то это изменение.
4х после выемки данных возможность сброса столбцов в ноль или ""

PS Данные в файл могут вноситься как вручнуют так и подтягиваться ВПР из других источников.

Есть идеи?


Andrey Lenets

журнал изменений лучше вести в отдельном текстовом файле!

Ingvar

Цитата: Andrey Lenets от 03.05.2011, 14:27
журнал изменений лучше вести в отдельном текстовом файле!
дело в том что из файла в сети нужно постоянно изымать информацию и обновлять внутренние аналитические базы.
Весь сегмент данных тянуть бесмысленно. А еще и опасно :) т.к. есть свои заморочки.
Таких файлов минимум 4 с кол-вом уникальных строк от 30 до 60 тыс.
На текущий момент их 6 :-) и вот следить и обзванивать людей отечественных за актуальность комментариев того или иного участка иногда уходит уйма времени.
А они могли ничего не менять, или изменить 1 строчку из 5000.
А как потом текстовый журнал подвязать к таблице?

Alex_ST

Посмотрите, как сделано ведение ЛОГ-файла произведенных изменений на листе LOG той же книги Excel. Там в комментариях есть ссылки на первоисточник.
Можно попробовать доработать под ваши "хотелки" по аналогии. У меня сейчас к сожалению сейчас нет на это времени...
Лист LOG можно просто скрыть от посторонних глаз (сделать его Hidden) или заныкать так, чтобы открыть его можно было только из VBE (сделать лист VeryHidden из-под VBE и фиг его увидишь, если не войдёшь в VBE).

А по поводу регистрации изменений, полученных из-за работы любой формулы, то это вообще вряд ли, т.к. события изменения не наступают.
С уважением, Алексей

Andrey Lenets

интересный пример) только зачем всё это? если можно воспользоваться встроенным в эксель журналом изменений!
в ОБЩЕЙ Книге - Исправления - Выделить Исправления - Вносить изменения на отдельный лист  :D

а результат изменений работы формулы всё же можно сделать!   8) если, например в момент открытия книги загонять значения всех ячеек с формулами в массив, а перед сохранением проверять изменение текущего значения ячейки!  ;)

Alex_ST

Андрей,
интересный вариант. Никогда не пробовал. Что-то с ходу не пошло...
Прошу разъяснений:
1. Файлу разрешаю общий доступ и говорю чтобы вёлся журнал изменений.(Файл, естественно, сохраняется).
2. Иду в ИСПРАВЛЕНИЯ - Выделить Исправления ставлю гульку "Вносить изменения на отдельный лист" .
Начинаю вносить изменения. Сохраняю и закрываю файл.
Открываю файл - никакого листа исправлений нет...
С уважением, Алексей

Alex_ST

#6
Упс...
Нашёл. Нужно было просто выбрать в комбобоксе "Все изменения" вместо "С момента последнего сохранения"
Только как бы сделать чтобы лист "Журнал" не удалялся при сохранении книги?

С уважением, Алексей

Andrey Lenets

Цитата: Alex_ST от 03.05.2011, 15:49
Упс...
Нашёл.
Только как бы сделать чтобы лист "Журнал" не удалялся при сохранении книги?
А зачем его тащить (сохранять)? журнал всегда можно сформировать за всё время существования книги, по любому пользователю, который вносил изменения, в любом диапазоне)) сохранять его нет смысла... но можно скопировать лист в отдельную книгу и сохранить.

Alex_ST

#8
С этим-то я разобрался.
Вот только как бы научиться формировать журнал изменений, не давая общий доступ к файлу?
И ведь фиг макрорекордером воспользуешься в общем доступе...  >:(
С уважением, Алексей

Andrey Lenets

Цитата: Alex_ST от 03.05.2011, 16:08
С этим-то я разобрался.
Вот только как бы научиться формировать журнал изменений, не давая общий доступ к файлу?
И ведь фиг макрорекордером не воспользуешься в общем доступе...  >:(
не понятно чем мешает общий доступ?
макрорекордер в общем доступе работает, только результат нужно сохранять в другой книге! да и все проекты VBA в книге будут доступны, только для внесения исправлений в код нужно будет отменять общий доступ, что приведет с очистке журнала...

Alex_ST

Спасибо за наводку на мысль.
Уже почти закончил писать набор макросов для управления записью\отображением журнала изменений. Но рабочий комп, гад, завесил напрочь Ёксель. А я не сохранялся. Всё пропало. Но путь понятен. Завтра допишу и выложу.
Плохо только что журнал включить можно только в режиме общего доступа, когда проект VBA недоступен. А как только режим общего доступа отменяешь - кирдык журналу.
Да и не люблю я этот режим - функционал Ёкселя в нём урезан. Да и некоторые мои макросы в нём глючат, т.к. используют временный лист...
С уважением, Алексей

Alex_ST

Вот, гляньте. Допилил макрос.
Создаваемый лист "Журнал" автоматически удаляется при сохранении файла или при отмене общего доступа.
Поэтому если он нужен, то его нужно сначала куда-то скопировать, а потом уже сохраняться.
С уважением, Алексей

Ingvar

Хм... интересный вариант, попробую так :) все равно будет проще ))) по крайне мере будет видно кому "бить по морде" если все данные исчезли ;) или получились критические изменения отчета и данных выложеных в сети :)))).
СПАСИБО :)

Ingvar

Вот только возникла проблема )))
Обнаружил фишку что некоторые пользователи знают про лог )))
А как избежать простой процедуры.
Пользователь входит в файл меняет что-то.
Потом выключает общий доступ. Сохраняет. Включает общий доступ сохраняет и выходит?

Как предотвратить преднамеренное удаление лога?

Andrey Lenets

в защищенной книге нужно знать пароль, чтобы отключить общий доступ и очистить журнал!  :P