|
1 / 1 / 0
Регистрация: 08.05.2011
Сообщений: 40
|
|
Как назначить макрос ПОСЛЕ печати?08.05.2011, 15:19. Показов 5359. Ответов 5
Метки нет (Все метки)
У Workbooks есть событие BeforePrint, в него можно записать макрос, выполняемый ПЕРЕД печатью. Каким образом назначить какой-либо макрос, чтобы он выполнялся ПОСЛЕ печати?
PS. Поиск по 'печать' и 'print' нужных результатов не даёт.
0
|
|
| 08.05.2011, 15:19 | |
|
Ответы с готовыми решениями:
5
Макрос смены нумерации после печати Как назначить макрос кнопке из VBA? Как назначить макрос кнопки на панели для быстрого вызова |
|
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
|
|
| 09.05.2011, 11:07 | |
|
Помогаю со студенческими работами здесь
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.
Номеклатура. . .
|