Ir ao conteúdo
  • Cadastre-se

Excel vba abrir arquivo mais atual em pasta de trabalho


Posts recomendados

Alguem poderia me ajudar com o  seguinte caso ?

 Com o código abaixo eu salvo um arquivo excel, em uma determinada pasta.

 

     Dim filePathName As String     filePathName = rootPath1 & "\" & "Hardware Plan" & ".xlsm"     If Dir(filePathName) = "" Then         ActiveWorkbook.SaveCopyAs filePathName     Else         filePathName = rootPath1 & "\" & "Hardware Plan" & "_" & Format(Now(), "yyyymmwwddhhmmss") & ".xlsm"         ActiveWorkbook.SaveCopyAs filePathName     End If

 

Depois com um outro arquivo eu tenho que que abrir esse arquivo mais atual salvo mas não estou conseguindo fazer isso.

Poderiam me ajudar com um codigo que abre a planilha mais atual (filePathName = rootPath1 & "\" & "Hardware Plan" & "_" & Format(Now(), "yyyymmwwddhhmmss") & ".xlsm") dentro da pasta?

 

Tambem, em um agendamento que tenho preciso ir até esse arquivo que está aberto e fechar, mas ele vai estar com o nome variado, não tenho ideia como fazer.

 

Obrigado pessoal !

Link para o comentário
Compartilhar em outros sites

Segue sugestao e exemplo para adaptar ao seu cenario e ambiente

 

Sub AbrirArquivoMaisRecente()
    Dim sFile  As String
    Dim sUFile As String
    Dim sPath  As String
    Dim dDLmd  As Date
    Dim dUdDate As Date
    
    sPath = "C:\Users\Documents\" '*ALTER AQUI O DIRETORIO DOS ARQ.*
   
    If VBA.Right(sPath, 1) <> "\" Then sPath = sPath & "\"
    sFile = VBA.Dir(sPath & "*.xls", VBA.vbNormal)
    If VBA.Len(sFile) = 0 Then
        MsgBox "Nenhum arquivo foi encontrado!!!...", 48, "Atencao!!"
        Exit Sub
    End If
    Do While VBA.Len(sFile) > 0
     If VBA.Left(sFile, 14) = "Hardware Plan_" Then
        dDLmd = VBA.FileDateTime(sPath & sFile)
        If dDLmd > dUdDate Then
            sUFile = sFile
            dUdDate = dDLmd
        End If
        End If
        sFile = VBA.Dir
    Loop
   If sUFile <> "" Then Workbooks.Open sPath & sUFile
End Sub

 

Link para o comentário
Compartilhar em outros sites

@Basole

 Levando em consideração o código abaixo em junção ao código que você propos, a String sUFile está ficando vazio na ultima parte do loop !

 Fiz a depuração e não está funcionando, não abre nada por essa string ficar vazio !

 

 

 Dim PathTgt As Variant
                                    
                                        PathTgt = ano & "\" & mes1 & ". " & mes & "\W" & semana & "\" & dia       ' ex   =   '2021/1. JANEIRO/W2/01
                                    
        
                                                            Dim sFile  As String
                                                            Dim sUFile As String
                                                            Dim sPath  As String
                                                            Dim dDLmd  As Date
                                                            Dim dUdDate As Date
                                                            
                                                            sPath = "\\105.103.12.249\OQC\11. PLANOS DIÁRIOS\3. PAINEL DE DEMANDA\" & PathTgt
                                                            
                                                            If VBA.Right(sPath, 1) <> "\" Then sPath = sPath & "\"
                                                             sFile = VBA.Dir(sPath & "*.xlsm", VBA.vbNormal)
                                                             If VBA.Len(sFile) = 0 Then
                                                             
                                                             Exit Sub
                                                            End If
                                                            Do While VBA.Len(sFile) > 0
                                                             If VBA.Left(sFile, 14) = "Painel Demanda_" Then
                                                              dDLmd = VBA.FileDateTime(sPath & sFile)
                                                              If dDLmd > dUdDate Then
                                                               sUFile = sFile
                                                               dUdDate = dDLmd
                                                              End If
                                                             End If
                                                              sFile = VBA.Dir
                                                            Loop
                                                            
                                                            If sUFile <> "" Then Workbooks.Open sPath & sUFile
                                        

 

Link para o comentário
Compartilhar em outros sites

@Basole

   Não me expressei direto...

   O codigo abaixo é um agendamento, abre o arquivo (sUFile) as 6hs e deve fechar o mesmo que está aberto as 23hs.

   AbreArquivo = 6hs (o que você me ajudou com o sUFile

  FechaArquivo = 23hs (preciso burscar o arquivo com o mesmo nome do sUFile)

 

  Seria u

 

Sub executa()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
  
    Dim dayWeek As Integer
    dayWeek = Weekday(Date)

    If Not dayWeek = 6 Or dayWeek = 7 Then
        scheduleTime = nightTime
        If CInt(Hour(Now)) < nightTime Then ' Se ainda não é 23h
             Call scheduleVBA(scheduleTime) ' agenda execução para 23h
             Call AbreArquivo.AbrirPainel
             Exit Sub ' não tem motivo pra continuar... sai da macro
             
         Else ' Agora é 23h
             Call scheduleVBA(scheduleTime, stopSchedule)
             Call FechaArquivo.FechaPainel
         End If
    End If
    
    'agenda execução para 6h
    scheduleTime = morningTime
    Call scheduleVBA(scheduleTime)
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

 

entendeu?

Link para o comentário
Compartilhar em outros sites

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!