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

Макрос на событие отправки на печать

28.12.2015, 12:34. Показов 4943. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
нужно сделать так, чтобы макрос срабатывал при возникновении события на печать в word. Без всяких кнопок, чтобы код выполнился и произошла печать.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2015, 12:34
Ответы с готовыми решениями:

Макрос отправки на печать на "Microsoft Print to PDF"
Всем доброго времени суток. У меня есть код, который сохраняет открытую книгу в pdf-файл. В...

Событие отправки HTTP запроса
Здравствуйте как можно отследить отправку любого HTTP запроса? Те что во вкладке network Т.е...

Создал макрос отправки объекта бд
добрый день создал макрос отправки объекта бд все сформировал , почтовый клиент на компе...

Макрос отправки ячеек из листа
Всем привет! Возможно ли написать такой макрос, который будет отправлять содержимое ячеек A1:L8...

6
Заблокирован
28.12.2015, 12:56 2
Цитата Сообщение от F1
DocumentBeforePrint Event
SpecificsOccurs before any open document is printed.

Visual Basic
1
Private Sub object_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
object An object of type Application declared with events in a class module. For more information about using events with the Application object, see Using Events with the Application Object.

Doc The document that's being printed.

Cancel False when the event occurs. If the event procedure sets this argument to True, the document isn't printed when the procedure is finished.

Example
This example prompts the user for a yes or no response before printing any document. This code must be placed in a class module, and an instance of the class must be correctly initialized in order to see this example work; see Using Events with the Application Object for directions on how to accomplish this.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public WithEvents appWord as Word.Application
 
Private Sub appWord_DocumentBeforePrint _
        (ByVal Doc As Document, _
        Cancel As Boolean)
 
    Dim intResponse As Integer
 
    intResponse = MsgBox("Have you checked the " _
        & "printer for letterhead?", _
        vbYesNo)
 
    If intResponse = vbNo Then Cancel = True
End Sub
...
Цитата Сообщение от F1
Using Events with the Application Object
SpecificsTo create an event handler for an event of the Application object, you need to complete the following three steps:

Declare an object variable in a class module to respond to the events.
Write the specific event procedures.
Initialize the declared object from another module.
Declare the Object Variable
Before you can write procedures for the events of the Application object, you must create a new class module and declare an object of type Application with events. For example, assume that a new class module is created and called EventClassModule. The new class module contains the following code.

Visual Basic
1
Public WithEvents App As Word.Application
Write the Event Procedures
After the new object has been declared with events, it appears in the Object drop-down list box in the class module, and you can write event procedures for the new object. (When you select the new object in the Object box, the valid events for that object are listed in the Procedure drop-down list box.) Select an event from the Procedure drop-down list box; an empty procedure is added to the class module.

Visual Basic
1
2
3
Private Sub App_DocumentChange()
 
End Sub
Initialize the Declared Object
Before the procedure will run, you must connect the declared object in the class module (App in this example) with the Application object. You can do this with the following code from any module.

Visual Basic
1
2
3
4
Dim X As New EventClassModule
Sub Register_Event_Handler()
    Set X.App = Word.Application
End Sub
Run the Register_Event_Handler procedure. After the procedure is run, the App object in the class module points to the Microsoft Word Application object, and the event procedures in the class module will run when the events occur.
0
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
28.12.2015, 13:04 3
Лучший ответ Сообщение было отмечено mockingbirdnew как решение

Решение

mockingbirdnew, можно без дополнительного класса. В модуль ThisDocument (это тоже модуль класса)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Dim WithEvents app As Application
 
Private Sub app_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
  If MsgBox("Печать документа " & Doc.Name, vbYesNo) = vbNo Then
    MsgBox "Печать отменена"
    Cancel = True
  End If
End Sub
 
Private Sub Document_Open()
  Set app = Application
End Sub
Запустите Document_Open() прямо из VBE и пробуйте печатать.
1
0 / 0 / 0
Регистрация: 15.05.2015
Сообщений: 10
28.12.2015, 13:39  [ТС] 4
то есть сам код нужно ставить в процедуру Private Sub app_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)?
а
Цитата Сообщение от Казанский Посмотреть сообщение
Document_Open()
что должен делать?
0
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
28.12.2015, 14:20 5
Цитата Сообщение от mockingbirdnew Посмотреть сообщение
то есть сам код нужно ставить в процедуру Private Sub app_DocumentBeforePrint
Да. Кстати, это обработчик события уровня приложения, он будет вызываться перед печатью любого открытого документа, а не только этого. Если Вы хотите отслеживать печать только этого документа, надо поставить проверку
Visual Basic
1
If Doc Is Me Then 'этот документ
Цитата Сообщение от mockingbirdnew Посмотреть сообщение
а Document_Open() что должен делать?
Эта процедура устанавливает связь между переменной app и фактическим приложением. Процедура автоматически вызывается при открытии этого документа. Если Вы что-то меняете в проекте VBA и происходит перекомпиляция, то связь теряется, и нужно снова запустить эту процедуру. Или закрыть-открыть документ, что ИМХО сложнее.
0
0 / 0 / 0
Регистрация: 15.05.2015
Сообщений: 10
28.12.2015, 14:47  [ТС] 6
фактически мой макрос и все остально должно быть в модуле ThisDocument?
0
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
28.12.2015, 15:38 7
mockingbirdnew, нет, ваш макрос может быть в обычном модуле. Вызывайте его из app_DocumentBeforePrint
0
28.12.2015, 15:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2015, 15:38
Помогаю со студенческими работами здесь

Подправить макрос отправки задач из Excel в Outlook
Доброго времени суток! Во вложении файл с примером отправки задач в Outlook из Excel. После...

Макрос в Word для отправки в блог на Wordpress
Здравствуйте Необходим макрос для Word , который будет копировать определенное количество текста...

Макрос для отправки писем через outlook
Необходимо создать макрос для отправки писем через outlook листа 3, с ориентацией по названию фирмы...

Как отловить событие отправки/получения в outlook 2003?
Нужно перед тем как outlook начнет очередной сеанс обмена почтой выполнить определенный vbs скрипт....


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru