Запуск Sub Workbook_BeforePrint при печати только активного листа? - PullRequest
1 голос
/ 01 октября 2019

Я хочу печатать только по одному листу за раз (из-за большого количества данных, которые могли бы привести к 1000 страниц, если бы я печатал всю книгу), но я хочу, чтобы заголовок автоматически обновлялся перед печатью. Заголовок будет иметь формулу, которая ссылается на ячейки и вставляет значение этой ячейки. Тем не менее, Worksheet_BeforePrint, кажется, не вещь, и Workbook_BeforePrint не работает, если только печать активного листа.

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim rptdate As String

Dim ride As String
Dim sht As String
sht = ActiveSheet.Name
rptdate = Sheets("Inputs").Range("B3").Value
prov = Sheets("Inputs").Range("B4").Value
ride = Sheets("Inputs").Range("B5").Value
ActiveSheet.PageSetup.RightHeader = sht  & " Ride Name: " & ride & " First Report Date: " & rpdate

End Sub

Я хочу, чтобы в заголовке было что-то вроде: «Имя листа Имя поездки: поездка Дата первого отчета: rptdate» Предпочтительно в 3 строки, как указано выше. Приведенный выше код работает, если я хочу напечатать всю книгу целиком, но не тогда, когда я хочу распечатать только Активный лист.

1 Ответ

1 голос
/ 01 октября 2019

Я никогда раньше не печатал из VBA, но вы можете использовать метод PrintOut из объекта листа. Действуйте так, как будто вы печатаете рабочую книгу, чтобы вызвать событие Workbook_BeforePrint. Не волнуйтесь, вы отмените это задание на печать.

Private Sub Workbook_BeforePrint(Cancel As Boolean)

    Dim rptdate As String, ride As String, ws As Worksheet
    Set ws = ActiveSheet
    rptdate = Sheets("Inputs").Range("B3").Value
    ride = Sheets("Inputs").Range("B5").Value
    ws.PageSetup.RightHeader = ws.Name & " Ride Name: " & ride & " First Report Date: " & rpdate
    ws.PrintOut

    ' Cancel the entire workbook printjob - it's as simple as changing this boolean value
    Cancel = True

End Sub

Установка Cancel = True отменит всю печать рабочей книги, а ws.PrintOut будет печатать только ваш активный рабочий лист.

ИПриношу свои извинения, в настоящее время я не нахожусь в среде, где я могу проверить это.

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