Vamos lá....
A logica e o funcionamento é bem simples meu amigo, levando em consideração que por default o Windows renomeia automaticamente os arquivos com o mesmo nome e atribui uma numeraçao sequencial, entao a variavel i define o valor do ultimo arquivo que o Windows nomeou, por exemplo: i = 3 :"(3)", em seguida abre de acordo com a variavel.
Se os arquivos nao forem renomeados ou deletados, esta logica funcionara pois o autor do topico nao quer abrir o arquivo da data do dia e sim o mais recente ou seja o mais recente renomeado pelo windows.
Agora se deseja algo mais elaborado pode-se usar a propriedade DateLastModified do FileSystemObject.
Sub Abrir_Arquivo_Masi_Recente_1()
Dim FileSys As FileSystemObject
Dim objFile As File
Dim myFolder
Dim strFilename As String
Dim dteFile As Date
Const myDir As String = "C:UsersAdminDesktopPasta Teste"
Set FileSys = New FileSystemObject
Set myFolder = FileSys.GetFolder(myDir)
dteFile = DateSerial(1900, 1, 1)
For Each objFile In myFolder.Files
If objFile.DateLastModified > dteFile Then
dteFile = objFile.DateLastModified
strFilename = objFile.Name
End If
Next objFile
Workbooks.Open myDir & strFilename
Set FileSys = Nothing
Set myFolder = Nothing
End Sub
* Marque a referencia Microsoft Scripting Runtime
Editado:
Luis Aqui pra min funcionou perfeitamente.
Nesta linha do codigo If VBA.InStr(Arq, "Relatorio(") > 0 Then voce precisa, entre aspas colocar o nome do arquivo corretamente considerando os espaços se existirem, de acordo com o nome do seu arquivo.
Click em se a resposta foi util!
Postado : 11/04/2017 7:00 am