VBA Copiar colar arquivos diferentes
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).
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
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
Segue códigos sobre currentRegion
Sub SelecionarTabela() Range("A2").CurrentRegion.Copy Selection.Copy End Sub
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
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!