Ir ao conteúdo
  • Cadastre-se

Excel Fechar tela de visualização de impressão com macro


Ir à solução Resolvido por Midori,

Posts recomendados

Olá, pessoal.

 

Sub Visualiza_Impressao()

   'Define área de impressão
   ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(46, 7)).Address

   'Chama a tela de visualização de impressão
   Application.Dialogs(xlDialogPrintPreview).Show

End Sub

 

Consegui essa macro na internet, mas, na verdade, gostaria de um comando exatamente para fechar essa tela de visualização de impressão. É que pretendo aplicar em outra macro para conseguir uma execução específica.

Procurei bastante na internet, mas não encontrei esse comando. Também não consegui criar com o gravador de macro.

Ficaria grato quem puder me ajudar.

 

 

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

Pessoal, para deixar mais claro minha solicitação, vou explicar melhor.

 

Em anexo, segue uma planilha de cálculo. Nela inseri algumas macros para agilizar o trabalho de realizar cálculos.

 

Uma das macros está vinculada ao botão SENTENÇA (em azul). Ela é responsável por criar um atalho de impressão de cálculos, após uns ajustes feitos na macro original.

 

Pois bem, quando clico no botão SENTENÇA, aparece a janela Visualização de Impressão.

 

Assim, para que a planilha apure o cálculo atualizado, é necessário fechar manualmente essa janela, clicando emFechar Visualização de Impressão”. Somente após isso, a planilha gera automaticamente o PDF do cálculo.

 

Mas, eu gostaria justamente de acelerar essa operação. De que forma? Ao clicar no botão SENTENÇA, a planilha exportar o cálculo para PDF diretamente, sem a necessidade de clicar manualmente em “Fechar Visualização de Impressão”.

 

Para isso, gostaria de saber se é possível adicionar um código na macro acima exatamente para fechar automaticamente essa tela de Visualização de Impressão, a fim de conseguir essa automação.

 

Caso não seja viável, eu me contentaria com uma simples resposta informando que esse tipo de operação não é possível automatizar.

 

Espero ter sido claro.  

 

Desde já, agradeço pela ajuda.

Planilha Implantação Benefício Mínimo (74)-Melhoramento (7) - TESTE.rar

Link para o comentário
Compartilhar em outros sites

4 horas atrás, Midori disse:

A macro é interrompida até que a janela seja fechada, então não tem como fechar dessa forma.

 

Faz sentido.

 

Midori, trata-se de uma macro em que eu fiz esse ajuste (não achei opção melhor para o meu propósito!). 

 

Isso porque a macro, após a alteração feita, inicialmente não estava apurando os valores do cálculo atual. Ou seja, imprimia os valores do cálculo anterior. Então, esse fechamento funciona como uma espécie de atualização, para calcular os valores do novo período de cálculo.

 

Acredito que a macro original, elaborada inicialmente para executar a apuração de períodos variáveis, ou seja, quanto maior o número de meses, maior será a planilha exportada para PDF, tem suas peculiaridades, por isso essa foi a melhor solução que eu encontrei para obter o cálculo do período pretendido.

 

De qualquer forma, você me repassou uma solução, Midori: a solução é que esse tipo de operação não é possível automatizar. 

 

Mais uma vez, obrigado Midori.

 

Link para o comentário
Compartilhar em outros sites

Midori, continuo analisando de que forma podemos aperfeiçoar a macro acima mencionada. Penso que é possível melhorá-la. 

 

Em 05/12/2022 às 09:00, Midori disse:

A macro é interrompida até que a janela seja fechada, então não tem como fechar dessa forma.

 

Tudo bem. Eu entendi que, da modo como a macro original foi alterada, ela não pode executar a rotina diretamente. É necessário clicar em “Fechar Visualização de Impressão”, como você bem explicou acima.

 

Então, vejamos. Para melhor compreender a macro original e as alterações que fiz, seguem os códigos abaixo, presentes na planilha, já anexada a este tópico.

 

  • MACRO ORIGINAL (presente no UserForm1: Private Sub CommandButton1_Click)

 

Private Sub CommandButton1_Click()
'
    Unload Me
    Sheets("Resumo").PrintPreview
    Sheets("Sentença Comum").Select
    Range("M20").Select
    Selection.AutoFilter Field:=1, Criteria1:="1"
    ActiveWindow.SelectedSheets.PrintPreview
    Sheets("Normal").Select
    Sheets("Normal").Range("C15").FormulaR1C1 = "0%"
    Sheets("Normal").Range("E15").FormulaR1C1 = "0%"
