Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Importar dados de uma planilha para outra

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
fabianolordelo
Colaborador
Colaborador
Mensagens: 12
Registrado em: Ter Jun 24, 2014 9:03 am

Importar dados de uma planilha para outra

Mensagem por fabianolordelo »

Boa tarde.

Estou precisando de uma macro para importar os dados de uma planilha para outra que estejam salvas na mesma pasta.

Exemplo: Sempre que eu clicar no botão "importar dados" da planilha "DOCUMENTOS" eu consiga pesquisar, achar a planilha que quero importar e ao clicar nela, seus dados passassem para a planilha "DOCUMENTOS"

Poderiam me ajudar?


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Fabio Trindade
Manda bem
Manda bem
Mensagens: 161
Registrado em: Dom Abr 24, 2011 4:07 pm

Re: Importar dados de uma planilha para outra

Mensagem por Fabio Trindade »

Boa noite, fabianolordelo

Da uma olhada nesse código.

Código: Selecionar todos

Private Sub cmdImportExcel_Click()
' import excel file

Dim importFileName As Variant
Dim importWorkbook As Workbook
Dim importSheet As Worksheet
Dim importRange As Range
       
	' show open file dialog
	importFileName = Application.GetOpenFilename(FileFilter:="Arquivo do Excel (*.xls; *.xlsx), *.xls;*.xlsx", Title:="Escolha um arquivo do Excel")
	
	' if user pressed cancel buton: exit
	If importFileName = False Then Exit Sub
	
	Application.ScreenUpdating = False
	
		 ' if user selected a excel file, open it
		 Set importWorkbook = Application.Workbooks.Open(importFileName)
		 Set importSheet = importWorkbook.Worksheets(1)

		 ' copy from import sheet
		 Set importRange = importSheet.Range( _
			 importSheet.Range("A2"), _
			 importSheet.Range("I" & importSheet.Rows.Count).End(xlUp) _
		 )
		 
		 importRange.Copy
		 
		 ' paste into Data sheet
		 SheetData.Range("A1").PasteSpecial xlValues
		 SheetData.Range("A1").PasteSpecial xlPasteFormats
		 Application.CutCopyMode = False
 
 importWorkbook.Close
       
End Sub


fcunha
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Qui Dez 06, 2018 6:14 am

Re: Importar dados de uma planilha para outra

Mensagem por fcunha »

Olá, coloquei esse código acima na minha planilha, no entanto, dá erro 424 Object Required na linha DataSheet...

Alguém poderia ajudar? Sei que esse post é muito antigo, então vou ficar na espectativa de alguém ainda vir ler por aqui, obrigado.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Importar dados de uma planilha para outra

Mensagem por Reinaldo »

Dificil auxiliar pela info passada. Não localizei na rotina qualquer linha com DataSheet..
Agora se refere-se ao trecho

Código: Selecionar todos

...' paste into Data sheet
		 SheetData.Range("A1").PasteSpecial xlValues
		 SheetData.Range("A1").PasteSpecial xlPasteFormats...
a referencia SheetData.Range deve ser alterada de acordo com o nome de sua planilha "recebedora" dos dados


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


fcunha
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Qui Dez 06, 2018 6:14 am

Re: Importar dados de uma planilha para outra

Mensagem por fcunha »

Reinaldo escreveu: Qui Dez 06, 2018 7:00 am Dificil auxiliar pela info passada. Não localizei na rotina qualquer linha com DataSheet..
Agora se refere-se ao trecho

Código: Selecionar todos

...' paste into Data sheet
		 SheetData.Range("A1").PasteSpecial xlValues
		 SheetData.Range("A1").PasteSpecial xlPasteFormats...
a referencia SheetData.Range deve ser alterada de acordo com o nome de sua planilha "recebedora" dos dados
Reinaldo, obrigado pelo seu comentário. Eu tentei colocar o nome da planilha, mas aí aparece um erro 9 dizendo: Subscript Out of Range.

O código que estou usando é esse (tive que tirar de Private Sub porque não estava sabendo como fazer isso funcionar):

Código: Selecionar todos

Sub cmdImportFlatALL_Click()
' import excel file

Dim importFileName As Variant
Dim importWorkbook As Workbook
Dim importSheet As Worksheet
Dim importRange As Range
       
' show open file dialog
importFileName = Application.GetOpenFilename(FileFilter:="Arquivo do Excel (*.xls; *.xlsx; *.xlsb), *.xls;*.xlsx;*.xlsb", Title:="Escolha um arquivo do Excel")

