Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

Проблема 1: если последовательность действий нарушается: 1,3,2, то новый документ печатается со старым именем, т.к. после сохранения формулы не пересчитываются.
Проблема 2: если открыть еще один документ, на печать попадет ЕГО ИМЯ.
Вариант "пофиксить пользователя" прошу не предлагать Сохранение перед печатью - вполне естественное желание.
Код:

ПСТР(ЯЧЕЙКА("имяфайла");ПОИСК("[";ЯЧЕЙКА("имяфайла"))+25;ПОИСК("]";ЯЧЕЙКА("имяфайла"))-ПОИСК("[";ЯЧЕЙКА("имяфайла"))-29)


Последний раз редактировалось Mister_Buster; 09.02.2018 в 11:36.
Mister_Buster вне форума   Ответить с цитированием
Старый 09.02.2018, 14:24   #2
IgorGO
МегаМодератор
СуперМодератор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Адрес: УКРАЇНА, Київ
Сообщений: 8,879
Репутация: 1587

icq: 7934250
skype: i2x0,5
По умолчанию

в модуль ЭтаКнига положите этот макрос:
Код:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
  Me.Save
End Sub

если в файле не предусмотрена поддержка макросов, пересохраните его в режиме с поддержкой макросов
__________________
41001804815208 - Яндекс-деньги благодарности за удачные советы и решения можно отправлять прямо сюда)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума   Ответить с цитированием
Старый 09.02.2018, 16:18   #3
Mister_Buster
 
Регистрация: 09.02.2018
Сообщений: 4
Репутация: 10
По умолчанию

Ничего не изменилось. Что я делаю не так?
Sub sv() / End Sub пробовал удалять, не помогает.
Принудительный запуск макроса приводит к ошибке "Expected End sub"
Mister_Buster вне форума   Ответить с цитированием
Старый 09.02.2018, 16:36   #4
IgorGO
МегаМодератор
СуперМодератор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Адрес: УКРАЇНА, Київ
Сообщений: 8,879
Репутация: 1587

icq: 7934250
skype: i2x0,5
По умолчанию

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

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

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

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

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

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

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

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

Application.Calculate


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

ActiveSheet.Calculate


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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пересчет итогов по столбцам после удаления строки. irina181 Microsoft Office Excel 11 12.10.2017 18: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 22:07
Макрос сохранения после печати lala_white Microsoft Office Word 2 10.08.2008 12:50


07:14.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru