Notifications
Clear all

Via VBA cada célula em um arquivo *.TXT

12 Posts
3 Usuários
0 Reactions
1,873 Visualizações
(@luizhcosta)
Posts: 0
New Member
Topic starter
 

Olá,

Para complementar um procedimento já solucionado aqui no fórum, estou querendo saber como fazer com que o conteúdo de uma célula seja exportado para um arquivo *.txt.

A idéia é o conteúdo da célula A2 ser exportado para um arquivo texto, e assim como cada célula seguinte sendo criado um arquivo diferente. Os nomes dos arquivos textos podem ser um sequencial simples tipo Arquivo-001, Arquivo-002 e assim por diante. A coluna onde estão os textos é a "A"

Agradeço.

 
Postado : 14/03/2016 10:51 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Tente adaptar!

Sub AleVBA_19511()
    Dim cell As Range
    Dim FF As Long
    Dim Counter As Long
    
    For Each cell In Range("A1", Range("A" & Rows.Count).End(xlUp))
        If cell.Value <> "" And Range("A" & cell.Row).Value <> "" Then
            FF = FreeFile()
            '                Aqui o arquivo pega o nome das células col A
            Open ThisWorkbook.Path & "" & Range("A" & cell.Row).Value & ".txt" For Output As #FF
            Print #FF, cell.Text
            Close #FF
            Counter = Counter + 1
        End If
    Next cell
    
    MsgBox Counter & " Arquivos salvos. ", , "Criar Arquivo de Texto"
    'Obs: os arquivos são salvos no mesmo diretório que o arquivo xls...
End Sub

Att

 
Postado : 14/03/2016 11:42 am
(@luizhcosta)
Posts: 0
New Member
Topic starter
 

Deu

Erro 400 !

 
Postado : 14/03/2016 12:06 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

No meu teste não gerou erro!!

Att

 
Postado : 14/03/2016 12:36 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O erro 400, genericamente, refere-se a tentativa de acessar um objeto, que já está em utilização ou está inacessível.
Exemplo abrir form que já está aberto.

Aparentemente o erro não se refere a rotina proposta (testei e rodou ok) pelo colega Alexandre, talvez alguma outra instrução que seja "deflagrada" ao "executar" a proposta

 
Postado : 14/03/2016 1:00 pm
(@luizhcosta)
Posts: 0
New Member
Topic starter
 

Entendi,

E a respeito de versões excel?. uso, por força da empresa, a versão Office 2000.

 
Postado : 14/03/2016 1:22 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

É possível que a versão apresente alguma incompatibilidade com as instruções de código; porem não posso afirmar com certeza pois nunca utilizei essa versão.

 
Postado : 15/03/2016 5:43 am
(@luizhcosta)
Posts: 0
New Member
Topic starter
 

Olá Reinaldo,

O erro continua ocorrendo mesmo na versão 2010 do excel. Você pode disponibilizar um arquivo com a macro ?

Obrigado.

 
Postado : 16/03/2016 6:17 am
(@trindade)
Posts: 0
New Member
 

Boa tarde, Srs.

Desculpa se entrometer na discussão dos senhores...
Fiz o teste com o código do alexandrevba, funcionou 100%.

Segue arquivo com código, funcionando.

Só descompactar e executar.

 
Postado : 16/03/2016 9:44 am
(@luizhcosta)
Posts: 0
New Member
Topic starter
 

Acredito que o código funcione. Apenas testei com minha base e o erro 400 apareceu. Ontem testei no Excel 2010 e o erro persistiu. Vou testar seu arquivo e confirmar.

Obrigado.

 
Postado : 16/03/2016 12:43 pm
(@luizhcosta)
Posts: 0
New Member
Topic starter
 

Olá,

Estou enviando o arquivo com as informações que desejo exportar. O erro mudou, mas continua sem funcionar.
Agradeço se fosse feita alguma consideração para a solução.

Obrigado.

 
Postado : 17/03/2016 4:14 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Como a rotina está "pegando" o conteudo da celula para nome do arquivo, eventualmente algum caractere proibido pelo sistema operacional para nomes de arquivos pode gerar erro.
Então experimente executar a rotina conforme alteração abaixo; o nome de arquivo passa a ser uma numeração crescente, veja se executa corretamente

Sub AleVBA_19511()
Dim rCell As Range
Dim FF As Long, Counter As Long
Counter = 1
    For Each rCell In Range("A1", Range("A" & Rows.Count).End(xlUp))
        If rCell.Value <> "" And Range("A" & rCell.Row).Value <> "" Then
            FF = FreeFile()
            '                Aqui o arquivo pega o nome das células col A
            Open ThisWorkbook.Path & "" & Counter & ".txt" For Output As #FF
            Print #FF, rCell.Text
            Close #FF
            Counter = Counter + 1
        End If
    Next rCell
    
    MsgBox Counter & " Arquivos salvos. ", , "Criar Arquivo de Texto"
    
End Sub
 
Postado : 18/03/2016 5:18 am