Pelo que entendi, você está trabalahndo com 3 Arquivos diferentes:
O primeiro onde executa a rotina,
O segundo o Arquivo de Origem, e
O terceiro, o arquivo de destino.
Se for isto, veja se a rotina abaixo ajuda.
Vale ressaltar que, se o arquivo que está executando a macro estiver na mesma pasta onde irá fazer a verificação de data mais recente ele sempre será o arquivo mais recente, então ele não pode estar na mesma pasta, ou temos de tratar na rotina para ignora-lo.
Não esqueça de ajustar os Caminhos e nomes de arquivos na rotina.
Sub AbreMaisRecenteMauro()
Dim arqSys As FileSystemObject
Dim objArq As File
Dim minhaPasta
Dim Arquivo As File
Dim nomeArqOrigem As String
Dim dataArq As Date
Dim lngLastCol As Long
Dim wkbDes As Workbook
Dim wbOri As Workbook
'Definido na constante o local onde temos os arquivos modificados
Const Diret As String = "c:Pasta"
Set arqSys = New FileSystemObject
Set minhaPasta = arqSys.GetFolder(Diret)
dataArq = DateSerial(1900, 1, 1)
'Se o arquivo que está executando a macro estiver na mesma pasta ele será o
'mais recente
'Faz a verificação e abre o mais recente
For Each objArq In minhaPasta.Files
If objArq.DateLastModified > dataArq And objArq.Name Like "*.xl*" Then
dataArq = objArq.DateLastModified
nomeArqOrigem = objArq
End If
Next objArq
Workbooks.Open nomeArqOrigem
'Retorna somente o nome do arquivo de origem
nomeArqOrigem = Mid([nomeArqOrigem], InStrRev([nomeArqOrigem], "") + 1)
'Define o arquivo de origem
Set wbOri = Workbooks(nomeArqOrigem)
Set arqSys = Nothing
Set minhaPasta = Nothing
On Error Resume Next
'Set wbDest = Workbooks("c:Planilha para onde eu quero copiarNomeArqDestino.xlsx")
If wbDest Is Nothing Then
Set wbDest = Workbooks.Open("c:Planilha para onde eu quero copiarNomeArqDestino.xlsx")
On Error GoTo 0
End If
wbOri.Sheets("Plan1").Range("A1:A32").Copy _
wbDest.Sheets("Plan1").Range("A1:A32")
Application.DisplayAlerts = False
End Sub
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 20/09/2017 1:26 pm