Ir ao conteúdo
  • Cadastre-se
João_Neto_1988

Excel RESOLVIDO Macro com multi-função copiar, imprimir, salvar em pdf.

Recommended Posts

Olá, pessoal!

Eu tentei desenvolver essa macro durante horas, mas não consegui. =(
Será que alguém pode me ajudar? 😃

 

Bom eu preciso que a macro, faça várias operações.

Copiar uma célula colar em outra planilha, depois imprimir com o tamanho ideal para papel ofício, em seguida salvar em pdf e excel e salvar os arquivos em pdf em uma pasta e os de excel em outra pasta e depois disso voltar para a planilha inicial e copiar a célula abaixo da célula inicial (ou seja, vai seguindo a sequência, A2, A3, A4 etc) e refazer todo o procedimento.

 

De uma forma mais organizada e detalhada, é isso que eu preciso que a macro faça!

01. selecionar planilha "BASE"
02. copiar célula A2
03. selecionar planilha "PROPOSTA"
04. colar na célula E7
05. manter o ajuste da página para caber em uma folha de papel ofício 
06. imprimir duas cópias
07. salvar em pdf com o nome da célula X7 da planilha "PROPOSTA" em uma nova pasta chamada: "PONTO EXTRA PDF - (NOME DO MÊS ATUAL)" que deve estar localizada dentro da pasta onde está a planilha com a macro
08. salvar em um novo arquivo de excel com o nome da célula X7 da planilha "PROPOSTA" em uma nova pasta chamada: "PONTO EXTRA - (NOME DO MÊS ATUAL)" que deve estar localizada dentro da pasta onde está a planilha com a macro
09. seleciona planilha "BASE"
10. loop para início, porém vai copiar a célula A3 (quando uma célula da sequência de A2, A3, A4 estiver em branco parar o procedimento de loop)

 

 

Conto com a ajuda de vocês! 
Desde já, muito obrigado!

adicionado 40 minutos depois

Até o momento consegui desenvolver a seguinte solução.

Mas está bem incompleta em relação ao que eu preciso.

Sub IMPRESSAO_AUT()
'
' PXTR Macro
' Imprimir PXTR Automaticamente.
'
' Atalho do teclado: Ctrl+l
'
    Sheets("BASE").Select
    Range("A2").Select
    Selection.Copy
    Sheets("PROPOSTA").Select
    Range("E7").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True, _
        IgnorePrintAreas:=False
    Sheets("BASE").Select
    Rows("2:2").Select
    Selection.Delete Shift:=xlUp
    Sheets("PROPOSTA").Select
End Sub

 

Será que alguém consegue me ajudar com essa missão, por favor! 
muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu entendi isso atende sua necessidade

 

Sub IMPRESSAO_AUT()

Dim WB As Worksheet
Dim WP As Worksheet
Dim Caminho As String
Dim Nome As String
Dim WBLinha As Long

Set WB = Sheets("BASE")
Set WP = Sheets("PROPOSTA")
    WBLinha = 2
    Caminho = "Informe aqui o caminho do arquivo"
   

Nome = WP.Range("X7").Value
        
    Do While WB.Cells(WBLinha, 1).Value <> ""
    
        WP.Range("E7").Value = WB.Cells(WBLinha, 1).Value
        WP.PrintOut COPIES:=2
    
    ChDir Caminho
    
        WP.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Caminho & Nome & ".pdf"

        WBLinha = WBLinha + 1
    
    Loop

End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opaaa!!! Você entendeu perfeitamente! 

 

Só tem mais dois probleminhas para resolver, no momento da colagem da célula da planilha "base" na planilha "proposta"!

 

90% das células da coluna A iniciam pelo número zero. No momento da colagem na planilha "proposta" o número zero está sumindo. Isso faz perder a referência para identificar os outros campos da planilha.


O segundo problema é que na hora de salvar o nome do arquivo não aparece e é necessário digitar para todos os arquivos que vão ser salvos. Tentei substituir a célula X7 pela célula AK7 para testar, porém o erro persiste. Não aparece o valor da célula no momento de salvar o arquivo


Dá pra me ajudar com mais essas duas? :) 
preciso de um "colar valores" ao invés de "colar"

e que o o nome do arquivo seja preenchido automaticamente

Muito obrigado!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos la entao!!

 

O 0 na frente basta você formatar a celula de destino como texto. no caso a celula E7 da planilha proposta.

 

Qto ao nome do arquivo é so você alterar a variavel nome

 Nome = WP.Range("X7").Value

Faça as devidas alterações o nome do arquivo sera o que você estiver na celula X7 ou na celula que você indicar.

Se ao invés do valor que estiver em X7 você quiser o valor de AK7 é so fazer assim:

 

Nome = WP.Range("AK7").Value

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 horas atrás, CasaDoHardware disse:

Vamos la entao!!

 

O 0 na frente basta você formatar a celula de destino como texto. no caso a celula E7 da planilha proposta.

 

Qto ao nome do arquivo é so você alterar a variavel nome

 Nome = WP.Range("X7").Value

Faça as devidas alterações o nome do arquivo sera o que você estiver na celula X7 ou na celula que você indicar.

Se ao invés do valor que estiver em X7 você quiser o valor de AK7 é so fazer assim:

 

Nome = WP.Range("AK7").Value

 

 

Casa do Hardware 

 

Eu passei a manhã inteira estudando o teu código pra entender bem direitinho! :)

Fiz a alteração no formato e deu super certo.

 

Na hora de fazer a alteração na célula também deu certo! 
Porém, quando ele salva o arquivo em pdf ele salva o arquivo com um único nome.

 

Por exemplo, AK7 = "proposta para projeto - "&E7

no nosso código o valor de E7 é alterado constantemente

e o nome que o arquivo que é salvo sempre fica "proposta de projeto 0009990"

 

E ao final da execução da macro só tem um arquivo no caminho com o nome: "proposta de projeto 0009990.pdf"

 

E fiz os testes acompanhando pelo F8, vi que ele salva os arquivos com informações diferentes, porém com o mesmo nome. Daí vai substituindo um arquivo pelo outro.

 

Só falta ajustar isso agora

adicionado 17 minutos depois

Casa do Hardware! 

 

Deu certinho!!! 

Consegui, consegui! Foi só passar a string Nome para dentro do loop! O código final ficou assim: 

 

Sub IMPRESSAO_AUT()

Dim WB As Worksheet
Dim WP As Worksheet
Dim Caminho As String
Dim Nome As String
Dim WBLinha As Long

Set WB = Sheets("BASE")
Set WP = Sheets("FORMULÁRIO")

    WBLinha = 2
    Caminho = "C:\Users\joaon\Desktop\pdf\"
   
        
    Do While WB.Cells(WBLinha, 1).Value <> ""
    
      
        WP.Range("E7").Value(Text) = WB.Cells(WBLinha, 1).Value
        WP.PrintOut COPIES:=2
        Nome = WP.Range("AK6").Value(Text)
    
    ChDir Caminho
    
    
    WP.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Caminho & Nome & ".pdf"

        WBLinha = WBLinha + 1
    
    Loop

End Sub
 

 

Meus sinceros agradecimentos, Casa do Hardware! 
Sem você teria sido impossível! \o/

Agora vou finalizar o tópico! 

 

Mais uma vez, muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×