none
[Resolvido] Ler vários arquivos em uma pasta e extrair algumas informações para montar uma tabela em excel RRS feed

  • Pergunta

  • Tenho que criar um arquivo excel que toda vez que for aberto leia os arquivos *.txt (ou html) que vão estar salvos numa pasta D:\Sistema\ArquivosImportacao

    Os arquivos vem meio bagunçados então tenho que buscar algumas palavras e copiar o que tem na frente delas.

    Nome: ------------ Sobrenome:----------

    Empresa:-------- Telefone: --------

    Cada novo nome deve ser salvo numa linha do excel.

            A                    B                    C                   D

    1  Nome1      Sobrenome1       Empresa1       Telefone1

    2  Nome2      Sobrenome2       Empresa2       Telefone2

    3  Nome3      Sobrenome3       Empresa3       Telefone3


    • Editado DiogoLuc quinta-feira, 26 de junho de 2014 13:58 Resolvido
    quarta-feira, 25 de junho de 2014 17:34

Respostas

  • Olá Diogo.

    Estou sem tempo para te responder com mais detalhes, mas vc pode adaptar algo do tipo:

    Sub PercorrerPasta()
    
    
    'Defina a Pasta aqui
    sCaminho = "C:\Sua Pasta\"
    
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.GetFolder(sCaminho)   'Estrutura da Pasta de origem
    
    
    For Each sItemFile In oFolder.Files         'Percorrendo toda a pasta
    
        If sItemFile.Type = "Planilha do Microsoft Office Excel 97-2003" Then       'Copiando apenas arquivos xls
            
            sCaminhoArquivo = sItemFile
            
    		...
    		
        End If
    Next
    
    MsgBox "Fim da Execução", vbInformation
    End Sub

    Quanto à fórmula, digite-a normalmente no Excel. Aperte o botão de Gravar Macro. Selecione a célula com a fórmula, aperte F2 e em seguida Enter. Pare a gravação e veja o código gerado no VBA. Pronto, vc já terá a conversão.

    Abraços.


    Filipe Magno

    quinta-feira, 26 de junho de 2014 03:28

Todas as Respostas

  • Bom, já consegui fazer boa parte do programinha, só estou empacando na parte de pegar os arquivos.

    Por enquanto coloquei fixo para testar

    Const sCaminho As String = "D:\Sistema\ArquivosImportacao.txt"

    Mas como faço pra ele varrer a pasta inteira e retornar arquivo por arquivo?

    Ah, outra coisa, eu queria colocar algumas formulas em algumas celulas, por exemplo

    =CONCATENAR(EXT.TEXTO(E2;5;2);" ";ESQUERDA(E2;3);", ";EXT.TEXTO(E2;9;4);" ";DIREITA(E2;8))

    =AGORA()-F2

    =RAIZ((L2-N2)*(A2-B2))

    Vou ter que converte-las para VB?

    • Editado DiogoLuc quinta-feira, 26 de junho de 2014 00:34
    quinta-feira, 26 de junho de 2014 00:29
  • Olá Diogo.

    Estou sem tempo para te responder com mais detalhes, mas vc pode adaptar algo do tipo:

    Sub PercorrerPasta()
    
    
    'Defina a Pasta aqui
    sCaminho = "C:\Sua Pasta\"
    
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.GetFolder(sCaminho)   'Estrutura da Pasta de origem
    
    
    For Each sItemFile In oFolder.Files         'Percorrendo toda a pasta
    
        If sItemFile.Type = "Planilha do Microsoft Office Excel 97-2003" Then       'Copiando apenas arquivos xls
            
            sCaminhoArquivo = sItemFile
            
    		...
    		
        End If
    Next
    
    MsgBox "Fim da Execução", vbInformation
    End Sub

    Quanto à fórmula, digite-a normalmente no Excel. Aperte o botão de Gravar Macro. Selecione a célula com a fórmula, aperte F2 e em seguida Enter. Pare a gravação e veja o código gerado no VBA. Pronto, vc já terá a conversão.

    Abraços.


    Filipe Magno

    quinta-feira, 26 de junho de 2014 03:28
  • Olá FilipeMagno, obrigado pela resposta, funcionou perfeitamente.

    Com relação as fórmulas quando copio a macro vem algo assim:

    .FormulaR1C1 = "=NOW()-R[1]C[4]"

    como faço para trocar esse R[1] por uma variável que eu uso no For para controlar a linha?

    quinta-feira, 26 de junho de 2014 11:55
  • Diogo,

    usa assim:

    .formulaR1C1 = "=NOW()-R" & NumerodaLinha &"C" & NumerodaColuna


    quinta-feira, 26 de junho de 2014 13:25
  • Muito obrigado Natan.

    Conclui o sistema.

    Tópico Resolvido.

    quinta-feira, 26 de junho de 2014 13:57