我希望能够在横向模式下打印A:H列中的所有内容,我想知道是否有人知道如何执行此操作,以便每当您打开此特定文档并尝试打印时,它都会在这些特定设置下自动打印。另外我只想打印实际存在文本的地方并避免打印空白区域(我在所有单元格中填充了方程式A1:H50,但实际上我只有正确填充的数字(但这会随着时间的推移而变化)在单元格上A1:H30。即A31:H50现在都用空格字符填充"")#/ p>
此外,我的文档的第一行有标题,我希望为我打印的每个页面显示这些标题。 (即1年前股票名称,股票价格,股票价格的标题,然后这些列填充30股票)。我想这样,如果我有4页(可变)的信息最终被打印,那么最上面的股票名称和价格总是打印在每页的顶部。
非常感谢!
答案 0 :(得分:0)
好的,你问了几个不同的问题,有些问题比其他问题更容易回答。
首先,您希望在每次有人打印页面时设置要打印的特定区域(A1:H50),并且您希望它以横向打印。这很简单 - 转到页面布局功能区,选择区域A1:H50,然后单击打印区域 - >设置打印区域。然后在旁边,单击方向 - >横向。
关于设置标题的第三个问题也很简单。再次转到页面布局功能区,然后单击“打印平铺”。您可以单击“工作表”选项卡并告诉它在顶部重复某些行,也可以单击“页眉/页脚”并自行键入标题。
你的第二个问题没有一个简单的自动化方法(我知道。要么接受打印输出中会包含空格这一事实(无论如何都很好,因为你可能希望每个页面间隔相同)无论如何,无论填充多少行,或手动“隐藏”空白行。
这里可以使用VBA自动化解决方案,但我不建议您使用自动化解决方案,而这种解决方案对于手动操作非常简单的事情并不了解。
请注意,此问题并不适合此网站。这是一个更适合superuser.com的问题,它与stackoverflow.com属于同一组网站,但是面向有关软件的非编程问题 - 特别是Excel。
答案 1 :(得分:0)
每次用户尝试打印时,您都可以使用BeforePrint
事件将打印区域重置为您的规格。无论用户尝试选择哪种设置,它都会覆盖您在事件代码中指定的设置。尝试将以下代码放在ThisWorkbook
模块中:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Application.PrintCommunication = False
With ThisWorkbook.Sheets("Sheet 1")
.AutoFilterMode = False
.Range("$A:$H").AutoFilter Field:=1, Criteria1:="<>", Operator:=xlFilterValues 'if column A (Field:=1) is blank then hide those rows before setting print range
With .PageSetup
.Orientation = xlLandscape
.PrintArea = "$A:$H"
.PrintTitleRows = "$1:$1" 'change to whichever row numbers you want to print on every page
End With
End With
Application.PrintCommunication = True
End Sub
这样做的潜在好处是,它不允许用户以您指定的格式以外的任何格式打印它。如果您不想限制用户以不同格式打印它的能力,您可以在非事件Sub
中使用相同的代码,并让用户在需要时运行该宏用这些设置打印出来。