Arquivo

Posts Tagged ‘Copiar Com Vba’

VBA Copiar colar arquivos diferentes

 

copiar colar vba

Vocês votaram na enquete aqui do site excel e vba e em segundo lugar ficou o assunto VBA Copiar colar arquivos diferentes.
A maneira que demonstro é uma mais avançada e também com menos código.


Porém se você não gostar ou achar complicado aqui mesmo no site há outras maneiras (passo1 e passo2)que envolvem copiar célula por célula com um loop.

Você que escolhe a melhor maneira para trabalhar excel com vba.

 

1 – Vamos ao codigo VBA Copiar Colar arquivos diferentes:

________________________________________________________

 

 

Sub COPIAR_COLAR_ARQUIVO_DIFERENTES()
'Declarações

Dim appExcel As Excel.Application
Dim wb As Excel.Workbook

'A Aplicação Excel é criada aqui:

Set appExcel = CreateObject("Excel.Application")

'A linha abaixo é importante: eu estou dizendo que todo o processo seja invisível.
'Talvez para testes seja importante deixar como True e assim acompanhar o processo

appExcel.Visible = False

'Note que, na linha abaixo, foi adicionado um Workbook (um plan)
'E esse workboook fica nomeado como "wb"

Set wb = appExcel.Workbooks.Add

'Agora para simplificar o processo, também vou gravar o nome da planilha origem

Set oldPlan = Workbooks("planilha_antiga.xlsm").Worksheets("Plan1")

'Então copio todos os dados da tabela

oldPlan.Range("A2").CurrentRegion.Copy

'Na linha abaixo eu colo os dados na nova planilha (lembre-se do "wb")

wb.Worksheets("Plan1").Range("A1").PasteSpecial xlPasteValues

'Nas linhas abaixo eu salvo a planilha no mesmo diretorio que a planilha antiga

diretorio = ThisWorkbook.Path & "\"
nome = "exemplo.xls"
appExcel.DisplayAlerts = False
wb.SaveAs Filename:=diretorio & nome, FileFormat:=xlNormal

'Agora eu elimino o processo aberto do excel

appExcel.Quit

'E finalizado as declarações

Set wb = Nothing
Set appExcel = Nothing

End Sub

 

2 – Vídeo Demonstrativo

 

 

Campos Nomeados Com VBA

Esta semana estava pensando sobre o que escrever e por coincidência ou não houve uma dúvida no meu trabalho sobre campos nomeados e  logo relacionei ao que escrever.
Confesso que eu uso com pouca frequência, mas colegas meus usam com mais constantemente e eu acho bem interessante!

Nós vimos no post Usando CurrentRegion como selecionar uma tabela apenas com um comando e com campos nomeados também podemos fazer isso.

A diferença é que usamos campos nomeados quando a tabela de dados são de valores fixos, ou seja não serão adicionados linhas ou colunas.
A vantagem? Agiliza e simplifica seu código.

Imagine que eu tenha uma tabela de carros e sempre uso essa tabela copiando e colando em outra pasta de trabalho (guia).

Campos Nomeados

Ao invés de usar o range, ou saber a ultima linha e ultima coluna, eu posso usar uma referencia ao nome que foi dado a tabela de carros.
Também podemos pintar sempre uma tabela nomeada  independente dos dados e ainda usar campos nomeados em fórmulas.

Exemplos:

________________________________________________________
Usar em fórmulas

Produto = dados1 * qtde  '(imaginando que "dados1" é nome de G1 e  "qtde" é o nome de K1)

________________________________________________________
Selecionar uma tabela

Sheets(1).[tb_carros].Select

________________________________________________________
Para inserir nome à uma tabela via código

ActiveWorkbook.Names.Add Name:="Qlqr_Nome", RefersTo:=Worksheets("Plan1").Range("A1:A10")

Para inserir nome via código no modo invisível

ThisWorkbook.Names.Add Name:="Qlqr_Nome", _
RefersTo:=Worksheets("Plan1").Range("C1:C10"), Visible:=False

________________________________________________________
Para excluir um nome de referencia via código:

ActiveWorkbook.Names("carros").Delete

________________________________________________________

Segue Demonstração Abaixo:

 

  Obs.: Ao copiar os códigos do site e colar direto no excel substitua  “  e ” por  ” (aspas duplas) 

Usando o CurrentRegion

 

Olá Pessoal
Esse post na verdade se encaixa mais na Página de Dicas Rápidas, mas vale ser comentada…
Em resumo através do CurrentRegion você pode selecionar os dados de uma tabela sem se preocupar com a última linha.

 

tabela_dados

 

Sempre haverá algum caso que você terá que selecionar uma área de dados, copiar e colar em outro lugar ou trabalhar esses dados.

Se esses dados sempre aumentarem… Então para automatizar você sempre irá precisar saber a última linha (veja mais em Dicas rápidas) e se aumentar o número de Colunas então também irá precisar saber a Ultima Coluna

 

Entretanto existe forma mais simples e rápida de selecionar essa tabela, usando o CurrentRegion.

Segue códigos sobre currentRegion

 

Sub SelecionarTabela()
 
    Range("A2").CurrentRegion.Copy
    Selection.Copy
 
End Sub

 

Para o código acima funcionar e pegar a tabela toda você deve usar o range em qualquer célula que pertença a essa tabela
Exemplo: na imagem acima poderia usar a célula C5, B3 ou A1
De novo na página de Dicas rápidas você pode simplificar mais ainda o código acima:

 

Sub SelecionarTabela2()

'No código abaixo em 1 linha estou selecionando toda tabela, copiando os dados e colando onde quiser
   Range("A2").CurrentRegion.Copy Destination:=Range("B6:C10")

End Sub

 

_____________________________________________________
Segue vídeo para exemplificar:

 

 

Copiar e Colar

Pra quem praticou, ou não,  percebeu mais alguns comandos que servem para o bom uso

1- Copiar um valor de uma célula e colar em outra:

cells(1, 1).select–> selecione a célula que você deseja copiar
Selection.Copy–> código para copiar a célula selecionada
cells(2,2).select–> selecione a célula onde deseja colar
ActiveSheet.Paste –> código para colar
Application.CutCopyMode = False–> código para tirar a seleção de cópia (ganho na memória da máquina)

1 – Agora que tal criar um botão para apagar as células? Vamos lá crie e veja o código!

2 – Mais um código pra se divertir, descubra como deletar colunas e linhas!

Bem, se você conseguiu fazer os dois exercícios acima e entendeu como copiar e colar valores de  células,  deve estar se divertindo com as planilhas do trabalho!

É importante que você consiga nestes passos iniciais, para irmos mais adiante!  Se não conseguiu pode usar o comentário! ^^  que eu ajudo!