Notifications
Clear all

For Each

8 Posts
1 Usuários
0 Reactions
1,590 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia pessoal,

Estou com um novo problema.

Utilizando o padrão For Each abaixo, como poderia fazer essa contagem do último para o primeiro, ao invés do primeiro para o último, como segue abaixo:

For Each objFile In objFolder.Files
.....
Next objFile

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

 
Postado : 15/08/2011 7:53 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

lokaumz, você usa esta instrução para cada arquivo existente na pasta, "objFile In objFolder.Files", até onde eu sei não é possivel (não gosto muito desta expressão) fazer da maneira que pretende, pois geralmente são capturados os nomes por "Ordem Alfabetica", então se renomear um arquivo ele estará em uma posição diferente.

Por outro lado, me surgiu agora a seguinte questão, na instrução que postou :
For Each objFile In objFolder.Files
.....
Next objFile

Qual ação é feita entre o For Each .... e Next ?
Se estiver listando o resultado na planilha, você poderá classifica-los tendo a ordem inverssa dos mesmos.
Tambem poderiamos criar uma rotina para capturar pelas definições dos arquivos (Propriedades do Arquivo), tipo, Data de Alteração, Criação entre outros.

Espero que ajude a clarear um pouco as ideias.

[]s

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

 
Postado : 15/08/2011 4:05 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia, Mauro,

Obrigado pela resposta.

A rotina desse For Each é pegar o último objFile encontrado em objFolder.Files e ir verificando de um em um até o primeiro.

Seria essa a informação necessária para você me ajudar? Ou você também gostaria de saber a questão da ordem?

Grato.
João

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

 
Postado : 16/08/2011 5:22 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia,

Veja se este código de exemplo te ajuda:

Sub ListarArquivos()
    Dim objFSO
    Dim objStartFolder
    Dim objFolder
    Dim objFile
    Dim ColFiles
    Dim VetFiles()
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    objStartFolder = "C:Temp"

    Set objFolder = objFSO.GetFolder(objStartFolder)

    Set ColFiles = objFolder.Files
    i = 1
    For Each objFile In ColFiles
        Cells(i, 1).Value = objFile.Name
        ReDim Preserve VetFiles(i)
        VetFiles(i) = objFile.Name
        i = i + 1
    Next
    
    For i = UBound(VetFiles) To LBound(VetFiles) Step -1
        Cells(UBound(VetFiles) - i + 1, 2).Value = VetFiles(i)
    Next
End Sub

Ele lista os arquivos na coluna A em ordem crescente e na coluna B em ordem decrescente.

Abraço

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

 
Postado : 16/08/2011 6:41 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

JValq, também agradeço pela ajuda.

Estou verificando que com seu macro a ordem númerica não fica correta:

97 - TESTE - 1.xls
95 - TESTE - 1.xls
91 - TESTE - 1.xls
90 - TESTE - 1.xls
9 - TESTE - 1.xls
89 - TESTE - 1.xls
88 - TESTE - 1.xls
87 - TESTE - 1.xls
86 - TESTE - 1.xls
86 - TESTE - 2.xls

Na ordem correta, o 9 deveria estar embaixo de tudo.

97 - TESTE - 1.xls
95 - TESTE - 1.xls
91 - TESTE - 1.xls
90 - TESTE - 1.xls
89 - TESTE - 1.xls
88 - TESTE - 1.xls
87 - TESTE - 1.xls
86 - TESTE - 1.xls
86 - TESTE - 2.xls
9 - TESTE - 1.xls

Estou pesquisando como ordenar corretamente isso.

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

 
Postado : 16/08/2011 11:05 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde,

A ordem é feita caracter a caracter, portanto para que saia da maneira como você quer, o arquivo que está "fora de ordem" deve ser renomeado para "09 - TESTE - 1.xls".

Abraço

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

 
Postado : 16/08/2011 12:04 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Caso a contagem envolver 3 algarismos, os nomes do arquivos deveriam seguir o exemplo acima? "009 - TESTES - 1.xls" ?

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

 
Postado : 16/08/2011 12:31 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Sim, seria interessante seguir esse padrão.

Abraço

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

 
Postado : 16/08/2011 4:00 pm