Notifications
Clear all

Retornar nome do arquivo

5 Posts
3 Usuários
0 Reactions
2,212 Visualizações
(@eduhaag)
Posts: 36
Trusted Member
Topic starter
 

Ola pessoal,
estou com uma duvida aqui, criei um codigo que abre a janela de buscar arquivo do windows, e esta me retorna o caminha para um arquivo selecionado.
Porém tenho um textbox onde deve aparecer o nome desse arquivo que foi selecionado, mas sem o caminho.
Meu codigo é esse:

Function AbrirArquivo()

    Dim Caminho As String 'Caminho do arquivo
    Dim fDialog As office.FileDialog
    Dim nome As Variant
    
    'Configura caixa de seleção do arquivo
    Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
    With fDialog
        .AllowMultiSelect = False 'Habilita ou desabilita a seleção de múltiplos arquivos
        .Title = "Selecionar arquivo..."
        '.InitialFileName =  'Caminho inicial para seleção, não utilizado no exemplo
        
        'Configura filtros da caixa de seleção
        .Filters.Clear 'Limpa os filtros
        .Filters.Add "Arquivos Excel - .xls", "*.xls" 'Adiciona filtro para arquivos .xlsb
        
        If .Show = True Then    'Se o parâmetro .Show for igual à True significa
                                'que algum arquivo foi selecionado
            Caminho = .SelectedItems.Item(1) 'Local + arquivo selecionados são passados para
                                            'a variável chamada de "Caminho"
        End If
        
    End With
    tb_caminho.Text = Caminho 'Atribui o caminho do arquivo textbox

Para exemplificar o que preciso, supondo que eu selecione o arquivo que esta no caminho "C:UsersAdminDesktopfollow-up wegdtbase.xls"; no meu textbox apareça escrito "dtbase.xls"

Agradeço desde ja

 
Postado : 30/01/2014 10:18 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

eduhaag,

Bom Dia!

substitua seu código por esse:

Private Sub UserForm_Initialize()
     Dim Caminho As String 'Caminho do arquivo
     Dim fDialog As Office.FileDialog
     Dim nome As Variant
     Dim Posição As Byte
     Dim NomeArquivo As String
     
     'Configura caixa de seleção do arquivo
     Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
     With fDialog
         .AllowMultiSelect = False 'Habilita ou desabilita a seleção de múltiplos arquivos
         .Title = "Selecionar arquivo..."
         '.InitialFileName =  'Caminho inicial para seleção, não utilizado no exemplo
        
         'Configura filtros da caixa de seleção
         .Filters.Clear 'Limpa os filtros
         .Filters.Add "Arquivos Excel - .xls", "*.xls" 'Adiciona filtro para arquivos .xlsb
        
         If .Show = True Then    'Se o parâmetro .Show for igual à True significa
                                 'que algum arquivo foi selecionado
             Caminho = .SelectedItems.Item(1) 'Local + arquivo selecionados são passados para
                                             'a variável chamada de "Caminho"
         End If
        
     End With
     'verifica onde está a última barra invertida do caminho
     Posição = InStrRev(Caminho, "", , vbTextCompare)
     
     'armazena somente o nome do Arquivo
     NomeArquivo = Mid(Caminho, Posição + 1, Len(Caminho) - Posição)
     
     tb_caminho.Text = NomeArquivo 'Atribui o caminho do arquivo textbox
 
Postado : 31/01/2014 5:49 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Outra sugestão utilizando a Function que postou :

Function AbrirArquivo()

    Dim Caminho As String 'Caminho do arquivo
    Dim fDialog As Office.FileDialog
    Dim nome As Variant
    
    Dim sNomeArquivo As String
    
    'Configura caixa de seleção do arquivo
    Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
    With fDialog
        .AllowMultiSelect = False 'Habilita ou desabilita a seleção de múltiplos arquivos
        .Title = "Selecionar arquivo..."
        '.InitialFileName =  'Caminho inicial para seleção, não utilizado no exemplo
        
        'Configura filtros da caixa de seleção
        .Filters.Clear 'Limpa os filtros
        .Filters.Add "Arquivos Excel - .xls", "*.xls" 'Adiciona filtro para arquivos .xlsb
        
        If .Show = True Then    'Se o parâmetro .Show for igual à True significa
                                'que algum arquivo foi selecionado
            
            Caminho = .SelectedItems.Item(1) 'Local + arquivo selecionados são passados para
            
            'Só o Nome sem o "Caminho"
            sNomeArquivo = Dir(Caminho)
    
            'Msg só para confirmação
            MsgBox sNomeArquivo
            
            'Coloca o Nome no TextBox
            tb_caminho.Text = sNomeArquivo
             
        End If
        
    End With
    
End Function

[]s

 
Postado : 31/01/2014 5:56 am
(@eduhaag)
Posts: 36
Trusted Member
Topic starter
 

Muito obrigados amigos Wagner Morel e Mauro Coutinho, as duas respostas resolveram meu problema.
A sua Wagner, consegui adaptar tranquilamente. Obrigado.
E a sua Mauro ja estava basicamente pronta. Obrigado

 
Postado : 31/01/2014 6:21 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Caso seja necessário reabrir o tópico, o autor poderá enviar uma MP para um dos moderadores solicitando o desbloqueio.

 
Postado : 31/01/2014 7:34 am