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

Отслеживание событий в word

09.11.2011, 13:31. Показов 5324. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
имеется следующий код размещенный в модуле:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
    ActiveDocument.PrintPreview
    Dim Prosmotr
    If ActiveDocument.ClosePrintPreview = True Then       здесь редактор ругается
    Prosmotr = MsgBox("Нажми ДА для печати, ОТМЕНА для возврата к редактированию!", vbExclamation + vbOKCancel, "Проверти точность заполнения!!!")
        If Prosmotr = vbOK Then
        Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
        wdPrintDocumentContent, Copies:=2, Pages:="", PageType:=wdPrintAllPages, _
        ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _
        False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
        PrintZoomPaperHeight:=0
        Else: ActiveDocument.ClosePrintPreview
        End If
    End If
Цель: после редактирования документа нажимается пользовательская кнопка и выполняется вышеуказанный макрос. Выполнение макроса нужно приостановить до момента закрытия окна предварительного просмотра.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.11.2011, 13:31
Ответы с готовыми решениями:

Word: Отслеживание изменений в довументе
Добрый вечер! Существует ли процедура в документе Word, которая отслеживает изменения в документе (ввод текста, его удаление, вставка и...

Отслеживание открытого файла Word
Добрый день. Подскажите пожалуйста, как мне отследить, открыт ли сейчас объект Word? В начале идет запуск кода для открытия...

VBA Word: как запретить запись событий в стек отмены (Ctrl+Z) ?
Имеется макрос, выполняющий последовательно несколько сот операций. И чтобы отменить его действие, пользователь должен соответствующее...

9
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
09.11.2011, 13:49
А зачем этот If нужен? Приостановка происходит на MsgBox:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub bb()
Dim Prosmotr
ActiveDocument.PrintPreview
Prosmotr = MsgBox("Нажми ДА для печати, ОТМЕНА для возврата к редактированию!", vbExclamation + vbOKCancel, "Проверти точность заполнения!!!")
If Prosmotr = vbOK Then
    Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
        wdPrintDocumentContent, Copies:=2, Pages:="", PageType:=wdPrintAllPages, _
        ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _
        False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
        PrintZoomPaperHeight:=0
Else: ActiveDocument.ClosePrintPreview
End If
End Sub
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
09.11.2011, 13:52
Или так, без переменной:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub bb()
ActiveDocument.PrintPreview
Select Case MsgBox("Нажми ДА для печати, ОТМЕНА для возврата к редактированию!", vbExclamation + vbOKCancel, "Проверти точность заполнения!!!")
Case vbOK: Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
        wdPrintDocumentContent, Copies:=2, Pages:="", PageType:=wdPrintAllPages, _
        ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _
        False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
        PrintZoomPaperHeight:=0
Case Else: ActiveDocument.ClosePrintPreview
End Select
End Sub
0
0 / 0 / 0
Регистрация: 09.11.2011
Сообщений: 4
09.11.2011, 14:31  [ТС]
После редактирования документа нажимается пользовательская кнопка где выполняется вышеуказанный макрос
пошаговые действия после нажатия кнопки:
1) выполнение кода"ActiveDocument.PrintPreview" открытие окна предварительного просмотра и проверка правильности внесенных данных
2) и только после закрытия окна предварительного просмотра необходимо вызвать MsgBox и в случае ответа ОК отправить на печать. а в перспективе еще и вызвать диалоговое окно "сохранить как".
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
09.11.2011, 17:34
Нет такого события. Можно отслеживать Application.CommandBars("Print Preview").Visible
Когда оно станет False - окно превью закрыто.

Но Вы все-таки подумайте над вариантом с отображением MsgBox или формы поверх превью. Форму можно вывести сбоку, чтобы она не мешала просмотру документа. И юзеру не придется делать два клика - закрыть превью и ответить на вопрос.

Кстати, можно добавить свою кнопку на панель Print Preview.
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
09.11.2011, 17:38
Цитата Сообщение от Igorik Посмотреть сообщение
и в случае ответа ОК отправить на печать
то есть нужна печать, какие проблемы перед отсылкой на печать пусть проверяет, зачем предварительный просмотр нужен, он же хуже, много пересчитывает и т. д.
0
1302 / 404 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
09.11.2011, 18:40
Igorik,
может пользовательскую форму создать?
0
0 / 0 / 0
Регистрация: 09.11.2011
Сообщений: 4
10.11.2011, 09:53  [ТС]
Всем спасибо за отклики!
В VBA у меня опыт небольшой (как и в др. языках программирования) и преимущественно Excel.
В Excel подобный код работает (одним макросом предварительный просмотр и после закрытия просмотра продолжается выполнятся код MsgBox. По видимому в Excel окно предварительного просмотра модального типа). В Word выполняется весь код непрерывно.

Мысли в слух: "ммм... как вставлять цитаты собеседников".

Казанский: И юзеру не придется делать два клика - закрыть превью и ответить на вопрос.
если документ многостраничный как его пролистать когда выведено MsgBox.
"Application.CommandBars("Print Preview").Visible" - так далеко в познаниях VBA я еще не зашел, да и цель то простецкая автоматизировать рутинные действия.

Ципихович Эндрю: зачем предварительный просмотр нужен
для обновления кодов полей находящихся в колонтитулах да и документ предстает в цельном виде.

Busine2012: может пользовательскую форму создать?
Думаю создание формы только усложнит весь код.
У меня данные в Word поступают экспортом из др. программы, недостающие редактируются при помощи полей форм.

Вопрос с обновлением полей решен и от идеи вывода окна предварительного просмотра можно отказаться (программно документ ставится на защиту для редактирования полей форм и коды полей обновляются.

Сейчас вопрос в следующем: как программно вызвать диалоговое окно "сохранить как".
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
10.11.2011, 10:26
Цитата Сообщение от Igorik Посмотреть сообщение
вопрос в следующем: как программно вызвать диалоговое окно "сохранить как"
Так:
Visual Basic
1
application.Dialogs (wdDialogFileSaveAs ).Show
См. свойства и методы Dialog Object.
1
0 / 0 / 0
Регистрация: 09.11.2011
Сообщений: 4
10.11.2011, 11:16  [ТС]
Всем спасибо! Тему можно закрывать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.11.2011, 11:16
Помогаю со студенческими работами здесь

BX отслеживание событий инфоблока
Всем привет! У меня вот такой вопрос: умеет ли битриксовская библиотека BX отслеживать события класса CIBlockElement ? Есть вот...

Отслеживание событий клавиатуры
Добрый день. Пишу лабу по Qt. Мне необходимо, чтобы мои элементы управления (пусть для определенности будет одна кнопка) реагировали...

Глобальное отслеживание событий в С#
Здравствуйте! Подскажите можно ли в с# сделать какой-нибудь класса или какую-нибудь систему разработать, которая бы перехватывала любые...

Отслеживание событий между фреймами.
У меня такая проблема: Многофреймовый документ, мне нужно отслеживать из одного фрейма в другом события onkeyup для того, чтобы можно было...

Отслеживание событий вне окна
Как сделать чтобы можно было обрабатывать события когда мышь находится вне окна? У меня за пределами окна обрабатывается только события...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru