2009-09-03 3 views
4

У меня есть код, который перехватывает событие Before_Print в excel, чтобы убедиться, что пользователь заполнил все необходимые поля, прежде чем распечатать лист. Тем не менее, я хочу, чтобы этот код срабатывал, когда пользователь на самом деле печатает, а не когда он просто вызывает предварительный просмотр.Разница между событиями печати и печати в excel vba

Есть ли способ сообщить в коде Before_Print, действительно ли пользователь печатает или просто просматривает?

Код, который я в настоящее время является (окурок события генерируется первенствует):

Private Sub Workbook_BeforePrint(Cancel As Boolean) 
    If Not Sheet2.CheckAllFieldsFilled Then 
     Cancel = True 
    End If 
End Sub 

ответ

0

Я не думаю, что есть отличный способ, чтобы определить, если событие является предварительным просмотром печати или запрос на печать.

Решение ниже не особенно аккуратно и неудобно для пользователя, но оно работает.

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

Private Sub Workbook_BeforePrint(Cancel As Boolean) 

Dim Print_or_Preview As XlYesNoGuess 

Application.EnableEvents = False 

    Cancel = True 
    Print_or_Preview = MsgBox("Show Print Preview?", vbYesNo) 

    If Print_or_Preview = True Then 
     ActiveWindow.ActiveSheet.PrintPreview 
     Else 
     ActiveWindow.ActiveSheet.PrintOut 
    End If 
Application.EnableEvents = True 

End Sub 
0

Я думаю, что я предоставил бы очень заметную кнопку для пользователя, чтобы нажать, когда вы хотите распечатать предварительный просмотр.

сделать кнопку шкурку для печати (в настройках для кнопки), и есть код просто сказать:

ActiveWindow.ActiveSheet.PrintPreview 
0

Для печати вы могли бы сделать что-то вроде этого:

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True 

Для Предварительный просмотр печати, как было предложено:

ActiveWindow.ActiveSheet.PrintPreview 

Для каждого из них потребуется другая кнопка, но eit ее способ я бы настоятельно предложил проверить, действительно ли вам нужны оба варианта, потому что кнопка предварительного просмотра может работать для вашего варианта печати, тем более, что вы в большинстве случаев сможете печатать прямо из предварительного просмотра.

Возможно, я ошибаюсь, но я так не думаю.

Только один из них, вариант печати, который я разместил здесь, будет распечататься напрямую, он не будет запрашивать параметры, потому что они были закодированы в сценарий, если вы хотите изменить количество копий, которые вы хотите распечатать, измените copies:= на любой номер, который вы хотите ...

Наслаждайтесь :)

Смежные вопросы