Notifications
Clear all

Importar Planilhas independente do número da importada

3 Posts
2 Usuários
0 Reactions
956 Visualizações
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
Topic starter
 

Bom dia, pessoal!

Consegui um código para importar uma planilha dentro da outra. Está funcionando perfeitamente. No entanto, sempre preciso ficar renomeando a planilha que será importada para "Banco_Dados". Existe alguma forma de que eu consiga importar a planilha independentemente do nome que ela tem?

segue o código:

Sub Importar()

On Error GoTo Finalizar

  Dim wbMatriz As Workbook, wbBD As Workbook
  Dim wssBD As Sheets
  Application.ScreenUpdating = False
    arquivoparaabrir = Application.GetOpenFilename _
(Title:="Selecione o arquivo para abrir", _
filefilter:="Excel Files *.xlsm* (*.xls*),")
If arquivoparaabrir = False Then
MsgBox "Nenhum Arquivo Selecionado.", vbExclamation, "Interrompido!"
Exit Sub
Else
Workbooks.Open Filename:=arquivoparaabrir
End If
    Set wbMatriz = ThisWorkbook
    Set wbBD = Workbooks("Banco_Dados.xlsx")
    Set wssBD = wbBD.Sheets
     
  wssBD.Copy After:=wbMatriz.Sheets(wbMatriz.Sheets.Count)
ActiveSheet.Name = "Matriz"
Sheets("Menu").Select

Application.ScreenUpdating = True
Application.Workbooks("Banco_Dados").Close
Exit Sub

Finalizar:
Application.DisplayAlerts = False
Sheets("Planilha1").Delete
MsgBox "A planilha já foi importada!", vbCritical, "ATENÇÃO!"
Application.DisplayAlerts = True
Sheets("Menu").Select
End Sub

Obrigado!

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 20/04/2017 6:39 am
(@alminen)
Posts: 77
Trusted Member
 

O motivo que mais faz sentido é o fato de estar referenciada especificamente um arquivo com o nome "Banco_Dados". Fiz algumas alterações. Teste e retorne aqui!

Sub Importar()

On Error GoTo Finalizar

  Dim wbMatriz As Workbook, wbBD As Workbook
  Dim wssBD As Sheets
  Dim bslash, nomearquivo as String
  Application.ScreenUpdating = False
    arquivoparaabrir = Application.GetOpenFilename _
(Title:="Selecione o arquivo para abrir", _
filefilter:="Excel Files *.xlsm* (*.xls*),")
bslash = InStrRev(arquivoparaabrir, "")
nomearquivo = Mid(arquivoparaabrir, bslash + 1)
If arquivoparaabrir = False Then
MsgBox "Nenhum Arquivo Selecionado.", vbExclamation, "Interrompido!"
Exit Sub
Else
Workbooks.Open Filename:=arquivoparaabrir
End If
    Set wbMatriz = ThisWorkbook
    Set wbBD = Workbooks("nomearquivo")
    Set wssBD = wbBD.Sheets
     
  wssBD.Copy After:=wbMatriz.Sheets(wbMatriz.Sheets.Count)
ActiveSheet.Name = "Matriz"
Sheets("Menu").Select

Application.ScreenUpdating = True
Application.Workbooks("Banco_Dados").Close
Exit Sub

Finalizar:
Application.DisplayAlerts = False
Sheets("Planilha1").Delete
MsgBox "A planilha já foi importada!", vbCritical, "ATENÇÃO!"
Application.DisplayAlerts = True
Sheets("Menu").Select
End Sub

 
Postado : 20/04/2017 9:43 am
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
Topic starter
 

Muito obrigado!
Deu certo.
Só uma observação: na variável Workbooks("nomearquivo"), não se coloca "aspas". Fica Workbooks(nomearquivo)

Apenas esclarecendo pra quem for precisar usar.

Vlw dms

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 20/04/2017 1:38 pm