Pra mim, isso substitui o método mostrado na mensagem deste link, pois funciona facilmente tanto em 32 quanto 64 bits
E também posso traquilamente reaproveitar o código em novos projetos sem me preocupar com problema de referência, como previsto neste link, e ocorrido neste link, neste, neste, neste, neste, e neste. E o que complica mais é que, pra mim e para alguns colegas, a referência nunca está facilmente na lista, sempre era preciso executar estes passos.
Agora não mais! E espero que você também não.
Em um módulo global
E também posso traquilamente reaproveitar o código em novos projetos sem me preocupar com problema de referência, como previsto neste link, e ocorrido neste link, neste, neste, neste, neste, e neste. E o que complica mais é que, pra mim e para alguns colegas, a referência nunca está facilmente na lista, sempre era preciso executar estes passos.
Agora não mais! E espero que você também não.
Em um módulo global
- Código:
Public Enum ePastaOuArquivo
Pasta = 4
Arquivo = 3
End Enum
Public Function fncBuscaDir(ByVal TipoObjeto As ePastaOuArquivo, _
Optional ByVal arrFiltro, _
Optional ByVal booSelecaoMultipla As Boolean = False) _
As String
' ----------------------------------------------------------------
' Autor : DamascenoJr. (contato@damascenojr.com.br)
' Data : 11/10/2020
' Propósito : Buscar o diretório de uma pasta ou arquivo(s).
' * Observação
' - Filtro em array: ex dim arrFiltro (1 To QtdFiltro, 1 To 2) As String
' ** Exemplo: arrFiltro(1, 1) = "Arquivo Excel" ou "Todos"
' arrFiltro(1, 2) = "xls,xlsx" ou "*"
' ----------------------------------------------------------------
On Error GoTo trataErro
Dim objFD
Dim bytContador As Byte
Dim strResultado As String
Set objFD = Application.FileDialog(TipoObjeto)
With objFD
If TipoObjeto = Arquivo Then
.Title = "Selecione " & IIf(booSelecaoMultipla, "os arquivos", "o arquivo")
.AllowMultiSelect = booSelecaoMultipla
.ButtonName = "Abrir"
With .Filters
.Clear
If IsArray(arrFiltro) Then
For bytContador = LBound(arrFiltro, 1) To UBound(arrFiltro, 1)
If arrFiltro(bytContador, 1) <> "" Then
Call .Add(arrFiltro(bytContador, 1), "*." & Replace(arrFiltro(bytContador, 2), ",", ",*."), bytContador)
End If
Next bytContador
Else
.Add "Arquivo", "*.*", 1
End If
End With
Else
.Title = "Selecione a pasta"
.AllowMultiSelect = False
.ButtonName = "Selecionar"
End If
End With
If objFD.Show Then
For bytContador = 1 To objFD.SelectedItems.Count
strResultado = strResultado & "|" & objFD.SelectedItems(bytContador)
Next bytContador
fncBuscaDir = Mid(strResultado, 2)
End If
sair:
On Error Resume Next
Set objFD = Nothing
Exit Function
trataErro:
fncBuscaDir = ""
Resume sair
End Function
- Anexos
- bdBuscaDir.zip
- Você não tem permissão para fazer download dos arquivos anexados.
- (39 Kb) Baixado 255 vez(es)