我只想一次打印一张工作表(由于有大量数据,如果我打印整个工作簿,将导致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行如上所示。如果我要打印整个工作簿,上面的代码可以工作,但当我只想打印活动的工作表时就不行了。
发布于 2019-10-01 22:39:46
我以前从未真正从VBA打印过,但是您也许能够使用worksheet对象中的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将仅打印活动工作表。
我很抱歉,我现在不在可以测试它的环境中。
https://stackoverflow.com/questions/58185534
复制相似问题