Imprimir duas planilhas em uma página


#1

Olá pessoal! Gostaria de saber se vocês podem me ajudar com uma dúvida.

A situação é a seguinte:

*Eu tenho duas planilhas, Plan1 e Plan2.

*Cada uma possui uma tabela com um conjunto de dados que não ultrapassa de 4 linhas.

*Eu preciso imprimir essas duas planilhas em apenas uma página da impressão; no caso a tabela da Plan2 vai embaixo da tabela da Plan1.

*Acontece é que o excel costuma imprimir uma planilha por cada página, e como as tabelas de cada planilha são pequenas, acaba sendo desperdiçado bastante papel. Fica aquela tabelinha de três linhas numa página toda.

Em suma: Como fazer para que, logo abaixo desta planilha pequena (Plan 1) seja impresso a próxima planilha (Plan2), não deixando todo esse espaço em branco. Tem como fazer isso?

Eu sei que eu poderia simplesmente copiar o conteúdo da Plan2 e colar embaixo da Plan1 e reajustar a área de impressão, entretanto, acontece é que eu simplifiquei a real situação para facilitar o entendimento, pois eu realmente preciso saber como automatizar este processo, ja que eu necessito das duas planilhas separadas .

Agradeço desde já.


#2

Uma maneira seria replicando essas duas tabelas para uma terceira planilha e depois formatando a sua área de impressão…

Se encontrar outra solução, atualizo o meu post. Abrç!


#3

Pois é, isto funcionaria, porém é uma solução muito manual, teria que ficar fazendo individualmente toda hora, preciso algo mais automatizado.

De qualquer forma, agradeço pela resposta.


#4

@FelipeGPH, acho que o que o @xlarruda quis dizer seria referenciar estas planilhas em uma terceira. Você faria apenas uma vez colocando as referências e, a partir daí, ficaria sempre pronto sem precisar fazer toda hora.


#5

Coelga, montei uma rotina que , tavez possa te dar uma luz.

Option Explicit
Option Compare Text
Sub Imprimir_1pg()
Dim tabela As Variant
Dim plan As Variant
Dim ul_temp As Long
Dim Temp As Worksheet

On Error Resume Next

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Sheets.Add
ActiveSheet.name = "Temp"
Set Temp = Sheets("Temp")

For Each plan In ThisWorkbook.Worksheets
ul_temp = Temp.Range("A" & Rows.Count).End(xlUp).Row
plan.Select
    For Each tabela In ActiveSheet.ListObjects
        Range(tabela).Select
        Selection.Copy _
        Destination:=Temp.Range("A" & ul_temp + 2)
    Next
Next

Temp.Range("A:D").EntireColumn.AutoFit


Temp.UsedRange.PrintOut

Temp.Delete
Temp = Nothing

Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Segue anexo:

Imprimir_1pg.xlsm (23,8 KB)


#6

Ótimo! Funcionou perfeitamente. Muito obrigado mesmo.


#7

André, estou com um problema parecido.

Tenho um sistema que me gera um relatório em .xls, mas cada página do relatório ele me gera em uma planilha diferente. Quando gero o relatório eu fico com uma pasta de trabalho com mais de 500 planilhas.

Como será que eu conseguiria unir todas em uma planilha só uma baixo da outra? As planilhas tem espaços em branco pelo meio do relatório mas todas tem o mesmo tamanho em linhas e colunas. E elas são geradas com nome: Página1, Página2, Página3…


#8

Bom dia colega @Yure, você consegue postar sua planilha ?


#9

Colega @yure , execute essa macro naquela planilha que me enviou.

Ao final do processo será adicionada mais uma Plan como a junção de todas as outras:

Option Explicit

Sub Join()
Dim ul_join As Long
Dim sh As Variant
Dim w As Worksheet
    
On Error Resume Next
    Sheets.Add
    ActiveSheet.Name = "Join"
Set w = Sheets("Join")

For Each sh In ThisWorkbook.Worksheets
If w.Range("A" & Rows.Count).End(xlUp).Row <= 1 Then
ul_join = 1
Else
ul_join = w.Range("A" & Rows.Count).End(xlUp).Row
End If
    If sh.Name <> w.Name Then
        sh.Range("A1:I60").Copy Destination:=w.Range("A" & ul_join + 3)
    End If
Next
MsgBox "Feito!", vbExclamation
End Sub

#10

Deu certo amigo. Obrigado!