Ir ao conteúdo

Posts recomendados

Postado

Olá.

 

Estou usando File System Object para verificar arquivos em determinado Path, como no exemplo abaixo:

 

    Set FSO = CreateObject("Scripting.FileSystemObject")

    Set ConteudoPath = FSO.Getfolder(“D:\”)

 

Gostaria de gerar um objeto “arquivo” com o último arquivo da coleção de arquivos que tem dentro de ConteudoPath.

 

Sei que posso percorrer todos eles usando as linhas abaixo:

For Each ARQ in ConteudoPath.Files

Next

e após percorrer todos, terei o último, mas gostaria de acessar diretamente o último.

 

Sei a quantidade de arquivos pelo ConteudoPath.Files.COUNT.

Tentei algo do tipo:

Qtd = ConteudoPath.Files.Count

Set ARQ = ConteudoPath.Files.Item(Qtd)

Set ARQ = ConteudoPath.Files(Qtd)

Ou

Debug.Print ConteudoPath.Files.Item(Qtd).Name

Debug.Print ConteudoPath.Files(Qtd).Name

mas não consegui indexar dessa forma pois dá erro.


Se souber como posso fazer esse acesso direto ao enésimo arquivo, sem passar pelos outros, agradeço pela ajuda.

 

A mesma pergunta vale para Subfolders.

 

Jimmy San Juan

Postado

 

Veja se ajuda. Retorna o nome do último arquivo da pasta, considerando a ordem A-Z dos nomes, independente da ordem selecionada no Explorador de Arquivos.

Caminho em A1 ~~~> C:\MinhaPasta\

Sub ÚltimoArquivo()
 Dim cmdOutput As String
  cmdOutput = CreateObject("WScript.Shell").Exec("CMD /C DIR """ & [A1] & "*.*"" /A:-D /B /O:-N").StdOut.ReadAll
  Debug.Print CStr(Split(cmdOutput, vbCrLf)(0))
End Sub

fonte:

https://stackoverflow.com/questions/45299021/vba-obtaining-filename-of-last-file-in-a-directory

Postado

Olá @osvaldomp ,

 

Obrigado pela sua ajuda e esforço 👍

 

A solução que você apresentou permite obter o último arquivo, porém difere do FSO em 2 aspectos: o acesso às propriedades, e principalmente a data de modificação. A obtenção de dados do arquivo via SHELL/DIR apresenta hora no formato hh:mm enquanto que via FSO o formato é hh:mm:ss. Os segundos são importantes no meu caso pois a macro analisa se houve mudanças nos arquivos.

 

Outro obstáculo é o tempo de resposta. Via SHELL/DIR fica aproximadamente 15 vezes mais lento do que ficaria se eu usasse o FOR EACH para percorrer todos os arquivos e pegasse apenas o último. Estava tentando uma forma de indexar diretamente para reduzir o tempo de processamento.

 

Pelo que pude concluir, a coleção de arquivos e pastas do FSO tem índice alfabético, que é o próprio nome da pasta ou arquivo, e não aceita indexação numérica-sequencial. Uma pena! 😣

 

Abraço,

 

Jimmy San Juan

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!