ULTIMOS ARQUIVOS ACESSADOS

USUARIO.EXCLUIDOS 15/09/2005 16:48:36
#104462
Alguem poderia indicar ou fornecer uma rotina que me dê os últimos arquivos abertos pelo programa do tipo menu do excel opção arquivo
1 c:\arquivos de programas\excel.xls
2 c:\...

Grato
Mauricio
LIONHEART 15/09/2005 16:50:08
#104463
cara, mal, mas não entendi nada, pode reexplicar?
USUARIO.EXCLUIDOS 15/09/2005 19:46:36
#104488
Seria um atalho.
vc poderá utilizar o atalho para re-abrir os ultimos arquivos que foram abertos anteriormente.
Grato
Mauricio
USUARIO.EXCLUIDOS 15/09/2005 21:23:01
#104501
Resposta escolhida
vai em menu editor, e crie um menu assim:

Arquivo (Name = mnuArquivo)
---Abrir (Name = mnuAbrir)
---Lista MRU (Name = mnuMRU, Visible = False, Index = 0)
---Sair (Name = mnuSair)

em project\componts, vc marca isso:

Microsoft Common Dialog control

Depois cole isso no form1

Option Explicit

Private Const MaxMRU = 4 'Número máximo de MRUs na lista (-1 para sem limite)
Private Const NaoEncontrado = -1 'Indica que uma entrada duplicada não foi encontrada
Private Const SemMRUs = -1 'Indica que nenhum MRUs está criado

Private MRUCount As Long 'Mantém uma contagem de MRUs criados

Private Sub Form_Load()
' Inicializa o contador de MRUs
MRUCount = SemMRUs

' Chama sub para retornar os nomes de arquivos MRU

GetMRUFileList
End Sub

Private Sub Form_Unload(Cancel As Integer)
' Chama sub para salvar nomes de arquivos MRU
SaveMRUFileList
End Sub

Private Sub mnuMRU_Click(Index As Integer)
' Chama sub para reordenar a lista de MRUs
ReorderMRUList mnuMRU(Index).Caption, CLng(Index)
End Sub

Private Sub mnuAbrir_Click()
' Mostra o diálog de abertura de arquivo
Me.CommonDialog1.ShowOpen

' Chana sub para adicionar este arquivo ao MRU
AddMRUItem Me.CommonDialog1.FileName
End Sub

Private Sub AddMRUItem(NewItem As String)
Dim result As Long

' Cham sub para checar por duplicidades
result = CheckForDuplicateMRU(NewItem)

' Trata caso em que é encontrada duplicidade
If result <> NaoEncontrado Then
' Chama sub para reordenar a lista MRU
ReorderMRUList NewItem, result
Else
' Chama sub para adicionar novo item ao menu MRU
AddMenuElement NewItem
End If
End Sub

Private Function CheckForDuplicateMRU(ByVal NewItem As String) As Long
Dim i As Long

' Muda NewItem para caixa alta para fazer comparação
NewItem = UCase$(NewItem)

' Checa todos os MRUs existentes em busca de duplicidade
For i = 0 To MRUCount
If UCase$(Me.mnuMRU(i).Caption) = NewItem Then
' Duplicação encontrada, retorna a localização da duplicação
CheckForDuplicateMRU = i

' Para pesquisa
Exit Function
End If
Next i

' Nenhum duplicado foi encontrado, retorna -1
CheckForDuplicateMRU = -1
End Function

Private Sub mnuSair_Click()
' Fecha o programa
Unload Me
End Sub

Private Sub AddMenuElement(NewItem As String)
Dim i As Long

' Verifica que não vamos exceder o máximo de MRUs
If (MRUCount < (MaxMRU - 1)) Or (MaxMRU = -1) Then
'Incrementa o contador de menus
MRUCount = MRUCount + 1

'Verifica se este é o primeiro item
If MRUCount <> 0 Then
' Adiciona um novo elemento ao menu
Load mnuMRU(MRUCount)
End If

' Torna o novo elemento visível
mnuMRU(MRUCount).Visible = True
End If

' Move itens para manter ordem do mais recente para o menos recente
For i = (MRUCount) To 1 Step -1
' Ajusta os captions
mnuMRU(i).Caption = mnuMRU(i - 1).Caption
Next i

' Atribui caption para o novo item
mnuMRU(0).Caption = NewItem
End Sub

Private Sub ReorderMRUList(MRUDuplicado As String, LocalDoDuplicado As Long)
Dim i As Long

' Move entradas previamente "mais recentes" que o
' duplicado uma posição abaixo na lista de MRU
For i = LocalDoDuplicado To 1 Step -1
mnuMRU(i).Caption = mnuMRU(i - 1).Caption
Next i

' Atribui caption do novo item
mnuMRU(0).Caption = MRUDuplicado
End Sub

Private Sub GetMRUFileList()
Dim i As Long 'variável de controle de loop
Dim result As String 'Nome do MRU do registry

' Loop por todas as entradas
Do
' Pega entrada do registro
result = GetSetting(App.Title, "ArquivosMRU", Trim$(CStr(i)), "")

' Verifica se foi retornado um valor
If result <> "" Then
' Chama sub que adiciona item à  lista MRU
AddMRUItem result
End If

' Incrementa contador
i = i + 1
Loop Until (result = "")
End Sub

Private Sub SaveMRUFileList()
Dim i As Long ' variável de controle de loop
' Loop por todos MRUs
For i = 0 To MRUCount
' Grava MRU no registro com argumento Key igual à  sua posição na lista
SaveSetting App.Title, "ArquivosMRU", Trim$(CStr(i)), mnuMRU(i).Caption
Next i
End Sub
USUARIO.EXCLUIDOS 15/09/2005 21:23:43
#104502
Ah, esqueci de comentar, esse código foi retirado de:
http://www.vbmania.com.br/vbmdetail.php?varID=531&TxtSearch=recentes&CmbSort=&varPagina=1
Tópico encerrado , respostas não são mais permitidas