Notifications
Clear all

Listbox com hiperlink para Windows Explorer

17 Posts
2 Usuários
0 Reactions
2,512 Visualizações
 Rech
(@rech)
Posts: 0
New Member
Topic starter
 

Pessoal,
Boa tarde!

Estou quebrando a cabeça aqui, mas não consegui encontrar o código para solucionar meu problema.

A ação é a seguinte: ao clicar no botão "Histórico de Mensagens", abre o FormHB (Listbox).

Gostaria que, ao abrir o listbox, fosse exibida a lista de dados contidos nas colunas B, A, E e L (oculta) da guia "Dados_Brindes". E que, ao selecionar uma linha da lista e apertar em "Abrir Pasta", a pasta correspondente (link na coluna L) se abrisse para consulta dos arquivos.

Estou anexando a planilha modelo com o problema citado acima:

Muito obrigado!!!

 
Postado : 27/10/2015 1:14 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Tente algo assim...

Private Sub UserForm_Initialize()
    Dim row As Integer

    Resumo.ColumnCount = 2
    Resumo.ColumnWidths = "50;150"
    For row = 3 To 10
        Resumo.AddItem Range("L" & row).Text
        Resumo.List(Resumo.ListCount - 1, 1) = Range("L" & row).Text
    Next
End Sub
Private Sub Resumo_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    On Error GoTo ErrHandler
    ThisWorkbook.FollowHyperlink Address:=Resumo.List(Resumo.ListIndex, 1)
ExitHere:
    Exit Sub
ErrHandler:
    If Err.Number = -2147221014 Then
        MsgBox "Link incorreto!"
    Else
        MsgBox "Erro: " & Err.Description
    End If
    Resume ExitHere
End Sub

Tente adaptar..

Att

 
Postado : 27/10/2015 1:37 pm
 Rech
(@rech)
Posts: 0
New Member
Topic starter
 

Alexandre,

Inseri o código abaixo, porém os dados não aparecem na listbox. Aparece barra de rolagem, é possível selecionar a linha, mas está em branco.

O botão "abrir pasta" também está inoperante e ao dar um duplo clique aparece a mensagem: "Erro: Argumento ou chamada de procedimento inválida".

Estou anexando a planilha com o código inserido. Poderia me ajudar, por favor?

Boa tarde!!

Tente algo assim...

Private Sub UserForm_Initialize()
    Dim row As Integer

    Resumo.ColumnCount = 2
    Resumo.ColumnWidths = "50;150"
    For row = 3 To 10
        Resumo.AddItem Range("L" & row).Text
        Resumo.List(Resumo.ListCount - 1, 1) = Range("L" & row).Text
    Next
End Sub
Private Sub Resumo_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    On Error GoTo ErrHandler
    ThisWorkbook.FollowHyperlink Address:=Resumo.List(Resumo.ListIndex, 1)
ExitHere:
    Exit Sub
ErrHandler:
    If Err.Number = -2147221014 Then
        MsgBox "Link incorreto!"
    Else
        MsgBox "Erro: " & Err.Description
    End If
    Resume ExitHere
End Sub

Tente adaptar..

Att

 
Postado : 27/10/2015 1:56 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Segue arquivo.

Att

 
Postado : 27/10/2015 2:05 pm
 Rech
(@rech)
Posts: 0
New Member
Topic starter
 

Boa tarde!!

Segue arquivo.

Att

Não entendi, Alexandre.

A planilha que você enviou está com o mesmo problema.

Abs,

 
Postado : 27/10/2015 2:16 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Sinto muito, em meu teste deu certo!

Veja imagem.

Att

 
Postado : 27/10/2015 2:41 pm
 Rech
(@rech)
Posts: 0
New Member
Topic starter
 

Alexandre,

Entendi agora. Você colocou uma macro na guia "Dados_Brindes", fiz o teste desta maneira e também funcionou.

Porém meu caso é diferente, gostaria que a marcro com a listbox preenchida fosse executada na guia "Brindes", ao apertar o botão "Histórico de Mensagens". Além disto, gostaria que a lista não tivesse limite, que fossem exibidas todas as linhas da guia "Dados_Brindes" e que ao clicar em "Abrir Pasta" a pasta do hiperlink também se abrisse, da mesma forma que está funcionando ao fazer o duplo clique.

Você saberia como me orientar?

Obrigado.

 
Postado : 27/10/2015 2:59 pm
 Rech
(@rech)
Posts: 0
New Member
Topic starter
 

Pessoal,
Boa tarde!

Alguém pode me ajudar a solucionar este problema?

