Notifications
Clear all

Automatizar a importação de dados excel

6 Posts
2 Usuários
0 Reactions
1,212 Visualizações
(@jewerton)
Posts: 0
New Member
Topic starter
 

Olá pessoal.

Sou novo no mundo do VBA e gostaria da ajuda dos colegas.

Estou precisando de automatizar a importação de dados (valores) de um arquivo externo de texto para uma planilha no excel.
As necessidades são:

- Preciso selecionar o arquivo através da caixa de seleção do windows, pois os arquivos não possuem nome padrão;
- Os valores a serem copiados estão no intervalo C2:J145, ou seja, deve ser desprezado os valores das colunas A e B e da linha 1, pois se tratam dos títulos. Obs.: No arquivo contendo os dados sempre existirá o mesmo número de colunas mas com tamanhos diferentes e separados por ponto e vírgula.
- Os valores devem ser copiados na planilha a partir da célula ativa.
- Apresentar mensagem caso nenhum arquivo for selecionado.

Seguem arquivos anexo.

Desde já agradeço à ajuda.

 
Postado : 25/08/2017 5:11 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia jewerton

Seja bem-vindo ao fórum!

Como você é novato, para facilitar a tua participação, sugiro tomar conhecimento do conteúdo dos links abaixo:
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

[]s
Patropi - Moderador

 
Postado : 26/08/2017 7:03 am
(@jewerton)
Posts: 0
New Member
Topic starter
 

Patropi

Bom dia! Grato pelas informações.

 
Postado : 26/08/2017 7:15 am
(@jewerton)
Posts: 0
New Member
Topic starter
 

Com algumas pesquisas consegui chegar a esse código, porém, estou com alguns ajustes pra fazer.
A primeira seria no endereço a ser copiado, pois percebo que está atribuído à um endereço fixo e preciso que o local onde será colado seja definido pela planilha ativa e célula ativa.
E a segunda é retirar a mensagem de Erro de execução da macro quando interrompo a seleção do arquivo.

Function Importar()
        
    Dim Pasta As String
    Dim Arquivo As String
    
    Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
    With fDialog
        .AllowMultiSelect = True
                
        
        .Filters.Clear
        .Filters.Add "Todos os Arquivos", "*.*"
    
        
        If .Show = True Then
            Arquivo = .SelectedItems.Item(1)
        Else
            MsgBox "Você clicou em cancelar"
          
        End If
        
    End With
    

    AbrirArquivo = Arquivo

    Workbooks.OpenText Filename:=Arquivo, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
        :=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:= _
        True, Comma:=False, Space:=False, Other:=True, OtherChar:="|", _
        FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array _
        (6, 1), Array(7, 1), Array(8, 1), Array(9, 1)), TrailingMinusNumbers:=True
    Range("C2:I145").Select
    Selection.Copy
    Sheets.Select
    
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("C7").Select
    Windows("DADOS_METEO_PAR.txt").Activate
    Application.CutCopyMode = False
    ActiveWindow.Close False
   
    MsgBox "Importação Concluída"
    
    Close #1
        
    End Function
 
Postado : 29/08/2017 12:44 pm
(@jewerton)
Posts: 0
New Member
Topic starter
 

Alguém sabe me dizer por qual linha de comando posso substituir Windows("DADOS_METEO_PAR.txt").Activate pra que seja colado em uma planilha que não terá um nome fixo?

 
Postado : 29/08/2017 5:38 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Comandos VBA para uma Caixa para Abrir/Selecionar arquivos:

Public Function OpenFileDialog() As String
    Dim Filter As String, Title As String
    Dim FilterIndex As Integer
    Dim Filename As Variant
    ' Define o filtro de procura dos arquivos
    Filter = "Arquivos Wave (*.wav),*.wav,"
    ' O filtro padrão é *.*
    FilterIndex = 3
    ' Define o Título (Caption) da Tela
    Title = "Selecione um arquivo"
    ' Define o disco de procura
    ChDrive ("C")
    ChDir ("C:")
    With Application
        ' Abre a caixa de diálogo para seleção do arquivo com os parâmetros
        Filename = .GetOpenFilename(Filter, FilterIndex, Title)
        ' Reseta o Path
        ChDrive (Left(.DefaultFilePath, 1))
        ChDir (.DefaultFilePath)
    End With
    ' Abandona ao Cancelar
    If Filename = False Then
        MsgBox "Nenhum arquivo foi selecionado." ' Mensagem para caixa de Mensagem caso nao seja selecionado nenhum arquivo.
        Exit Function
    End If
    ' Retorna o caminho do arquivo
    OpenFileDialog = Filename
End Function

At;
Danilo.

 
Postado : 30/08/2017 2:27 pm