Notifications
Clear all

Como abrir o arquivo que está selecionado na ListBox?

6 Posts
2 Usuários
0 Reactions
1,906 Visualizações
wolneypk
(@wolneypk)
Posts: 188
Estimable Member
Topic starter
 

Amigos, tenho uma ListBox que é preenchida com o nome dos arquivos de uma determinada pasta.
Gostaria de criar uma variável, onde o valor dela, seria o item que estivesse selecionado na listbox.

Exemplo:
Minha ListBox tem os itens:

João.txt
Maria.txt
Carlos.txt
José.txt

E supondo que o camarada clique no nome José.txt

Ao clicar em um botão, a minha variável ITEM_SELECIONADO teria como valor, o nome José.txt
Com isso em mãos eu consigo criar o código para abrir o arquivo que está selecionado na ListBox :D

Alguém sabe como eu faço isso?

"O impossível, é só uma questão de tempo"

 
Postado : 10/08/2013 3:39 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Neste momento eu estou sem excel.

Tente adaptar

Public FilePath As String 
Public dic      As Object 
Public oWB      As String 
Public oWS      As String 
Public aWS      As Worksheet 
Private Sub CommandButton1_Click() 
    Dim i   As Long, wb As Workbook, n As Long 
    With Me.ListBox2 
        For i = 0 To .ListCount - 1 
            If .Selected(i) = True Then 
                oWS = .List(i) 
                Set wb = Workbooks.Open(FilePath & oWB, UpdateLinks:=0) 
                wb.Sheets(oWS).Activate 
                Exit For 
            End If 
        Next 
    End With 
End Sub 
 
Private Sub CommandButton2_Click() 
    Set dic = Nothing 
    Unload Me 
End Sub 
 
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 
    Dim i As Long, w(), j As Long, s() 
    With Me 
        .ListBox2.Clear 
        For i = 0 To .ListBox1.ListCount - 1 
            If .ListBox1.Selected(i) = True Then 
                .ListBox2.AddItem aWS.Name 
                oWB = .ListBox1.List(i) 
            End If 
        Next 
    End With 
End Sub 
 
Private Sub UserForm_Initialize() 
    Dim FileList(), i   As Long, n    As Long, fName As String, shtName() 
    Dim wb As Workbook, ws As Worksheet 
     
    Set dic = CreateObject("scripting.dictionary") 
    dic.comparemode = vbTextCompare 
     
    FilePath = "C:Users" 
    UserForm1.Caption = "List of xls files in " & FilePath 
    fName = Dir(FilePath & "*.xls") 
    Set aWS = ActiveSheet 
    On Error Goto Xit 
    With Application 
        .ScreenUpdating = 0 
        .EnableEvents = 0 
        .DisplayAlerts = 0 
    End With 
i = 1: 
    Do While fName <> "" 
        If fName <> ThisWorkbook.Name Then 
            Set wb = Workbooks.Open(FilePath & fName, UpdateLinks:=0) 
            For Each ws In wb.Worksheets 
                If ws.Name = aWS.Name Then 
                    If Not dic.exists(fName) Then 
                        dic.Add fName, ws.Name 
                        Exit For 
                    End If 
                End If 
            Next 
            wb.Close False: Set wb = Nothing 
        End If 
        fName = Dir() 
    Loop 
    With Me.ListBox1 
        .Clear 
        .List = dic.keys 
    End With 
Xit: 
    With Application 
        .ScreenUpdating = 1 
        .EnableEvents = 1 
        .DisplayAlerts = 1 
    End With 
End Sub 

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/08/2013 3:49 pm
wolneypk
(@wolneypk)
Posts: 188
Estimable Member
Topic starter
 

Fiz as adaptações necessárias mais não rolou Alexandre.
Ele não carrega a Listbox com o diretório que eu indico...

Essa parte de carregar a listbox eu já consigo tranquilo, o meu problema está sendo que eu quero que o item que esteja selecionado na Listbox, seja o valor de uma variável.

Igual eu exemplifiquei no primeiro post.

"O impossível, é só uma questão de tempo"

 
Postado : 11/08/2013 6:17 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

No evento click da listbox ou no evento de algum botão:
ITEM_SELECIONADO = ListBox1.Value

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/08/2013 6:36 am
wolneypk
(@wolneypk)
Posts: 188
Estimable Member
Topic starter
 

Maravilha Reinaldo!
Na mosca!

Me diga uma coisa, nessa listbox vão aparecer apenas arquivos .xlsx.
Seria possivel ao selecionar o arquivo na listbox que uma textbox fosse preenchida com alguma informação desse arquivo que foi selecionado?

Exemplo.
Selecionei na listbox o arquivo maria.xlsx
Então a minha textbox seia preenchida com a célula Plan1(A1)?

"O impossível, é só uma questão de tempo"

 
Postado : 11/08/2013 7:31 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Possível é porem é preciso saber qual a lógica para cada registro, se numero da linha procura pelo valor do registro etc...
no evento click da listbox1:
TextBox1.text=listbox1.value ou TextBox1.text=lsheets("Plan1").range("A1").value ....

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/08/2013 7:59 am