Muito obrigado!

 
Postado : 28/10/2015 12:17 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Tente algo assim...

Private Sub CommandButton1_Click()
    Dim row As Integer
    Dim LastRow As Long

    LastRow = Cells(Rows.Count, "A").End(xlUp).row

    Resumo.ColumnCount = 2
    Resumo.ColumnWidths = "50;150"
    For row = 3 To LastRow
        Resumo.AddItem Range("L" & row).Text
        Resumo.List(Resumo.ListCount - 1, 1) = Range("L" & row).Text
    Next
End Sub

Não testado!!

Att

 
Postado : 29/10/2015 5:58 am
 Rech
(@rech)
Posts: 0
New Member
Topic starter
 

Bom dia!!

Tente algo assim...

Private Sub CommandButton1_Click()
    Dim row As Integer
    Dim LastRow As Long

    LastRow = Cells(Rows.Count, "A").End(xlUp).row

    Resumo.ColumnCount = 2
    Resumo.ColumnWidths = "50;150"
    For row = 3 To LastRow
        Resumo.AddItem Range("L" & row).Text
        Resumo.List(Resumo.ListCount - 1, 1) = Range("L" & row).Text
    Next
End Sub

Não testado!!

Att

Alexandre,

Ao pressionar o "commandbutton1" agora está puxando toda a lista, como eu gostaria!

Preciso de mais duas ajudas! A lista precisa ficar numa sheet diferente do form... O código está puxando da mesma sheet... E gostaria que a lista fosse carregada automaticamente ao abrir o "commandbutton1" sem que houvesse necessidade de pressioná-lo...

Caso você saiba, te agradeço!

Abs.

 
Postado : 29/10/2015 10:30 am
 Rech
(@rech)
Posts: 0
New Member
Topic starter
 

Alexandre,

Consegui consertar.

A única coisa pendente agora é que a base de dados está em uma guia (sheet) e o botão (macro) na outra, qual o código uso para puxar no listbox, os dados de outra guia?

Se colocar a macro na mesma guia da base de dados está funcionando perfeitamente, só falta fazer esta correção.

Obrigado!

 
Postado : 29/10/2015 1:10 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!
Altere as linhas

        Resumo.AddItem .Range("L" & row).Text
        Resumo.List(Resumo.ListCount - 1, 1) = Range("L" & row).Text

Para....

        Resumo.AddItem Worksheets("Dados_Brindes").Range("L" & row).Text
        Resumo.List(Resumo.ListCount - 1, 1) = Worksheets("Dados_Brindes").Range("L" & row).Text

Att

 
Postado : 29/10/2015 1:20 pm
 Rech
(@rech)
Posts: 0
New Member
Topic starter
 

Continua sem funcionar, Alexandre.

Veja como está o código:


Private Sub UserForm_Initialize()
    
    Dim row As Integer
    Dim LastRow As Long

    LastRow = Cells(Rows.Count, "A").End(xlUp).row
  
    Resumo.ColumnCount = 4
    Resumo.ColumnWidths = "60;170;60;0"
    Resumo.Font.Size = 8
    Resumo.Font.Name = "Trebuchet MS"
    Resumo.TextAlign = fmTextAlignCenter
    
    For row = 2 To LastRow
 
        Resumo.AddItem Worksheets("Dados_Brindes").Range("P" & row).Text
        Resumo.List(Resumo.ListCount - 1, 1) = Worksheets("Dados_Brindes").Range("Q" & row).Text
        Resumo.List(Resumo.ListCount - 1, 2) = Worksheets("Dados_Brindes").Range("R" & row).Text
        Resumo.List(Resumo.ListCount - 1, 3) = Worksheets("Dados_Brindes").Range("S" & row).Text

    Next
    
End Sub

 
Postado : 29/10/2015 1:38 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

No meu teste, eu clickkei em outra guia executei a rotina e listou os dados da guia Dados_Brindes, se não for isso, eu sinceramente não sei o que está tentando dizer.

Vamos aguardar alguém que entendeu responder.

Att

 
Postado : 29/10/2015 2:19 pm
 Rech
(@rech)
Posts: 0
New Member
Topic starter
 

Boa tarde!!

No meu teste, eu clickkei em outra guia executei a rotina e listou os dados da guia Dados_Brindes, se não for isso, eu sinceramente não sei o que está tentando dizer.

Vamos aguardar alguém que entendeu responder.

Att

Alexandre,

Segue anexa a planilha. Faça um teste, por favor.

Muito obrigado!!

 
Postado : 29/10/2015 3:17 pm
Página 1 / 2