Ir para conteúdo
Fórum Script Brasil
  • 0

Importar dados de arquivo externo


Jéssica De Moura Lima

Pergunta

Boa noite!

Entendo muito pouco de VBA e gostaria de importar dados de um arquivo externo, mas o meu código não está funcionando.

 

Sub Importar()

 

Dim Abrir As String
Dim Importarwb As Workbook
Dim Importarguia As Worksheet

 

Abrir = Application.GetOpenFilename( _
FileFilter:="Arquivo do Excel (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm", Title:="Escolha o arquivo a ser importado")

Set Importarwb = Application.Workbooks.Open( _
Filename:=Abrir, Password:="123")

Set Importarguia = Importarwb.Worksheets(1)

Application.ScreenUpdating = False

'Desbloquear guia e pasta de trabalho
ThisWorkbook.Unprotect ("123")
ActiveSheet.Unprotect ("123")

'Copiar dados
Importarguia.Copy

'Limpar guia "Relatório" e colar dados

With Worksheets("Relatório")
    .Visible = True
    .Range(.Cells(1, 1), .Cells(10000, 90)).ClearContents
    .Paste
    .Visible = False
    
End With

'Fechar arquivo externo
Importarwb.Close

'Bloquear guia e pasta de trabalho
ThisWorkbook.Protect Password:="123", Structure:=True, Windows:=False

Sheets("Base de Contratos").Protect Password:="123", _
    DrawingObjects:=True, _
    Contents:=True, _
    Scenarios:=True, _
    UserInterfaceOnly:=True, _
    AllowFormattingCells:=False, _
    AllowFormattingColumns:=False, _
    AllowFormattingRows:=True, _

    AllowInsertingColumns:=False, _
    AllowInsertingRows:=True, _
    AllowInsertingHyperlinks:=False, _
    AllowDeletingColumns:=False, _
    AllowDeletingRows:=True, _
    AllowSorting:=False, _
    AllowFiltering:=True, _
    AllowUsingPivotTables:=False

Application.ScreenUpdating = True

MsgBox "Relatório importado com sucesso!"

End Sub

 

Alguém poderia me ajudar?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Fiz as alterações,mas não tive como testar,

Veja se é isso e de retorno por favor.

Sub Importar()
    Dim Abrir As String
    Dim Importarwb As Workbook
    Dim Importarguia As Worksheet
    Dim xlObj As Object
    
    On Error GoTo trataErro
    
    Set xlObj = CreateObject("excel.application")
    
    
    Abrir = Application.GetOpenFilename( _
    FileFilter:="Arquivo do Excel (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm", Title:="Escolha o arquivo a ser importado")
    
    Set Importarwb = xlObj.Workbooks.Open( _
    Filename:=Abrir, Password:="123")
    
    Set Importarguia = Importarwb.Worksheets(1)
    
    Application.ScreenUpdating = False
    
    'Desbloquear guia e pasta de trabalho
    ThisWorkbook.Unprotect ("123")
    ActiveSheet.Unprotect ("123")
    
    'Copiar dados
    Importarguia.UsedRange.Copy
    
    'Limpar guia "Relatório" e colar dados
    ThisWorkbook.Worksheets("Relatório").Visible = True
    
    With Worksheets("Relatório")
        .Activate
        .Range(.Cells(1, 1), .Cells(10000, 90)).ClearContents
        .Cells(1, 1).Select
        .Paste
        .Visible = False
    End With
    
    Importarwb.Application.CutCopyMode = False
    
    
    'Fechar arquivo externo
    If Not Importarwb Is Nothing Then
        Importarwb.Close False
        Set Importarwb = Nothing
        Set xlObj = Nothing
    End If
    
    'Bloquear guia e pasta de trabalho
    ThisWorkbook.Protect Password:="123", Structure:=True, Windows:=False
    
    Sheets("Base de Contratos").Protect Password:="123", _
    DrawingObjects:=True, _
    Contents:=True, _
    Scenarios:=True, _
    UserInterfaceOnly:=True, _
    AllowFormattingCells:=False, _
    AllowFormattingColumns:=False, _
    AllowFormattingRows:=True, _
    AllowInsertingColumns:=False, _
    AllowInsertingRows:=True, _
    AllowInsertingHyperlinks:=False, _
    AllowDeletingColumns:=False, _
    AllowDeletingRows:=True, _
    AllowSorting:=False, _
    AllowFiltering:=True, _
    AllowUsingPivotTables:=False
    
trataErro:
    Application.ScreenUpdating = True
    If Not Importarwb Is Nothing Then
        Importarwb.Close False
        Set Importarwb = Nothing
        Set xlObj = Nothing
    End If
    
    
    MsgBox "Relatório importado com sucesso!"
    
End Sub

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...