Notifications
Clear all

Copiar vários arquivos TXT para diferentes abas da planilha.

8 Posts
2 Usuários
0 Reactions
1,736 Visualizações
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Boa Tarde a todos,
Estou com um probleminha tentei de várias formas resolver mas não consegui.
Preciso que todos os arquivos TXT que estão dentro de uma determinada pasta sejam copiados para a planilha.
Todo conteúdo de cada arquivo TXT dever ser copiado para uma aba diferente da planilha.
Ex
TXT 1 copiado para Plan1, TXT 2 copiado para Plan2, TXT 3 copiado para Plan3, TXT 4 copiado para Plan4 e assim sucessivamente

Pesquisando na net consegui achar um código que copia um arquivo apenas, mas as vezes preciso copiar 5, 10, 15 arquivos e se essa tarefa fosse automatizada ajudaria bastante.
No final preciso que fica tudo alinhado conforme o modelo anexo, mas se alguém ajudar fazer com que todos os arquivos fossem copiados simultaneamente já serviria.

Antecipadamente agradeço,

Abraços

Fabiosp

 
Postado : 29/02/2016 10:13 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fabio, podemos criar um Loop referente aos arquivos textos, mas para isto é necessário algumas informações :

1º - Os arquivos textos estarão sempre no mesmo diretório - ThisWorkbook.Path & "fabiotxt1.txt" ?
2º - Os arquivos textos terão nomes específicos conforme está em sua rotina ThisWorkbook.Path & "fabiotxt1.txt"
3º - Esta tarefa será realizada quantas vezes ao dia ? A cada realização os arquivos textos serão outros, atualizados ? Se não, como serão diferenciados os nomes dos arquivos que já foram carregados anteriormente com os atuais ?

De inicio, só estas informações já da para começar a pensar em algo.

[]s

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

 
Postado : 29/02/2016 10:43 am
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Mauro Coutinho boa tarde,

Agradeço a ajuda.

respondendo a sua questões.

1 - Sim, os arquivos sempre estarão na mesma pasta.
2 - Não, os nome são variáveis.
3- Essa tarefa será executada entre 2 ou 3 vezes ao dia, a cada atualização os textos serão atualizados e para diferenciar os nomes dos aquivos é usado um número de referência para cada arquivo TXT.

Muito obrigado,

Abraço.

Fabiosp

 
Postado : 29/02/2016 3:03 pm
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Bom dia a todos.
Pesquisando sobre o assunto na internet achei um código que cópia os arquivos txt para o excel, porém copia tudo na mesma aba.
Eu preciso que seja copiado cada file txt em abas diferentes.
Tentei fazer a adaptação mas não consegui.
Será que alguém poderia me ajudar.

Antecipadamente agradeço.

Fabio sp

 
Postado : 03/03/2016 8:03 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fábio aproveitando as dicas nos links abaixo, fiz alguns ajustes, de uma olhada se é isto.
Lembrando que os arquivos textos têm de estar na mesma pasta, como você disse os nomes são iguais e só diferenciam o numero no final, então a rotina irá buscar cada um, criar uma nova aba com o nome de cada arquivo importado, tambem é feita a verificação se já existir aba com o nome do arquivo a importar pula e passa para outro.

http://www.mrexcel.com/forum/excel-ques ... -long.html
http://www.exceltip.com/files-workbook- ... excel.html

Importar Varios Arquivos Textos

[]s

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

 
Postado : 03/03/2016 8:06 am
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Mauro Coutinho bom dia,

Muito obrigado pela ajuda.
Isso mesmo que estava precisando.`
Pra executar a tarefa precisa das duas rotinas abaixo?

Sub TxtImporter()
    Dim f As String, flPath As String
    Dim i As Long, j As Long
    Dim ws As Worksheet
    Dim wsExiste As String
    
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    
    flPath = ThisWorkbook.Path & Application.PathSeparator
    
    i = ThisWorkbook.Worksheets.Count
    j = Application.Workbooks.Count
    
    'Armazena os nomes dos arquivos
    f = Dir(flPath & "*.txt")

    'Verificar se a aba existe antes de criar
    wsExiste = Left(f, Len(f) - 4)
    
    'Loop nos arquivos textos
    Do Until f = ""
        
        If WorksheetExists2(wsExiste) Then
           'Sem existe verifica a próxima
            f = Dir
            
            'Sai quando não tiver mais arq texto
            If f = "" Then Exit Sub
            
            wsExiste = Left(f, Len(f) - 4)
           
           Else
            
            Workbooks.OpenText flPath & f
            
            Workbooks(j + 1).Worksheets(1).Copy After:=ThisWorkbook.Worksheets(i)
            
            ThisWorkbook.Worksheets(i + 1).Name = Left(f, Len(f) - 4)
            
            Columns("A:B").AutoFit
            
            Workbooks(j + 1).Close SaveChanges:=False
                i = i + 1
                f = Dir
            
            If f = "" Then Exit Sub
            
            wsExiste = Left(f, Len(f) - 4)
         
        End If
    Loop
        
    Application.DisplayAlerts = True

End Sub


'http://www.exceltip.com/files-workbook-and-worksheets-in-vba/determine-if-a-sheet-exists-in-a-workbook-using-vba-in-microsoft-excel.html
' Verifica se a aba existe antes de criar nova
Function WorksheetExists2(WorksheetName As String, Optional wb As Workbook) As Boolean
    If wb Is Nothing Then Set wb = ThisWorkbook
        With wb
            On Error Resume Next
            WorksheetExists2 = (.Sheets(WorksheetName).Name = WorksheetName)
            On Error GoTo 0
        End With
End Function




Sub ABRIR_COPIAR_TXT_EXCELORI()
Dim REL, NUMBER, LOCATION

Sheet1.Columns(1).ClearContents

LOCATION = 2


Open ThisWorkbook.Path & "fabiotxt1.txt" For Input As #1 ' OPEN SOURCE

    Do While Not EOF(1) ' EOF(1)>> LOOP UNTIL END FILE
        Input #1, REL '
            Sheet1.Cells(LOCATION, 1) = REL '
            LOCATION = LOCATION + 1
    Loop

Close #1 ' CLOSE TXT

End Sub

Mais uma vez agradeço a sua generosidade.

Abraços.

 
Postado : 03/03/2016 8:20 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fabio, uma é o procedimento de buscar os arquivos (Sub TxtImporter()) e a outra é a "Function" que verifica se a aba já existe (Function WorksheetExists2), trabalham em conjunto, poderia ter deixado tudo em uma rotina somente, mas desta forma fica melhor para entender e até aproveitar a function em outras chamadas.

[]s

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

 
Postado : 03/03/2016 8:46 am
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Mauro Coutinho

Muito obrigado pela explicação.
Tudo certo agora.

Muito obrigado pela ajuda.

Abraços.

 
Postado : 03/03/2016 8:57 am