'
End Sub

 

  • ALTERAÇÕES FEITAS NA MACRO ACIMA (módulo 3):

 

Sub CEZAR_CálculoSentençaAtualizando()


'As linhas de códigos abaixo geram um efeito atualizador, nos cálculos, para, só então, calcular e imprimir os reais valores.
'Isso porque a macro inicialmente não estava apurando os valores atuais. Ou seja, imprimia os valores do cálculo anterior.
'Esse fato não ocorreu nos cálculos de acordo.
'O código abaixo chama a janela de "Visualização de Impressão" da planilha Sentença Comum, que depois deve ser fechada. Em seguida, os cálculos corretos são impressos automaticamente.


'A) CÓDIGOS COM EFEITO ATUALIZADOR DOS CÁLCULOS:
 
'Inicialmente anulei as linhas de comando abaixo, do código original de impressão do cálculo.

'Private Sub CommandButton1_Click()
'
    'Unload Me
    'Sheets("Resumo").PrintPreview
    Sheets("Sentença Comum").Select
    Range("M20").Select
    Selection.AutoFilter Field:=1, Criteria1:="1"
    ActiveWindow.SelectedSheets.PrintPreview
    'Sheets("Normal").Select
    'Sheets("Normal").Range("C15").FormulaR1C1 = "0%"
    'Sheets("Normal").Range("E15").FormulaR1C1 = "0%"

'Os códigos de atualização terminam aqui.


'B) IMPRESSÃO DOS VALORES ATUALIZADOS:

'A seguir, seguem os comandos responsáveis por imprimir o cálculo atualizado.

'Inicialmente anulei as linhas de comando abaixo, do código original de impressão do cálculo.

'Private Sub CommandButton1_Click()
'
    'Unload Me


'1ª PARTE - IMPRESSÃO DA PLANILHA RESUMO:

'Na sequência, inclui o código de seleção da planilha RESUMO.
    Sheets("Resumo").Select

'Depois anulei o código abaixo.
    'Sheets("Resumo").PrintPreview

'Em seguida, inclui o código abaixo para exportar para PDF a planilha atual (RESUMO).
    ActiveSheet.PrintOut


'2ª PARTE - IMPRESSÃO DA PLANILHA SENTENÇA COMUM:

'Linha de código original. Seleção da planilha Sentença Comum.
    Sheets("Sentença Comum").Select

'Novamente inclui o código abaixo para exportar para PDF a planilha atual (SENTENÇA COMUM).
    ActiveSheet.PrintOut
    
'A sequência abaixo é do código original (ficou mantida).
    Range("M20").Select
    Selection.AutoFilter Field:=1, Criteria1:="1"

'Anulei a linha de código abaixo, por ser semelhante ao código ActiveSheet.PrintOut.
    'ActiveWindow.SelectedSheets.PrintPreview
    
    Sheets("Normal").Select
    'Sheets("Normal").Range("C15").FormulaR1C1 = "0%"
    'Sheets("Normal").Range("E15").FormulaR1C1 = "0%"


End Sub

 

Veja que inseri algumas explicações referentes às modificações feitas na macro original.

 

Perceba também que a parte A da macro acima, introduzida pelo título 'A) CÓDIGOS COM EFEITO ATUALIZADOR DOS CÁLCULOS:, contêm algumas linhas de comando que realiza uma espécie de efeito atualizador no cálculo, cujas razões explico na própria macro.

 

Se não fosse esse efeito atualizador, o PDF do cálculo ficaria sempre desta forma. A todo momento deixando esses espaços sem valores, provenientes da cálculo anterior. Veja:

 

image.thumb.png.465242d054ce21e5097a61f09be60123.png

 

Na parte B do código alterado, divida em 1ª PARTE e 2ª PARTE, seguem os comandos responsáveis por imprimir em PDF duas planilhas, presentes nas guias "Resumo" e "Sentença Comum".

 

Midori, Acho que o mais importante na seção B da macro é que anulei a linha 'Sheets("Resumo").PrintPreview e inclui ActiveSheet.PrintOut, para exportar para PDF a planilha "Resumo".

 

Da mesma forma, anulei 'ActiveWindow.SelectedSheets.PrintPreview, para incluir ActiveSheet.PrintOut, a fim de gerar o PDF da guia "Sentença Comum".

 

A propósito, não gostaria de salvar diretamente o PDF para alguma pasta do computador. Pelo que observei, a linha ActiveSheet.PrintOut é que permite abrir um programa de impressão antes de imprimir (mas não é aquela janela motivo de minha queixa inicialmente e que tem que ser fechada para a macro continuar!). Isso é interessante para o caso de fazer alguns ajustes na impressão.

 

