Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

Mostrando postagens com marcador various print. Mostrar todas as postagens
Mostrando postagens com marcador various print. 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: 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 - Imprimindo múltiplas planilhas simultaneamente

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.


Manipulando Impressoras e Impressões: 


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

👉 Não se esqueça de seguir André Bernardes no Linkedin. Clique aqui e me contate via What's App. 

Comente e compartilhe este artigo!

brazilsalesforceeffectiveness@gmail.com


 Série de Livros nut Project 

DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes
diHITT - Notícias