Pessoal, tudo bem?
Eu preciso popular uma planilha com o nome do arquivo e a data de modificação.
Para fazer isso, eu primeiro populo um array com estes dados, e depois copio para a planilha.
Quando eu populo o Array, funciona corretamente, porém quando eu coloco o valor na célula, o excel está invertendo o dia e o mês da data de modificação.
Infelizmente não consigo upar uma planilha de exemplo, pois aqui no meu trabalho é bloqueado, porém posso fazer isso quando chegar em casa se necessário.
Este é o trecho em que ocorre o erro
For i = 0 To contagemArquivos
j = i + 2
'a data fica na coluna 0 do array listaArquivos
   arquivos.Range("A" & j) = listaArquivos(i, 0)
   arquivos.Range("B" & j) = listaArquivos(i, 1)
Next i
E o mais estranho, é que isso acontece apenas com um arquivo. A data de modificação dele é 07/06/2016 e ele inverte para 06/07/2016.
Segue código completo.
Option Explicit
Sub Buscar()
Dim fso As Object
Dim pasta As Object
Dim file As Object
Dim listaArquivos() As Variant, listaFinal As Variant
Dim caminho1 As String, caminho2 As String
Dim buscador As Worksheet, arquivos As Worksheet
Dim GCANI As Workbook
Dim infra As Worksheet
Dim funcional As String
Dim dataReferencia As Date
Dim tipo As String
Dim contagemArquivos As Integer, i As Integer, contagemLista As Integer, j As Integer
Dim rng As Range, rngFind As Range, rngOrdenado As Range
Dim dados(1 To 1, 1 To 5)
Dim linha As Double
Dim final As Integer
Dim msg As VbMsgBoxResult
Dim segundaBusca As Boolean
segundaBusca = False
Set buscador = ThisWorkbook.Sheets("Buscador")
Set arquivos = ThisWorkbook.Sheets("arquivos")
funcional = buscador.Range("B2").Value
dataReferencia = buscador.Range("B3").Value
tipo = buscador.Range("B4").Value
If funcional = "" Then
   MsgBox "O campo funcional é obrigatório"
   Exit Sub
End If
If IsEmpty(dataReferencia) Then
   MsgBox "O campo data de referência é obrigatório"
   Exit Sub
End If
If tipo = "" Then
   MsgBox "O campo tipo é obrigatório"
   Exit Sub
End If
If tipo = "PF" Then
        caminho1 = "\fswcorpceicaccmonitqualGCANI - Cadastro UnificadoGCANI_BANCO_PF"
Else
        caminho1 = "\fswcorpceicaccmonitqualGCANI - Cadastro Unificado"
End If
Set fso = CreateObject("Scripting.FileSystemObject")
Set pasta = fso.GetFolder(caminho1)
novaBusca:
For Each file In pasta.Files
If FormatDateTime(file.DateLastModified, vbShortDate) <= dataReferencia Then
   If Left(file.Name, 12) = "GESTAO_GCANI" Then
      contagemArquivos = contagemArquivos + 1
   End If
End If
Next
ReDim listaArquivos(contagemArquivos, 1)
i = 0
For Each file In pasta.Files
If FormatDateTime(file.DateLastModified, vbShortDate) <= dataReferencia Then
   If Left(file.Name, 12) = "GESTAO_GCANI" Then
      listaArquivos(i, 0) = FormatDateTime(file.DateLastModified, vbShortDate)
      listaArquivos(i, 1) = file.Name
      i = i + 1
   End If
End If
Next
arquivos.Range("A1").CurrentRegion.Value = ""
arquivos.Range("A1:B1") = Array("Data", "Arquivo")
For i = 0 To contagemArquivos
j = i + 2
   arquivos.Range("A" & j) = listaArquivos(i, 0)
   arquivos.Range("B" & j) = listaArquivos(i, 1)
Next i
contagemLista = arquivos.Cells(Rows.Count, "A").End(xlUp).Row
Set rng = arquivos.Range("A1:B" & arquivos.Cells(Rows.Count, "A").End(xlUp).Row)
final = arquivos.Cells(Rows.Count, "A").End(xlUp).Row
Call organizar(final)
If arquivos.Range("A" & arquivos.Cells(Rows.Count, "A").End(xlUp).Row).Value = "Data" Then
   dataReferencia = Date
   segundaBusca = True
   
   GoTo novaBusca
Else
  If segundaBusca Then
        msg = MsgBox("O GCANI mais antigo da rede, foi modificado em " & arquivos.Range("A" & arquivos.Cells(Rows.Count, "A").End(xlUp).Row).Value & ". Deseja buscar nas versões mais recentes?", vbYesNo)
        If msg = vbNo Then
           Exit Sub
        End If
   End If
   
End If
listaFinal = rng
buscador.Range("B5:B10").Value = ""
For i = 2 To contagemArquivos + 1
caminho2 = caminho1
caminho2 = caminho2 & listaFinal(i, 2)
   Set GCANI = Workbooks.Open(caminho2)
   Set infra = GCANI.Sheets("BASE")
  If tipo = "CARTÕES" Then
   With infra.Range("B:B")
   On Error Resume Next
   Set rngFind = .Find(What:=funcional, _
                            After:=.Cells(.Cells.Count), _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False)
    End With
    Else
     With infra.Range("A:A")
     On Error Resume Next
     Set rngFind = .Find(What:=funcional, _
                            After:=.Cells(.Cells.Count), _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False)
    End With
    End If
    If Not rngFind Is Nothing Then
       MsgBox "Operador encontrado no GCANI " & listaFinal(i, 2) & " Modificado em: " & listaFinal(i, 1)
       buscador.Range("B5") = rngFind.Offset(0, 2)
       buscador.Range("B6") = rngFind.Offset(0, 3)
       buscador.Range("B7") = rngFind.Offset(0, 7)
       buscador.Range("B8") = rngFind.Offset(0, 4)
       buscador.Range("B9") = rngFind.Offset(0, 1)
       buscador.Range("B10") = rngFind.Offset(0, 5)
       Exit For
    Else: GoTo proximaIteração
    End If
proximaIteração:
GCANI.Close SaveChanges:=False
Next i
If rngFind Is Nothing Then
  MsgBox "Operador não encontrado"
End If
On Error Resume Next
GCANI.Close SaveChanges:=False
End Sub
Obrigado.
                                                                                                	                                                
	                                         
                    
                    	
                            Postado : 14/06/2016 1:47 pm