none
Macro para importar txt para o excel RRS feed

  • Pergunta

  • Bom dia a todos!

    Estou precisando urgentemente de ajuda para criar uma macro que importe um arquivo txt para o excel e depois inserir linhas e colori-las. Abaixo segue o modelo que preciso, agradeço desde já.

    
    
    
    
    quarta-feira, 25 de fevereiro de 2015 15:07

Respostas

  • Você já experimentou abrir esse arquivo TXT pelo Excel?

    Assim que você tentar, abrirá um assistente e você poderá visualizar os dados de uma forma melhor.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quarta-feira, 25 de fevereiro de 2015 23:47
    Moderador

Todas as Respostas

  • Jônatas, cadê seu modelo?

    Antecipando, experimente gravar uma macro abrindo o arquivo e utilizar a ferramenta de separar colunas.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quarta-feira, 25 de fevereiro de 2015 16:53
    Moderador
  • 

    O Modelo seria basicamente assim:

    Matricula      Nome     Data/dia   entrada    saida  irregularidade  escala    escala  justificativa

    353535         xxx         xxxxx        xx          xx             xx             xx         xx         xxx

    

    353535         xxx         xxxxx        xx          xx             xx             xx         xx         xxx

    

    Linha em branco (cor azul)

    454565      xxx             xxxx         xx         xx              xx              xx        xx          xxx

    O modelo é basicamente esse. Desculpa, mas não deixaram colar a imagem da tabela que eu queria

    
    
    
    
    
    
    
    
    quarta-feira, 25 de fevereiro de 2015 17:06
  • Você já experimentou abrir esse arquivo TXT pelo Excel?

    Assim que você tentar, abrirá um assistente e você poderá visualizar os dados de uma forma melhor.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quarta-feira, 25 de fevereiro de 2015 23:47
    Moderador
  • sergio.bonin@hotmail.com

    Caro amigo, usei o gravador para importar e fiz algumas modificações.

    Salve seu arquivo em "C:\Work\Dados.txt"

    Salve como cst 

    O arquivo ficará assim:

    Matricula;Nome;Data/dia;entrada;Saida;irregularidade; escala;   escala; justificativa


    353535;xxx;xxxxx;xx;xx;xx;xx;xx;xxx;
    353536;xxx;xxxxx;xx;xx;xx;xx;xx;xxx;

    454565;xxx;xxxx;xx;xx;xx;xx;xx;xxx;

    Sub Importar()


    Dim cont As Byte


        With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\Work\Dados.txt", _
            Destination:=Range("$A$1"))
            .Name = "Dados"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 1252
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = True
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1, 1, 4, 1, 1, 1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With


    cont = Range("a1048576").End(xlUp).Row

    Range("a1048576").End(xlUp).Select

    Do While cont > 1

    If ActiveCell = "" Then

        Range(ActiveCell, ActiveCell.Offset(0, 9)).Select

        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.399975585192419
            .PatternTintAndShade = 0
        End With
    Else
    End If

    ActiveCell.Offset(-1, 0).Select
    cont = cont - 1

    Loop

        Range("A1").Select

    End Sub

                                
    • Editado Sergio Bonin quarta-feira, 16 de março de 2016 23:53
    quarta-feira, 16 de março de 2016 23:52
  • sergio.bonin@hotmail.com

    Caro amigo, usei o gravador para importar e fiz algumas modificações.

    Salve seu arquivo em "C:\Work\Dados.txt"

    Salve como cst 

    O arquivo ficará assim:

    Matricula;Nome;Data/dia;entrada;Saida;irregularidade; escala;   escala; justificativa


    353535;xxx;xxxxx;xx;xx;xx;xx;xx;xxx;
    353536;xxx;xxxxx;xx;xx;xx;xx;xx;xxx;

    454565;xxx;xxxx;xx;xx;xx;xx;xx;xxx;

    Sub Importar()


    Dim cont As Byte


        With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\Work\Dados.txt", _
            Destination:=Range("$A$1"))
            .Name = "Dados"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 1252
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = True
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1, 1, 4, 1, 1, 1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With


    cont = Range("a1048576").End(xlUp).Row

    Range("a1048576").End(xlUp).Select

    Do While cont > 1

    If ActiveCell = "" Then

        Range(ActiveCell, ActiveCell.Offset(0, 9)).Select

        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent1
            .TintAndShade = 0.399975585192419
            .PatternTintAndShade = 0
        End With
    Else
    End If

    ActiveCell.Offset(-1, 0).Select
    cont = cont - 1

    Loop

        Range("A1").Select

    End Sub

                                

    Revivendo o tópico.

    Amigo nesse seu exemplo você importa o txt delimitado por ; 

    como faço pra informar outro delimitador ? tem como?

    Att.

    quinta-feira, 21 de dezembro de 2017 13:03