Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2013, 12:59   #1
Konstantin_Z
Пользователь
 
Регистрация: 22.08.2008
Сообщений: 65
По умолчанию Макрос записать файл после каждого изменения

В некоторых случаях (например, когда комп глючит и может перестать работать/перезагрузиться в любой момент) есть смысл сохранять файл после каждого действия (под действием в данном случаеподразумевается изменение содержимого одной или более ячеек).
Скорее всего, эта задача уже не раз обсуждалась/решалась или здесь на форуме, или уважаемые форумчане видели ее решение/решали...
Если я прав, пожалуйста, кинте ссылочками!
Макрос под 2003 эксель, но если есть универсальный макрос, типа, под любую версию, то еще лучше.
Самый же предпочтительный вариант это надстройка, но которая бы позволяла активировать и дезактивировать сохранения после каждого действтия в зависимости от того нужно ли это
Konstantin_Z вне форума Ответить с цитированием
Старый 06.02.2013, 13:13   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Думаю такого макроса нет, ибо бестолково. Хотя конечно написать можно...
1. будет безбожно тормозить при активной работе.
2. будет сохранять то, что сохранять не следовало (например ошибки ввода)
3. сам код будет непростым, если действительно нужно сохранить каждый чих (например изменение заливки).

Не ленитесь нажимать на дискетку (знаете, что это такое? )
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 06.02.2013, 13:21   #3
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Konstantin_Z, нужно использовать события.
В вашем случае возможно использование двух событий Change и Calculate.

Событие Change срабатывает в следующих случаях:
  1. вы вносите изменения в ячейки вручную;
  2. данные в ячейках изменяются макросами.
Событие Calculate срабатывает в следующих случаях:
  1. в ячейках находятся формулы и происходят изменения в ячейках, с которыми формулы связаны;
  2. в ячейках находятся формулы и эти формулы связаны с базами данных (что-то в этом роде).

Примечание

События Change и Calculate не срабатывают, если изменяется форматирование ячеек (ширина ячеек, размер и цвет текста и др.).

Последний раз редактировалось Скрипт; 06.02.2013 в 14:54.
Скрипт вне форума Ответить с цитированием
Старый 06.02.2013, 14:19   #4
Konstantin_Z
Пользователь
 
Регистрация: 22.08.2008
Сообщений: 65
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Думаю ...
1 - знаю
2 - знаю и отдаю себе отчет
3 - устроит только отслеживание изменения содержимого ячейки (без форматирований, заливок, измений шири столбцов и прочего)

я про дискетку то ведаю, конечно! но мне немного удобнее давить на шифт ф12, но сами понимаете, что это муторно - постоянно жать сочетание клавишь сохранения файла )

сам же я, к сожалению, макросы пока не пишу, поэтому пришел за советом/помощью на форум (а ведь все планирую, вот думаю, надо начинать уже писать - надеюсь, что таки дойдут руки и начну в ближайшее время)
Konstantin_Z вне форума Ответить с цитированием
Старый 06.02.2013, 14:30   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну это просто - в модуле книги есть события, выбираем нужное в выпадающих списках, пишем одну строку:

Код:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
ThisWorkbook.Save
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 06.02.2013, 14:39   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Продвинутее - ставим чекбокс на первый лист, связываем с А1:

Код:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Worksheets("Sheet1").Range("A1") Then ThisWorkbook.Save
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 06.02.2013, 15:05   #7
Konstantin_Z
Пользователь
 
Регистрация: 22.08.2008
Сообщений: 65
По умолчанию

спасибо! буду пробовать! постараюсь отписаться о результатах!
Konstantin_Z вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для каждого столбца найти произведение элементов с номерами от k1 до k2 и записать данные в новый массив Nastassja.i C# (си шарп) 4 14.12.2011 16:49
Интернет отваливается после каждого выключения компьютера Yarigk Компьютерное железо 2 17.06.2011 16:53
Есть макрос. Надо в него добавить вывод на печать после каждого процесса. Ogeris Microsoft Office Excel 1 01.11.2010 07:55
Мозилка обнуляет все настройки после каждого включения Alex Cones Софт 5 18.08.2009 09:36
Записать текст лесенкой(по одному слову в строке),вставляя пустую строку после каждого четверостишья klindk Паскаль, Turbo Pascal, PascalABC.NET 2 27.11.2008 14:34