Usuário com melhor resposta
Ajuda com VBA

Pergunta
-
Bom glr e o seguinte eu tenho um site de excel (tabelas de futebol, Esportes... Coisas do genero) porem eu queria avançar mais, ir para o vba e acabou dando certo no começo mas logo surgiu um erro que esta me infernizando.
Eu basicamente quero copiar uma panilha (apenas uma especifica da pasta de trabalho) e colar em outra
E eu ñ consigo finalizar essa formula:
Sub Exemplo()
Dim Origem As Workbook
Dim Destino As Workbook
Set Origem = Workbooks.Open("D:\Documentos\Tabelas\Especiais\IDPR - Cópia")
Set Destino = Workbooks.Open("D:\Documentos\Tabelas\Especiais\2")
Origem.Sheets("mata-mata 127").Activate
Activesheets.Cells ???????????
Cells.Select
Selection.Copy
Destino.Sheets("Plan3").Paste
Origem.Close SaveChanges:=False
Destino.Close SaveChanges:=True
End Sub
Respostas
-
Bom dia, IuryDavila
Analisei o seu código e vi que o raciocínio está certinho por um único detalhe. Imagino que você está trabalhando com 3 arquivos sendo o primeiro aonde está a macro, o segundo o arquivo de origem e o terceiro o destino. Neste caso quando você informa Activesheets.Cells estará fazendo referência as células da planilha aonde a macro está rodando. Sempre que trabalhar com dois arquivos garanta que o código está fazendo referência ao arquivo correto. Segue o código modificado (substitua os nomes dos arquivos e planilhas como achar melhor):
Sub Exemplo() Dim Origem As Workbook Dim Destino As Workbook Set Origem = Workbooks.Open("C:\Temp\planilha_origem.xlsx") Set Destino = Workbooks.Open("C:\Temp\planilha_destino.xlsx") Origem.Sheets("Necessidade de Caixa").Activate Origem.ActiveSheet.Cells.Select 'A linha abaixo irá garantir que a planilha ativa para a cópia é a de origem Origem.Activate Selection.Copy Destino.Sheets("Plan1").Activate Destino.ActiveSheet.Range("A1").Select 'A linha abaixo irá garantir que os dados sejam colados no destino correto Destino.Activate Destino.ActiveSheet.Paste 'Mais de 101 linhas copiadas mostra uma mensagem antes de salvar 'O código abaixo sai do modo de cópia para ignorar esta mensagem Origem.Application.CutCopyMode = False Origem.Close SaveChanges:=False Destino.Close SaveChanges:=True End Sub
Espero que isso resolva.
Grande abraço
Bráulio Figueiredo
braulio@braulioti.com.br - http://www.braulioti.com.br
- Sugerido como Resposta Bráulio Figueiredo Pinto domingo, 10 de agosto de 2014 22:03
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sexta-feira, 5 de setembro de 2014 15:45
-
Simplificando um pouco:
Sub Exemplo() Dim Origem As Workbook Dim Destino As Workbook Set Origem = Workbooks.Open("C:\Temp\planilha_origem.xlsx") Set Destino = Workbooks.Open("C:\Temp\planilha_destino.xlsx") Origem.Worksheets("Necessidade de Caixa").Cells.Copy _ Destination:=Destino.Worksheets("Plan1").Range("A1") Application.CutCopyMode = False Origem.Close SaveChanges:=False Destino.Close SaveChanges:=True End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Sugerido como Resposta Bráulio Figueiredo Pinto quarta-feira, 13 de agosto de 2014 01:53
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sexta-feira, 5 de setembro de 2014 15:45
Todas as Respostas
-
Bom dia, IuryDavila
Analisei o seu código e vi que o raciocínio está certinho por um único detalhe. Imagino que você está trabalhando com 3 arquivos sendo o primeiro aonde está a macro, o segundo o arquivo de origem e o terceiro o destino. Neste caso quando você informa Activesheets.Cells estará fazendo referência as células da planilha aonde a macro está rodando. Sempre que trabalhar com dois arquivos garanta que o código está fazendo referência ao arquivo correto. Segue o código modificado (substitua os nomes dos arquivos e planilhas como achar melhor):
Sub Exemplo() Dim Origem As Workbook Dim Destino As Workbook Set Origem = Workbooks.Open("C:\Temp\planilha_origem.xlsx") Set Destino = Workbooks.Open("C:\Temp\planilha_destino.xlsx") Origem.Sheets("Necessidade de Caixa").Activate Origem.ActiveSheet.Cells.Select 'A linha abaixo irá garantir que a planilha ativa para a cópia é a de origem Origem.Activate Selection.Copy Destino.Sheets("Plan1").Activate Destino.ActiveSheet.Range("A1").Select 'A linha abaixo irá garantir que os dados sejam colados no destino correto Destino.Activate Destino.ActiveSheet.Paste 'Mais de 101 linhas copiadas mostra uma mensagem antes de salvar 'O código abaixo sai do modo de cópia para ignorar esta mensagem Origem.Application.CutCopyMode = False Origem.Close SaveChanges:=False Destino.Close SaveChanges:=True End Sub
Espero que isso resolva.
Grande abraço
Bráulio Figueiredo
braulio@braulioti.com.br - http://www.braulioti.com.br
- Sugerido como Resposta Bráulio Figueiredo Pinto domingo, 10 de agosto de 2014 22:03
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sexta-feira, 5 de setembro de 2014 15:45
-
-
-
Simplificando um pouco:
Sub Exemplo() Dim Origem As Workbook Dim Destino As Workbook Set Origem = Workbooks.Open("C:\Temp\planilha_origem.xlsx") Set Destino = Workbooks.Open("C:\Temp\planilha_destino.xlsx") Origem.Worksheets("Necessidade de Caixa").Cells.Copy _ Destination:=Destino.Worksheets("Plan1").Range("A1") Application.CutCopyMode = False Origem.Close SaveChanges:=False Destino.Close SaveChanges:=True End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Sugerido como Resposta Bráulio Figueiredo Pinto quarta-feira, 13 de agosto de 2014 01:53
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sexta-feira, 5 de setembro de 2014 15:45