Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 08.05.2011
Сообщений: 40

Как назначить макрос ПОСЛЕ печати?

08.05.2011, 15:19. Показов 5359. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У Workbooks есть событие BeforePrint, в него можно записать макрос, выполняемый ПЕРЕД печатью. Каким образом назначить какой-либо макрос, чтобы он выполнялся ПОСЛЕ печати?
PS. Поиск по 'печать' и 'print' нужных результатов не даёт.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.05.2011, 15:19
Ответы с готовыми решениями:

Макрос смены нумерации после печати
Уважаемые форумчане есть проблема: в таблице требуется поменять номерацию после отправки на печать... на листе 2 вида, в верхних таблицах...

Как назначить макрос кнопке из VBA?
собственно следующая проблема: в из процедуры VBA в книгу Excel добавляются новые листы с заранее известными названиями. на каждый из этих...

Как назначить макрос кнопки на панели для быстрого вызова
Назначение макросу кнопки на панели для быстрого вызова на примере в MS Word.

5
2 / 2 / 1
Регистрация: 10.04.2011
Сообщений: 415
08.05.2011, 16:31
А зачем? Пиши прямо в событие BeforePrint - все равно ты не отследишь момент, когда документ будет напечатан.
0
1 / 1 / 0
Регистрация: 08.05.2011
Сообщений: 40
08.05.2011, 17:26  [ТС]
По поводу 'зачем'.

Причина 1:
На листе среди данных в ячейках есть и такие (напр., в 'G3'), которые не надо выводить на печать. В Workbook_BeforePrint можно внести
Range('G3').Font.ColorIndex = 2 (цвет шрифта - белый и при печати не виден)
Однако после печати необходимо вид шрифта вернуть в нормальный. (Range('G3').Font.ColorIndex = xlAutomatic).
И таких ячеек может быть много.

Причина 2:
Печатаем в основном из Word и Excel. Но иногда нужно распечатать что-либо из некоей DOS-программы. Принтер нерусифицирован и поэтому перед печатью из этой программы запускам специальный bat-файл (загрузка шрифтов в принтер). Однако если напечатать что-либо из Word (Excel), то при печати из DOS-программы опять печатаются всякие непонятные символы и надо вновь запускать спец. bat-файл.
Поэтому хотелось бы сразу после выполнения печати выполнить, напр. Shell('c:спец.bat')

Если Причину 1 можно обойти иначе, чем через 'макрос после печати' - то хорошо.
По Причине 2 не надо предлагать поменять принтер или DOS-программу.
0
2 / 2 / 1
Регистрация: 10.04.2011
Сообщений: 415
08.05.2011, 17:51
Убедил :-)
Итак, могу предложить следующий вариант решения задачи (учитывая, что печать может вызвать и пользователь:
1. Определить в этом же модуле (для простоты) процедуру:
sub AfterPrint
'твой код
end sub

2. Установить в процедуре BeforePrint обработчик события:
Application.OnTime Now + TimeValue('00:00:03'), 'AfterPrint'
Это вызовет переход к твоей AfterPrint через 3 секунды. Если мало - добавь, а вообще - почитай про метод OnTime - там много вариантов использования
0
Messir
08.05.2011, 23:53
А как бы работал вариант, когда документ отправлен на фоновую печать, и Ексель тут же закрыт, если б ввели событие AfterPrint?
Да и с временем печати - ненадежное дело.
Если уж браться за дело серьезно, то без API тут не обойтись. Надо периодически опрашивать список документов в очереди печати, и когда нужный пропадет, выполнить свой код.
2 / 2 / 1
Регистрация: 10.04.2011
Сообщений: 415
09.05.2011, 11:07
Резюмируя вышесказанное, могу сказать:
1. в микрософт не дураки, специально не вводили событие AfterPrint - нюансов действительно много. Я лично никогда не сталкивался с необходимостью чего-то менять на листе только на время печати - для этого есть файл/область печати/задать и скрытие строк. Вообще, такое ощущение, что принцип WYSIWYG (что видишь, то и получишь при печати) придуман зря. Что же касается программы под DOS, требующей постоянной загрузки шрифтов, я бы с моим знанием ассемблера просто написал драйвер, которые перехватывает на уровне DOS отправку данных в LPT1 и вставляет перед ним загрузку шрифтов. Наверняка не ты первый столкнулся с такой проблемой - поищи в инете, уверен, такая прога где-нибудь тебя ждет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.05.2011, 11:07
Помогаю со студенческими работами здесь

Как назначить клавишу на макрос?
Здравствуйте! Скажите, пожалуйста, как назначить в Powerpoint 2013 сочетание клавиш на макрос? Через интерфейс Powerpoint, я так...

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

Как удалить TR после печати
В цикле добавляю строчки перед печатью после tr id='amountTR' $('#amountTR').after('<tr><td class="noBorder"></td><td...

Создать и назначить макрос для кнопки, чтобы при ее нажатии в ячейке отражалась сумма значений по столбцу
Здравствуйте. Помогите пжлст с этой задачей. Создать и назначить макрос для кнопки, чтобы при ее нажатии в ячейке C24 отражалась сумма...

Поправить макрос печати
День добрый. Имеется рабочий макрос. Печатает данные из первого листа, на бланке второго листа. Но не могу додуматься, как сделать печать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru