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 Object
Dim N As Long
Dim Arr() As String
Dim K As Long
Dim B As Boolean
ReDim Arr(1 To ActiveWorkbook.Sheets.Count)
For Each WS In ActiveWorkbook.Sheets
Let B = True
With ActiveWindow.SelectedSheets
For N = 1 To .Count
Let B = True
If StrComp(WS.Name, .Item(N).Name, vbTextCompare) = 0 Then
Let B = False
Exit For
End If
Next N
If B = True Then
Let K = K + 1
Let Arr(K) = WS.Name
End If
End With
Next WS
If K > 0 Then
ReDim Preserve Arr(1 To K)
ActiveWorkbook.Sheets(Arr).PrintOut Preview:=Preview
End If
End 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 String
Dim B As Boolean
Dim N As Long
Dim M As Long
Dim K As Long
ReDim Arr(1 To Sheets.Count)
For N = 1 To Sheets.Count
Let B = True
For M = LBound(Excludes) To UBound(Excludes)
If StrComp(Sheets(N).Name, Excludes(M), vbTextCompare) = 0 Then
Let B = False
Exit For
End If
Next M
If B = True Then
Let K = K + 1
Let Arr(K) = Sheets(N).Name
End If
Next N
If K > 0 Then
ReDim Preserve Arr(1 To K)
Sheets(Arr).PrintOut Preview:=Preview
End If
End Sub
Fonte: C Person
Tags: Bernardes, Microsoft, MOS, MS, Office, Office 2007, Office 2010, automation, automação, print, various print, simultaneously print, multi print
Nenhum comentário:
Postar um comentário