Nossas planilhas, e neste caso refiro-me as inúmeras 'sheets' ou pastas dentro de uma única planilha (workbook). Com o passar do tempo, se não tomarmos cuidado, acabam sendo compostas por diversas interfaces diferentes. Algumas com visões consolidadas e outras detalhadas (drilldown).
Independentemente de quão amplo sejam os nossos workbooks, invariavelmente precisaremos imprimir o seu conteúdo, geralmente representados por Dashboards & Scorecards, ou Cockpits.
Os três exemplos abaixo visam permitir que possa dar diversas opções de impressão aos seus usuários, e obviamente a você mesmo.
1º EXEMPLO
Este código imprime as todas as planilhas selecionadas, veja o código do procedimento inPrintSelectedsSheets mostrado abaixo.
Sub inPrintSelectedSheets (Preview As Boolean)Dim N As LongDim M As LongDim Arr() As StringWith ActiveWindow.SelectedSheetsReDim Arr(1 To .Count)For N = 1 To .CountLet Arr(N) = .Item(N).NameNext NEnd WithSheets(Arr).PrintOut Preview:=TrueEnd Sub
2º EXEMPLO
Já este código a seguir imprime apenas as planilhas não selecionadas através do procedimento inPrintUnSelectedSheets:
Sub inPrintUnselectedSheets (Preview As Boolean)Dim WS As ObjectDim N As LongDim Arr() As StringDim K As LongDim B As BooleanReDim Arr(1 To ActiveWorkbook.Sheets.Count)For Each WS In ActiveWorkbook.SheetsLet B = TrueWith ActiveWindow.SelectedSheetsFor N = 1 To .CountLet B = TrueIf StrComp(WS.Name, .Item(N).Name, vbTextCompare) = 0 ThenLet B = FalseExit ForEnd IfNext NIf B = True ThenLet K = K + 1Let Arr(K) = WS.NameEnd IfEnd WithNext WSIf K > 0 ThenReDim Preserve Arr(1 To K)ActiveWorkbook.Sheets(Arr).PrintOut Preview:=PreviewEnd IfEnd Sub
3º EXEMPLO
O código a seguir exclue as planilhas informadas na seleção, imprimindo todas as demais com o procedimento inPrintSheetsExclude. Use assim: inPrintSheetsExclude false, "Sheet2", "Sheet4", "Sheet6". Perceba que todas as sheets serão impressas, excetuando-se as sheets: Sheet2, Sheet4, e Sheet6, veja o código:
Sub inPrintSheetsExclude (Preview As Boolean, ParamArray Excludes() As Variant)Dim Arr() As StringDim B As BooleanDim N As LongDim M As LongDim K As LongReDim Arr(1 To Sheets.Count)For N = 1 To Sheets.CountLet B = TrueFor M = LBound(Excludes) To UBound(Excludes)If StrComp(Sheets(N).Name, Excludes(M), vbTextCompare) = 0 ThenLet B = FalseExit ForEnd IfNext MIf B = True ThenLet K = K + 1Let Arr(K) = Sheets(N).NameEnd IfNext NIf K > 0 ThenReDim Preserve Arr(1 To K)Sheets(Arr).PrintOut Preview:=PreviewEnd IfEnd Sub
Fonte: C Person
Tags: André Luiz Bernardes, Microsoft, MOS, MS, Office, Office 2007, Office 2010, automation, automação, print, various print, simultaneously print, multi print,
André Luiz Bernardes
A&A® - Work smart, not hard.