Notifications
Clear all

Importar texto grande para célula única

20 Posts
3 Usuários
0 Reactions
2,643 Visualizações
(@luizhcosta)
Posts: 420
Honorable Member
Topic starter
 

Bom dia

Busquei na base do Fórum por uma solução para um problema e encontrei um código disponibilizado pelo MAURO COUTINHO adaptado já de outro. A macro executa 90% do que desejo e sendo assim gostaria de contar com a ajuda dos especialistas para fazer apenas uma adaptação. Pela macro, o texto é quebrado em linhas e colunas no excel, não é isso que desejo.

Eu preciso importar todo o conteúdo do arquivo texto para uma única célula específica (que já está definida no código). A única adaptação no código e não buscar por quebras de linhas ou colunas. Importar o texto conforme está e colar em uma célula.

Obrigado!

Segue o código:

Public Sub ImportarArqTextoGrandes()
    Dim ultimaFila, fila, contador As Long
    Dim linea, NomeArquivo As String
    Dim Ficheiro As String
    Dim S As String, N As Integer, X As Variant
     
    Dim rg As Range
    Set rg = Range("A1")
    
    'Calcula a última linha da planilha
    Selection.End(xlDown).Select
    ultimaFila = Selection.Row
    
    'Seleciona a primeira vazia
    Selection.End(xlUp).Select
    
    'Abre a Cx de Dialogo ABRIR
    ArquivoTxt = Application.GetOpenFilename("Arquivos Texto(*.txt), *.txt")
    
    'Se nenhum arquivop selecionado sai da rotina
    If ArquivoTxt = False Or ArquivoTxt = "False" Then Exit Sub
    
        Ficheiro = ArquivoTxt
    
        'Abre o arquico texto selecionado
        Open Ficheiro For Input As #1
    
        'Variaveis de linhas e colunas
        fila = 1
        contador = 1
    
    'Enquanto o arq rexto contiver linhas preenchidas
    Do Until EOF(1)
        Line Input #1, S
        
        'Subsdtitui somene o caracter de Tabulação
        X = Split(S, Chr(9))
        
            For N = 0 To UBound(X)
                rg.Offset(0, N) = X(N)
            Next N
        
            'Mensagem na barra de status
            Application.StatusBar = "Lendo linha número = " & contador
            
            'Atualiza as Variáveis e coluna e linhas
            fila = fila + 1
            contador = contador + 1
        
            'Cria nova planilha quando planilha atual estiver cheia
            If fila > ultimaFila Then
                    'Aplica formatação na aba atual
                    ActiveSheet.Range("A:O").Columns.AutoFit
                    ActiveSheet.Range("A1:$O$" & contador - 1).Font.Size = 8
                
                'Adiciona uma nova Aba
                Worksheets.Add after:=ActiveSheet
                
                'Reinicia as Variáveis
                fila = 1
                contador = 1
                
                'Redefine os Ranges
                Set rg = Range("A1")
                Set rg = rg.Offset(0, 0)
                
                'Força o Reinicio
                GoTo sReiniciar
                
            End If
        
            Set rg = rg.Offset(1, 0)
        
sReiniciar:

    Loop
    
    'Fecha o arquivo Texto
    Close #1
    
    ActiveSheet.Range("A:O").Columns.AutoFit
    ActiveSheet.Range("A1:$O$" & contador).Font.Size = 8
    
End Sub
 
Postado : 26/11/2015 7:15 am
(@luizhcosta)
Posts: 420
Honorable Member
Topic starter
 

Olá Mauro,

Estou enviando um modelo de como deve ser a importação dos arquivos textos. Note que na planilha, na coluna A tem os nomes dos arquivos textos, logo seu conteúdo será importado para a coluna B, no caso.

Conto com a sua ajuda.

Obrigado.

 
Postado : 09/12/2015 10:55 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

luiz, adaptando a rotina do Nelson, veja se é isto.

Public Sub ImportarArqTextMauro()

    Dim NomeArquivo As String
    Dim Caminho As String
        
    Dim wshContratos As Worksheet
    Dim rngCell As Range
    Dim rngMyArquivos As Range
    Dim celDestino
    
    'definimos o nome da aba
    Set wshContratos = Worksheets("Contratos")
    
    'Definimos o Range com Dados até a ultima linha preenchida
    Set rngMyArquivos = wshContratos.Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
       
    'Definimos o caminho no mesmo local do arquivo Controle.xlsm
    Caminho = ActiveWorkbook.Path & ""
    
    'Loop em cada celula no Range
    For Each rngCell In rngMyArquivos
        
        'Definimos a celula para inserir o texto
        celDestino = rngCell.Offset(0, 1).Address(0, 0)
        
        'Nome de cada arquivo
        NomeArquivo = rngCell & ".txt"
             
        'Abre o arquivo para leitura
        Open Caminho & NomeArquivo For Input As #1
            
            'Inseri o conteudo do arquivo na celula correspondente ao arquivo
            Range(celDestino).Value = Input$(LOF(1), 1)
            
            'Fecha o arquivo Texto
            Close #1
            
    Next rngCell
        
    ActiveSheet.Range("A:O").Columns.AutoFit
       
End Sub

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/12/2015 7:51 am
(@luizhcosta)
Posts: 420
Honorable Member
Topic starter
 

Mauro,

Bom dia.

Vou lhe agradecer antes mesmo de testar o código e também vou fazer um comentário que talvez possa ajudar nas soluções futuras de dúvidas dos usuários.
Percebi pelo código a presença do tipo de arquivo do excel habilitado para macros. Esse tipo de arquivo é fantástico, mas usuários de versões anteriores do excel vão ficar sem uma solução.

Tenho percebido que a maioria dos códigos estão utilizando esse formato de planilha. No meu caso, trabalho em uma empresa que (erradamente) ainda utiliza a versão 2000 do office, sabe como é empresa pública né. Mas vou testar o código em casa e tenho certeza que funcionará, mas talvez não poderei implementar aqui na empresa.

Em todo caso, agradeço pela ajuda.

Valeu!

 
Postado : 10/12/2015 9:46 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

luiz, a rotina postada, a principio serve para qualquer versão do excel, alias do 2000 pra cima, ela não é especifica para a versão 2007 e superior onde foi alterada a extensão dos arquivos que continham 3 letras "xls" para 4 "xlsm", talves você tenha feito confusão devido a linha comentada (não executavel - '"Definimos o caminho no mesmo local do arquivo Controle.xlsm", acabei digitando esta extensão por utilizar a v2007 e seu modelo não conter nenhuma macro.
Lembrando que de fato existem algumas alterações com o advento de novas Versões, isto ocorre na maioria dos updates de softwares, e não foi diferente nos app office, que não foram só em relação ao VBA mas em algumas funções, algumas para melhor e outras que acabaram extintas.
Mas pode utilizar sem problemas em versões anteriores.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/12/2015 10:42 am
(@luizhcosta)
Posts: 420
Honorable Member
Topic starter
 

Mauro,

Perfeito o código! Quanto minha observação, agradeço pelos esclarecimentos. Ficou muito bom mesmo.

Valeu.

 
Postado : 10/12/2015 12:49 pm
Página 2 / 2