' if user pressed cancel buton: exit
If importFileName = False Then Exit Sub
Application.ScreenUpdating = False
' if user selected a excel file, open it
Set importWorkbook = Application.Workbooks.Open(importFileName)
Set importSheet = importWorkbook.Worksheets(3)
' copy from import sheet
Set importRange = importSheet.Range(importSheet.Range("A1"), importSheet.Range("AK" & importSheet.Rows.Count).End(xlUp))
importRange.Copy
 ' paste into Data sheet

    Sheets("EUR - Flat-ALL").Range("C10").PasteSpecial xlValues
    Sheets("EUR - Flat-ALL").Range("C10").PasteSpecial xlPasteFormats
Application.CutCopyMode = False
importWorkbook.Close
End Sub
Mas o que na verdade eu queria era que ao invés de eu ter que especificar exatamente qual planilha é pra ele colar, queria que ele utilizasse a planilha ativa. Até tentei usar Active.Sheets (ou qualquer coisa similar isso que encontrei pelo forum), mas também não funcionou.

Obrigado de antemão pela ajuda.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Importar dados de uma planilha para outra

Mensagem por Reinaldo »

Experimente assim:

Código: Selecionar todos

Sub cmdImportFlatALL_Click()
' import excel file
Dim importFileName As Variant
Dim importWorkbook As Workbook
Dim importSheet As Worksheet
Dim importRange As Range
Dim wb As Workbook
Dim sh As Worksheet
'Determina o arquivo onde sera colado os dados
Set wb = ThisWorkbook
Set sh = wb.ActiveSheet
' show open file dialog
importFileName = Application.GetOpenFilename(FileFilter:="Arquivo do Excel (*.xls; *.xlsx; *.xlsb), *.xls;*.xlsx;*.xlsb", Title:="Escolha um arquivo do Excel")

' if user pressed cancel buton: exit
If importFileName = False Then Exit Sub
Application.ScreenUpdating = False
' if user selected a excel file, open it
Set importWorkbook = Application.Workbooks.Open(importFileName)
Set importSheet = importWorkbook.Worksheets(3)
' copy from import sheet
Set importRange = importSheet.Range(importSheet.Range("A1"), importSheet.Range("AK" & importSheet.Rows.Count).End(xlUp))
MsgBox importRange.Address
importRange.Copy
 ' paste into Data sheet
wb.Activate
sh.Range("C10").PasteSpecial xlValues
sh.Range("C10").PasteSpecial xlPasteFormats
Application.CutCopyMode = False
importWorkbook.Close
End Sub


fcunha
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Qui Dez 06, 2018 6:14 am

Re: Importar dados de uma planilha para outra

Mensagem por fcunha »

Reinaldo escreveu: Qui Dez 13, 2018 7:32 am Experimente assim:
...
Reinaldo, muito obrigado mesmo! Ajudou demais!!!


lnunes.eng
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Qui Abr 11, 2019 2:03 pm

Re: Importar dados de uma planilha para outra

Mensagem por lnunes.eng »

boa tarde.

estou tentando usar este mesmo código, e está dando erro de subscript out of range na linha:
Set importSheet = importWorkbook.Worksheets(3)

a diferença é que vinculei o script a um botão, e o conteúdo do arquivo que eu escolhi vai para uma outra sheet, ou seja, possuo multiplas sheets dentro do meu arquivo excel.


CBPR
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Dom Abr 11, 2021 12:06 am

Re: Importar dados de uma planilha para outra

Mensagem por CBPR »

lnunes.eng escreveu: Qui Abr 11, 2019 2:06 pm boa tarde.

estou tentando usar este mesmo código, e está dando erro de subscript out of range na linha:
Set importSheet = importWorkbook.Worksheets(3)

a diferença é que vinculei o script a um botão, e o conteúdo do arquivo que eu escolhi vai para uma outra sheet, ou seja, possuo multiplas sheets dentro do meu arquivo excel.
-----
Utilize:
Set importSheet = importWorkbook.Worksheets(1)

Provavelmente dará certo.


anderson_brito2008
Acabou de chegar
Acabou de chegar
Mensagens: 8
Registrado em: Qui Jul 08, 2021 12:07 pm

Re: Importar dados de uma planilha para outra

Mensagem por anderson_brito2008 »

Bom dia! Reinaldo o no caso de importa dados entre tabelas da mesma planilha. Vc teria um codigo ?

A sutiação é a seguinte: Tenho um tabela dinamica e quero enviar os info para outra tabela planilha, mais que seja de forma automatica sem precisa criar algum botão.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder