2015-07-21 174 views
0

我想能够打印一切,我从列A具有:在横向模式H,如果有人知道如何做到这一点,使得我在想,当你打开这个特定的文件,并尝试将其打印出来,它会在这些特定设置下自动打印。此外,我只想打印出实际上是文本的位置,并避免打印空白区域(我在所有单元格A1:H50中填写了方程式,但实际上只有数字填充在右侧(但这会随时间变化) A1:H30。即A31:H50现在全部填满空白字符“”)的Excel打印区域

此外,我的文档的第一行有标题,我希望为每个打印的页面显示标题。 (即1年前的股票名称,股票价格,股票价格的标题,然后这些栏目填充30个股票)。我希望这样,如果我有4页(可变)价值的信息最终被打印,那么在每页的顶部总是会打印出最上面一行的股票名称和价格。

非常感谢!

回答

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中使用相同的代码,并让用户在需要使用这些设置打印出来时运行该宏。

+0

非常感谢你,作品像魅力! – kash

0

好的,你问了几个不同的问题,有些比别人更容易回答。

首先,要设定一个特定的区域(A1:H50)要打印,每次有人打印页面,你希望它在横向打印。这很简单 - 转到页面布局功能区,选择区域A1:H50,然后单击打印区域 - >设置打印区域。然后,在旁边,单击方向 - >风景。

第三个问题,关于设置标题,也很简单。再次转到页面布局功能区,然后单击“打印页面”。您可以单击“工作表”选项卡并指示它在顶部重复某些行,也可以单击“页眉/页脚”并手动输入页眉。你知道第二个问题没有一个简单的自动化方法(我知道的),要么接受空白空间将被包含在打印输出中的事实(无论如何,这很好,因为你可能希望每个页面间隔一段距离无论有多少行被填充),或手动“隐藏”空白行。

VBA自动化解决方案在这里是可能的,但我不建议您使用自动化解决方案,而您不知道在东西那么微不足道做手工。

注意,这个问题是不是真的适合这个网站,这是一个问题,更适合superuser.com,这是同组位点的一部分但是面向软件的非编程问题 - 特别是Excel。