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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2018, 10:20   #1
Mister_Buster
 
Регистрация: 09.02.2018
Сообщений: 4
По умолчанию Пересчет формулы после сохранения

Дано: в одну из ячеек вставляется часть имени файла
Пользователь выполняет однотипные действия:
1. Файл редактируется
2. Файл печатается
3. Файл сохраняется под другим именем
4. Переход к п. 1

Проблема 1: если последовательность действий нарушается: 1,3,2, то новый документ печатается со старым именем, т.к. после сохранения формулы не пересчитываются.
Проблема 2: если открыть еще один документ, на печать попадет ЕГО ИМЯ.
Вариант "пофиксить пользователя" прошу не предлагать Сохранение перед печатью - вполне естественное желание.
Код:
ПСТР(ЯЧЕЙКА("имяфайла");ПОИСК("[";ЯЧЕЙКА("имяфайла"))+25;ПОИСК("]";ЯЧЕЙКА("имяфайла"))-ПОИСК("[";ЯЧЕЙКА("имяфайла"))-29)

Последний раз редактировалось Mister_Buster; 09.02.2018 в 10:36.
Mister_Buster вне форума Ответить с цитированием
Старый 09.02.2018, 13:24   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

в модуль ЭтаКнига положите этот макрос:
Код:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
  Me.Save
End Sub
если в файле не предусмотрена поддержка макросов, пересохраните его в режиме с поддержкой макросов
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 09.02.2018, 15:18   #3
Mister_Buster
 
Регистрация: 09.02.2018
Сообщений: 4
По умолчанию

Ничего не изменилось. Что я делаю не так?
Sub sv() / End Sub пробовал удалять, не помогает.
Принудительный запуск макроса приводит к ошибке "Expected End sub"
Mister_Buster вне форума Ответить с цитированием
Старый 09.02.2018, 15:36   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

удалите строки:
Sub sv()
End Sub
(их не было в моем макросе)

для приведенного ранее макроса не нужна кнопка запуска
макрос будет срабатывать самостоятельно перед каждой процедурой распечтки. если пользователь провтыкал сначала сохранить, потом печатать, то макрос просто сохраняет файл каждый раз, прежде чем что-то распечатать (это утверждение справедливо для файла с выше приведенным макросом размещенным в выше указанном модуле и при разрешенных макросах в Excel)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 09.02.2018, 15:54   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Игорь, и ещё позвольте мне обратить внимание ТС, что он не туда вставляет код.

нужно:
vba1.png
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.02.2018, 10:44   #6
Mister_Buster
 
Регистрация: 09.02.2018
Сообщений: 4
По умолчанию

Исправил, все равно не работает... И можно вместо сохранения функцию "пересчитать формулы"?
Спасибо.
Изображения
Тип файла: jpg 1.jpg (55.5 Кб, 128 просмотров)
Mister_Buster вне форума Ответить с цитированием
Старый 13.02.2018, 10:53   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

так формулы перед печатью и так пересчитываются. если я не ошибаюсь.

но, если надо (отсюда):

Все открытые книги
Код:
Application.Calculate

Пересчитать на активном листе
Код:
ActiveSheet.Calculate

там есть и другие варианты...

Последний раз редактировалось Serge_Bliznykov; 13.02.2018 в 10:58.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.02.2018, 11:07   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Mister_Buster Посмотреть сообщение
т.к. после сохранения формулы не пересчитываются.
а что у Вас в Параметрах Excel - раздел "Формулы" ?
если выбран ручной режим вычислений, стоит опция "Пересчитывать книгу перед сохранением" ?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.02.2018, 13:41   #9
Mister_Buster
 
Регистрация: 09.02.2018
Сообщений: 4
По умолчанию

Спасибо за помощь.
Коли не заработало, ограничусь заменой кнопки "Печать" на вызов макроса с командами "Пересчет формул" и "Печать".
Mister_Buster вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пересчет итогов по столбцам после удаления строки. irina181 Microsoft Office Excel 11 12.10.2017 17:22
Повторное открытие книги после сохранения ЕвгенийА86 Microsoft Office Excel 10 05.08.2014 15:24
восстановление после сохранения weeK Microsoft Office Excel 7 26.08.2010 13:51
Сохранения файла после передачи albatros Работа с сетью в Delphi 2 26.12.2008 21:07
Макрос сохранения после печати lala_white Microsoft Office Word 2 10.08.2008 12:50