Views

...

Important:

Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog podem ser tratados como consultoria freelance.

E-mails

Deixe seu e-mail para receber atualizações...

eBook Promo

Mostrando postagens com marcador imprimir. Mostrar todas as postagens
Mostrando postagens com marcador imprimir. Mostrar todas as postagens

VBA Excel - Imprimindo planilhas selecionadas ou não.

excel-header.jpg

Olá pessoal!

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 Long
Dim M As Long
Dim Arr() As String
With ActiveWindow.SelectedSheets
ReDim Arr(1 To .Count)

For N = 1 To .Count
Let Arr(N) = .Item(N).Name
Next N

End With

Sheets(Arr).PrintOut Preview:=True
End 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: 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.

VBA Excel - Outros modos para imprimir planilhas selecionadas ou não.

Olá pessoal!

Resolvamos mais esta questão quanto a impressão de planilhas, geralmente contendo Dashboards & Scorecards, ou Cockpits, que precisem ser impressas.
Este código imprime as planilhas selecionadas, veja o código do procedimento PrintSelectedsSheets mostrado abaixo.

Sub PrintSelectedSheets(Preview As Boolean)
Dim N As Long
Dim M As Long
Dim Arr() As String
With ActiveWindow.SelectedSheets
ReDim Arr(1 To .Count)
For N = 1 To .Count
Let Arr(N) = .Item(N).Name
Next N
End With
Sheets(Arr).PrintOut Preview:=True
End Sub

Como faço para imprimir apenas as pastas não selecionadas?

Sub PrintUnselectedSheets (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

Como posso fazer para imprimir todas as Sheets, excluindo as que passar como parâmetro?

PrintSheetsExclude false, "Sheet2", "Sheet4", "Sheet6"

This prints all sheets except Sheet2, Sheet4, and Sheet6. The code is shown below:

Sub PrintSheetsExclude (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: André Luiz Bernardes, Microsoft, MOS, MS, Office, Office 2007, Office 2010, automation, automação, print, various print, simultaneously print, multi print, selected


André Luiz Bernardes
A&A® - Work smart, not hard.

VBA Excel - Imprimindo múltiplas planilhas simultaneamente.

Olá pessoal!

Resolvamos uma questão constante no que diz respeito a impressão de diversas planilhas, geralmente contendo Dashboards, que precisam ser impressos juntos para nos permitir tanto rapidez como praticidade.

Quando imprimimos uma sheet no MS Excel, esta é impressa num trabalho de impressão próprio, mas a impressão de várias sheets criam vários trabalhos de impressão.

Neste artigo verá descrito um código que pode ser usado para imprimir várias planilhas como um único trabalho de impressão. O primeiro parâmetro para todas as funções é chamado de visualização e indica se as folhas devem ser exibidas na janela de pré-visualização (Preview = True) ou enviadas diretamente para a impressora ativa (Preview = False).
Esta Procedure tem como parâmetros os nomes das planilhas a serem impressas:

PrintSheets False, "Sheet1", "Sheet3", "Sheet5"
Este código imprime as planilhas: Sheet1, Sheet3, e Sheet5, vejoa o código do procedimento PrintSheets mostrado abaixo.

Sub PrintSheets (Preview As Boolean, ParamArray SheetNames() As Variant

' PrintSheets
' Todas as sheets que serão impressas são passadas como parametro.
' As sheets que não existirem serão ignoradas.

Dim Arr() As String
Dim N As Long
Dim K As Long
Dim B As Variant
Dim WS As Object

If UBound(SheetNames) >= LBound(SheetNames) Then
ReDim Arr(LBound(SheetNames) To UBound(SheetNames))

Let K = LBound(SheetNames)

For N = LBound(SheetNames) To UBound(SheetNames)
On Error Resume Next
Err.Clear

Set WS = Sheets(SheetNames(N))

If Err.Number = 0 Then
Let Arr(K) = SheetNames(N)
Let K = K + 1
End If

On Error GoTo 0
Next N

If K > 0 Then
ReDim Preserve Arr(LBound(Arr) To K - 1)
Sheets(Arr).PrintOut Preview:=Preview
End If

End If
End 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.

eBooks VBA na AMAZOM.com.br

LinkWithinBrazilVBAExcelSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine