Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщений [ 13 ]
- Зарегистрирован: 26.04.2010
- Сообщений: 8
Тема: макрос для постраничной печати в WORD
Добрый день!
Есть макрос для печати
Sub a_Printing()
Selection.EndKey Unit:=wdStory
pn = Selection.Information(wdActiveEndPageNumber)
For i = 1 To pn
x = ("" & i & "")
a = i Mod 2
If a <> 0 Then y = MsgBox("Печать страницы " & i & " из " & pn & vbCrLf & "Вставьте лист" & vbCrLf & vbCrLf & "Продолжить?", 35, "Печать документа")
If a = 0 Then y = MsgBox("Печать страницы " & i & " из " & pn & vbCrLf & "Переверните страницу" & vbCrLf & vbCrLf & "Продолжить?", 35, "Печать документа")
Select Case y
Case 6 '''' Да
Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
wdPrintDocumentContent, Copies:=1, Pages:=x, PageType:=wdPrintAllPages, _
ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _
False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
PrintZoomPaperHeight:=0
Dialogs(wdDialogFilePrint).Show
Case 7 '''' Нет
Case 2 ' Отмена
End
End Select
Next
End Sub
Строку Dialogs(wdDialogFilePrint).Show применяю для запуска печати страницы( без применения идет считывание заданий в пам'ять принтера)
Нужно сделать то же самое, но следующим образом: диалог(MgBox) – ответ(да, нет, отмена) – выполнение(печать указанной страницы-одной страницы !!!) – снова диалог( в цикле), но все это без вызова окна диалога параметров печати.
Отредактировано admin (18.10.2010 17:31:12)
- Вождь
- Модератор
- Неактивен
- Зарегистрирован: 07.01.2010
- Сообщений: 745
- Поблагодарили: 181
Re: макрос для постраничной печати в WORD
Советую вместо Show попробовать:
Application.Dialogs(wdDialogFilePrint).Execute
Параметры также можно ввести в диалог не открывая его.
Свойства диалога wdDialogFilePrint:
Background, AppendPrFile, Range, PrToFileName, From, To, Type, NumCopies, Pages, Order, PrintToFile, Collate, FileName, Printer, OutputPrinter, DuplexPrint, PrintZoomColumn, PrintZoomRow, PrintZoomPaperWidth, PrintZoomPaperHeight, ZoomPaper.
Отредактировано Вождь (19.10.2010 06:35:17)
Макросы под заказ и готовый пакет - mtdmacro.ru
- Вождь
- Модератор
- Неактивен
- Зарегистрирован: 07.01.2010
- Сообщений: 745
- Поблагодарили: 181
Re: макрос для постраничной печати в WORD
По поводу PrintOut. Для печати текущей страницы есть команда:
ActiveDocument.PrintOut Range:=wdPrintCurrentPage
Макросы под заказ и готовый пакет - mtdmacro.ru
- Зарегистрирован: 26.04.2010
- Сообщений: 8
Re: макрос для постраничной печати в WORD
Команда: Application.Dialogs(wdDialogFilePrint).Execute выполняет печать всего документа, а нужно постранично(т.е. нужно отправить на печать страницу-“х”(не текущую), открывается MsgBox, выбирается действие, повторяется цикл).
Для выполнения этого в диалоге настройки печати выбирается “отмена” – вот эту команду и нужно автоматизировать.
- Вождь
- Модератор
- Неактивен
- Зарегистрирован: 07.01.2010
- Сообщений: 745
- Поблагодарили: 181
Re: макрос для постраничной печати в WORD
div85 пишет:...Execute выполняет печать всего документа...
Нет. Эта команда соответствует нажатию кнопки "ОК" в диалоге печати, а что и как печатать задается параметрами (см. выше).
Пример печати со 2-ой по 3-ю страницы:
With Application.Dialogs(wdDialogFilePrint)
.Pages = "2-3"
.Execute
End With
То же, но с помощью PrintOut:
ActiveDocument.PrintOut Pages:="2-3"
Макросы под заказ и готовый пакет - mtdmacro.ru
- Зарегистрирован: 26.04.2010
- Сообщений: 8
Re: макрос для постраничной печати в WORD
Можно и так: Application.PrintOut Range:=wdPrintFromTo, From:=2, To:=3
Но вопрос не в этом. В приведенном мною макросе нужно убрать появление диалога печати, либо программно нажать в этом диалоге “отмена”.
Повторюсь: открытие диалога печати вызвано тем, что нужно печатать по ОДНОЙ!!! странице, разделяя процесс печати выбором действия в MsgBox
( без диалога печати – выбранные в MsgBox страницы считываются в память в цикле и печатаются все вместе подряд)
- Вождь
- Модератор
- Неактивен
- Зарегистрирован: 07.01.2010
- Сообщений: 745
- Поблагодарили: 181
Re: макрос для постраничной печати в WORD
div85 пишет:...нужно печатать по ОДНОЙ!!! странице...
По-моему получится то, что надо, если заменить в Вашем коде PrintOut и Show на:
With Application.Dialogs(wdDialogFilePrint)
.Pages = CStr(i)
.Execute
End With
или на:
ActiveDocument.PrintOut Pages:=CStr(i)
Это что не работает?
Отредактировано Вождь (19.10.2010 12:48:23)
Макросы под заказ и готовый пакет - mtdmacro.ru
- Зарегистрирован: 26.04.2010
- Сообщений: 8
Re: макрос для постраничной печати в WORD
.Execute - выполнить. Печатается весь документ. Параметры печати не вводятся.
Если можно, скопируйте мой код и выполните( в документе для проверки по 1 слову на страницу) Сразу все будет видно. Попробуйте подредактировать для получения нужного эффекта.
- Вождь
- Модератор
- Неактивен
- Зарегистрирован: 07.01.2010
- Сообщений: 745
- Поблагодарили: 181
Re: макрос для постраничной печати в WORD
Да, я неполный код привел. В обоих случаях надо указать, откуда брать параметры (Range) и признак немедленной печати (Background).
Полный рабочий код в двух вариантах:
Dim PN&, i&, Y&
Dim S$
Selection.EndKey Unit:=wdStory
PN = Selection.Information(wdActiveEndPageNumber)
For i = 1 To PN
If (i Mod 2) <> 0 Then
S = "Вставьте лист"
Else
S = "Переверните страницу"
End If
S = "Печать страницы " & i & " из " & PN & vbLf & _
S & vbLf & vbLf & _
"Продолжить?"
Y = MsgBox(Prompt:=S, _
Buttons:=vbYesNoCancel + vbQuestion, _
Title:="Печать документа")
Select Case Y
Case vbYes ' 6 - Да
'ActiveDocument.PrintOut _
Background:=False, _
Range:=wdPrintRangeOfPages, _
Pages:=CStr(i)
With Application.Dialogs(wdDialogFilePrint)
.Background = False
.Range = wdPrintRangeOfPages ' 4
.Pages = CStr(i)
.Execute
End With
'Case vbNo ' 7 - Нет
Case vbCancel ' 2 - Отмена
End
End Select
Next i
Макросы под заказ и готовый пакет - mtdmacro.ru
- Зарегистрирован: 26.04.2010
- Сообщений: 8
Re: макрос для постраничной печати в WORD
Спасибо! Все работает. Насчет (Range) все понятно, а (Background) я не доглядел, что у меня - True
- Вождь
- Модератор
- Неактивен
- Зарегистрирован: 07.01.2010
- Сообщений: 745
- Поблагодарили: 181
Re: макрос для постраничной печати в WORD
Если уж оптимизировать код, то у Вас ошибка - неверное чередование сообщений "Вставьте лист" и "Переверните страницу". Правильно так:
Dim PN&, i&, Y&
Dim S$
Dim P2 As Boolean
Selection.EndKey Unit:=wdStory
PN = Selection.Information(wdActiveEndPageNumber)
P2 = False ' признак обратной стороны листа
For i = 1 To PN
If P2 Then
S = "Переверните страницу"
Else
S = "Вставьте лист"
End If
S = "Печать страницы " & i & " из " & PN & vbLf & vbLf & _
S & vbLf & vbLf & _
"Продолжить?"
Y = MsgBox(Prompt:=S, _
Buttons:=vbYesNoCancel + vbQuestion, _
Title:="Печать документа")
Select Case Y
Case vbYes ' 6 - Да
'ActiveDocument.PrintOut _
Background:=False, _
Range:=wdPrintRangeOfPages, _
Pages:=CStr(i)
With Application.Dialogs(wdDialogFilePrint)
.Background = False
.Range = wdPrintRangeOfPages ' 4
.Pages = CStr(i)
.Execute
End With
P2 = Not P2
'Case vbNo ' 7 - Нет
Case vbCancel ' 2 - Отмена
End
End Select
Next i
Макросы под заказ и готовый пакет - mtdmacro.ru
- Зарегистрирован: 26.04.2010
- Сообщений: 8
Re: макрос для постраничной печати в WORD
Необходимость сообщения "Вставьте лист" и "Переверните страницу" субъективна.
В любом случае в последнем коде для правильной работы "P2 = Not P2" нужно вынести за пределы Select (в противном случае при печати к примеру со 2-й страницы и соответственно выборе в первом диалоге "нет" чередование сообщений становится неверным)
- Вождь
- Модератор
- Неактивен
- Зарегистрирован: 07.01.2010
- Сообщений: 745
- Поблагодарили: 181
Re: макрос для постраничной печати в WORD
Ну так идея не моя Я правил код, а не задумку.
Правильнее выводить отдельное сообщение "Переверните страницу" после печати нечетных, а в запрос на печать ввести текст "Лицевая сторона"/"Обратная сторона" и т.п.
Макросы под заказ и готовый пакет - mtdmacro.ru
Сообщений [ 13 ]
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
макрос для постраничной печати в WORD
Если ваша деятельность связана со значительными объемами текстов, то неплохо бы досконально изучить свою версию редактора (чаще всего этим редактором является Microsoft Word). Наш сайт о Microsoft Office Word даст ответ про: изменение точки на запятую в компьютере.
Сделать это можно, прочитав специальную литературу и пообщавшись, к примеру, с другими пользователями. На портале о Microsoft Office Word вы узнаете про: антоніми слова яскраво.
Многое вы почерпнете и на специализированном форуме сайта Ворд Эксперт.
Ответы на вопросы, как быстро и безболезненно отформатировать запущенный текст, разобраться с колонтитулами, написать в автоматическом режиме макрос и многое другое вы найдете на страничке нашего форума. Наш сайт о Microsoft Office Word даст ответ про: печать документа word 7 в виде брошюры.
Стили, таблицы, шрифты, заголовки. Готовые шаблоны и настройки программы для оптимальной работы. В разделе «Настройки и Форматирование» можно обсудить все существующие версии Ворда. На портале о Microsoft Office Word вы узнаете про: как работать с двумя документами в ворде.
Наверняка, есть функции, которые прошли мимо вас, какие-то операции можно оптимизировать. Например, предложено много способов поставить ударение в тексте, использовать функцию «Найти и Заменить» и многое другое. Наш сайт о Microsoft Office Word даст ответ про: примеры многоуровневых списков.
В разделе «Автоматизация» главное внимание уделено шаблонам, макросам и полям. Обсуждают там проблемы печати документов, гиперссылки, вставки и многое другое. Наш сайт о Microsoft Office Word даст ответ про: как добавить заголовок в табл. ексель.
В Ворде поддается автоматизации практически все.
На форуме есть раздел, где вы можете посмотреть готовые решения или поделиться своими, есть подфорум, для заказов. Наш сайт о Microsoft Office Word даст ответ про: как установить табуляцию 13,2.
В общем, весьма полезно будет и новичкам, и довольно продвинутым юзерам. Каждый найдет для себя небезынтересную информацию. На портале о Microsoft Office Word вы узнаете про: как удалить пустую страницу в ворде 2007.