2014-01-29 53 views
0

我有一個工作簿超過一百張。我已經能夠修復列的寬度和行高,以便它們都是一個很好的可打印格式。我有困難,以便把一個代碼以執行以下操作:頁面設置多個工作表並打印

  1. 設置打印區域的每個片材[這是變量,因爲各薄片可以含有不同量的行] - 每個片具有相同的標頭在第一行並且標題從A1:N1運行。所有的數據從第2行開始,以及如何根據每個表單向下多少行。

  2. 我想標題行是在每一頁上的標題,如果多個頁面需要打印

  3. 格式設置爲橫向

  4. 我想縮放以適合所有列一頁。如果它必須打印到多個頁面,而這些頁面可能有行。

  5. 打印所有工作表

我知道下面的代碼有xlPortrait爲導向,它應該是景觀。我的問題是我無法得到最初的部分。我一直試圖做到這一點,但我似乎無法開始。任何正確方向的幫助都會很大。

Sub SetupPrint() 
Dim wkst As Worksheet 
    For Each wkst In ActiveWorkbook.Sheets 
     With wkst.PageSetup.PrintArea 
     .Range(("A1"), Selection.SpecialCells(xlLastCell)).Select 

     End With 


     With wkst.PageSetup 
     .PrintTitleRows = "$1:$1" 
     .PrintTitleColumns = "" 
     .Orientation = xlPortrait 
     .FitToPagesWide = 1 

     End With 
    Next 

End Sub 
+0

你想爲此VBA的任何特定原因? – pnuts

+0

我想讓這個過程自動化。我意識到我可以設置橫向,將所有列放在一個頁面上,並通過選擇所有工作表選項卡來打印所有工作表。我無法應用爲每個頁面設置標題的第一行。我最終記錄了我所做的並運行宏以將其應用於每個頁面。然後我通過選擇所有選項卡打印所有工作表。 – fonzy16

+0

我找到了我的解決方案,但我總是試圖瞭解VBA如何在將來消除儘可能多的手動工作。有時候,成本收益並不存在,但它在未來的某個時候可能會有用。 – fonzy16

回答

0

你基本上已經有了一切。

如果每個工作表具有相同的列數並保存標題,則不需要爲每個工作表設置打印區域。只需指定適合所有列在一個頁面上,這將使它打印1頁上的所有列,然後它將打印它需要打印所有行的許多頁面。

所以你有你的.PrintTitleRows = "$1:$1"是會做標題

你有肖像但指出,必須景觀

的fitToPagesWide = 1,我相信會在適合所有列每一頁

您可以添加.FitToPagesTall = False爲了安全着想

然後代碼打印的ActiveWorkbook.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False

我不知道什麼collat​​e是..實驗。

基本上,我得到這段代碼的方式是我去查看 - 宏的 - 記錄宏 然後,我將工作簿中的頁面佈局設置爲我想要的,然後我停止宏並檢查代碼,它有代碼來設置我所做的所有設置。

另一種選擇 - 沒有真正的理由爲此使用VBA。請轉到頁面佈局選項卡上的「打印標題」以獲取要在每個頁面上打印的列標題,然後按CTRL + P打印,您可以在其中設置所有其他打印設置,包括一頁上的所有列,然後確保它設置爲「打印整個工作簿」..這將完成相同的

+1

如果要打印多個副本(比如說3),當「校對:=真」時,則產生三組副本。否則(錯誤)第一頁3份,第二頁3份等等。 [參考](http://msdn.microsoft.com/en-us/library/office/ff838253.aspx) – pnuts

+0

啊哈,謝謝。我不打印太多 – user1759942

+0

也不是 - 我們可能會爲了保護環境而輕拍自己。 – pnuts