Apenas a título de informação (não sei se é útil!), eu uso o programa PDF reDirect para fundir as duas planilhas cima referidas em um só arquivo de PDF e, algumas vezes, eu preciso editar o nome do arquivo. Essa é a janela a que me referi no parágrafo anterior. Veja:

 

image.png.cd12a025c033129d97c8b60597fac40a.png

 

Mais uma vez lembrando, eu já anexei o arquivo da planilha em post anterior, para o caso de consulta.

 

Caso seja necessário, outros detalhes sobre as macros em questão e o funcionamento da planilha eu também detalho anteriormente, ao logo deste tópico.

 

❓ Pois bem, Midori, é possível construir uma NOVA macro, baseada na macro original então citada, para exportar o cálculo para PDF (com a apresentação da janela de impressão)?

 

Só um detalhe, Midori: é preciso preservar a essência da macro original, pois ela foi criada para atuar numa planilha que "encolhe" e "estica", conforme o número de meses considerados no cálculo.

 

Apenas fazendo um último registro: não confundir com a solicitação anterior. Naquela ocasião, eu desejava apenas eliminar a tela de “Fechar Visualização de Impressão”, mantendo a mesma macro alterada.

 

O texto ficou bem extenso, mas acho que não é de leitura cansativa. Acredito que as explicações eram necessárias.

 

Desde já, agradeço mais uma vez pela ajuda, Midori.

 

 

 

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Midori disse:

@Nilton Cézar Acredito que a melhor forma de salvar em PDF é com a função ExportAsFixedFormat. Mas caso queira mostrar a janela de impressão, é o usuário que terá que fechar e configurar manualmente as opções dela.

 

Midori, desde que a nova macro se baseie na macro original pelas razões explicadas acima.

 

Quanto a mostrar a janela de impressão, desde que seja esta:

 

image.png.644c0c86b107a07abe4c11d44caf9a26.png

 

Porque por esta eu posso configurar manualmente, inclusive renomeando o nome do PDF.  Isso realmente é interessante para o caso de eu fazer alguns ajustes na impressão.

 

Na verdade, a janela que eu não gostaria que aparecesse era esta:

 

image.png.e11e22baea90cac59fc903ca25760fa3.png

 

Lembrando que essa janela está presente na macro que eu havia alterado. A macro é interrompida até que essa janela seja fechada. Isso é o inconveniente que eu queria evitar com uma nova macro.

 

Assim, Midori, se for possível construir uma NOVA macro, baseada na macro original então citada, para exportar o cálculo para PDF (com a apresentação da janela de impressão), seria justamente o que eu espero para acelerar o procedimento de geração de PDF's de cálculos.


Se der certo, ótimo! Se não, não têm problemas! Da forma como está, dá para imprimir os cálculos. Como eu disse, gostaria apenas de automatizar ao máximo essa operação.

 

 

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Nilton Cézar disse:

Quanto a mostrar a janela de impressão, desde que seja esta:

 

Acho que para configurar e mostrar dessa forma só se houver algum controle onde seja possível colocar no formulário. Não conheço um controle assim. Mas com isso daria para configurar as propriedades e métodos por meio dos outros controles do formulário.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

6 minutos atrás, Midori disse:

Acho que para configurar e mostrar dessa forma só se houver algum controle onde seja possível colocar no formulário. Não conheço um controle assim. Mas com isso daria para configurar as propriedades e métodos por meio dos outros controles do formulário.

 

Midori, pelo que observei, a linha ActiveSheet.PrintOut é que permite abrir um programa de impressão antes de imprimir, como, por exemplo, o PDF Redirect, acima mostrado.

 

O problema é criar uma nova macro que mantenha o padrão da macro original, devido às características da planilha, que "encolhe" e "estica", buscando acelerar ao máximo o procedimento de exportação de PDF's de cálculos.

 

Se for possível, nos moldes acima, excelente!

 

Tem alguma ideia para possamos testar?

 

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Apenas para concluirmos o tópico.

 

Midori, pelo que entendi, não é possível criar uma nova macro nos moldes solicitados. Você realmente já havia explicado isso lá em cima.

 

De todo modo, consigo exportar os cálculos para PDF com uma certa automação, após clicar em “Fechar Visualização de Impressão”. Somente após isso, a planilha gera automaticamente o PDF do cálculo.

 

Assim, agradeço às pacientes explicações e às excelentes informações.

 

Mais uma vez, obrigado Midori. 👍

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!