2013-10-03 14 views
0

我想要在Excel中更改文件打印設置以直接轉到VBA並在打印時打印26個工作表中的一部分工作簿。大部分活動工作表都應該打印,但少數工作表不應打印。工作簿是一個模板,活動和打印工作表的數量將隨每個新創建的工作簿而變化。最後,如果VBA代碼進入「ThisWorkbook」部分?如何更改Excel上的文件打印設置,以便在打印工作簿時使用VBA打印多個頁面

+0

'最後,VBA代碼應該放在「ThisWorkbook」部分嗎? '是的,它會進入'私人小組Workbook_BeforePrint(取消爲布爾)'嘗試使用谷歌搜索,然後顯示您嘗試的代碼,然後我們會從那裏拿走它? –

+0

這似乎工作,但它會自動打印。是否可以使用現有的打印屏幕更改打印頁數(這樣用戶可以打印PDF副本?)Public Sub Workbook_BeforePrint(取消爲布爾值) 表(「摘要」)。選擇 呼叫解鎖表 ActiveSheet。 Visible = False ActiveWorkbook.PrintOut 表(「Summary」)。Visible = True Call Lock_Sheet End Sub – user2591172

回答

0

我會使用類似

Sub PrintSheets() 
Dim Wks1 as Worksheet: set Wks1=Sheets("SheetName1") 
Wks1.PrintOut Copies:=1, Collate:=True 
'[...] and so on with your sheets 

凡副本沒有可以改變 要完全使自動化代碼我usualy創建一個名爲「宏鍵」在那裏我存儲表的名字和複製新的工作表計數(即A1 =「SheetName1」,B1 =「5」,A2 =「SheetName2」,B2 =「10」)。因此:

Sub PrintSheets() 
Dim MacroKeys as Worksheet: Set MacroKeys = Sheets("Macrokeys") 
SheetName1 = Macrokeys.Range("A1").Value 
SheetName1_CopyCount = Macrokeys.Range("B1").Value 
Sheet(SheetName1).PrintOut Copies:= SheetName1_CopyCount, Collate:=True 
'[...] and so on with your sheets 
End Sub 

希望這有助於!