Mở file từ Form tìm kiếm dữ liệu

Embevinhphuc

Thành viên mới
Chào các anh chị, em đang làm form tìm kiếm và mở file trực tiếp trên listbox, hiện tại em đang mắc ở chức năng Double Click vào listbox thì tool sẽ mở file theo đường dẫn = giá trị listbox selected. Kính mong anh chị giúp đỡ em ạ. Em chân thành cảm ơn nhiều ạ !
Input : listbox bao gồm các đường dẫn đến file
Output : Double click vào listbox thì sẽ mở file với đường dẫn = giá trị selected
PS: Form có sử dụng các code của các tiền bối chia sẻ trên internet

Bạn cần đăng nhập để thấy hình ảnh
 

tuhocvba

Administrator
Thành viên BQT
Chủ topic là thành viên đã có đóng góp lớn cho diễn đàn. Vì vậy topic này mình sẽ trực tiếp hỗ trợ. Tối nay mình gửi code cho.
Thế nhé.
 

Euler

Biên Tập Viên
Do link của @Embevinhphuc không download được, do đó tôi xin hỗ trợ đường lối như sau:
Giả thiết Listbox của bạn có tên là Listbox1.
Dựa trên hình minh họa của bạn thì có lẽ listbox đang được chia làm 2 coulmn.
Do đó code để Open khi sự kiện double click là:

1. Sự kiện double click (code trên userform)
Mã:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Dim i As Integer
    
    For i = 0 To ListBox1.ListCount - 1 Step 1
        If ListBox1.Selected(i) = True Then
            'Workbook Open
            Workbooks.Open (CStr(ListBox1.List(i, 1)))
            Exit Sub
        End If
    Next i
  
End Sub
2. Bàn về mở file:
Vấn đề 1: Định dạng file được mở

Dựa vào hình vẽ của bạn, nhìn hơi mờ, tôi không chắc file hiển thị trên listbox là Excel. Do đó Việc open như ở code trên có thể tiến hành được không thì tôi không chắc.
Nếu định dạng file không thể mở được bằng phần mềm Excel, thì cần phải tính toán lại.
Ví dụ nếu pdf thì không thể mở như trên.

Vấn đề 2: Mở file và thao tác trên file được mở.
Giả thiết file muốn mở có thể mở được bằng Excel. Vậy tâm lý người dùng là muốn sờ mó vào nó. Tuy nhiên nên nhớ là UserForm lúc này đang hiển thị. Do đó chế độ hiển thị UserForm cũng phải phù hợp. Tôi giả thiết của bạn đang là UserForm1.
Như thế thì cần phải code là:
Mã:
UserForm1.Show vbModeless
Trường hợp code như trên thì UserForm tuy hiển thị nhưng vẫn thao tác được với Excel.
Còn nếu viết:
Mã:
UserForm1.Show
có thể sẽ không thao tác được với Excel nữa, khi đó thì mở cũng không có mấy ý nghĩa.

Tôi hi vọng bạn tự làm được.
Lưu ý, việc chia sẻ file nhờ giúp đỡ thì nên để chế độ public.
 

Embevinhphuc

Thành viên mới
Ôi em xin lỗi. Vì em xử lý file ở chỗ làm, em đã không biết mail ở chỗ làm bị hạn chế vậy, em đã úp lại file mong các anh chị giúp đỡ !
Vấn đề 1: Định dạng file được mở
Là tài liệu bất kỳ trên ổ đĩa nên nhiều định dạng, chủ yếu là excel và pdf ạ
Vấn đề 2: Mở file và thao tác trên file được mở.
Em cũng nghĩ đến việc này, em định Unload Me form khi Double click, nó có khác nhiều so với
UserForm1.Show vbModeless
không ạ?


 

Euler

Biên Tập Viên
Code sau mở cả pdf và excel, bạn sử lại thủ tục double click trong userform, thay thế bằng thủ tục sau:
Mã:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Dim i       As Integer
    Dim j       As Integer
    Dim lktem   As String
    Dim fmf     As String 'Format file: pdf or xls...
    
    For i = 0 To ListBox1.ListCount - 1 Step 1
        If ListBox1.Selected(i) = True Then
            'Workbook Open
            lktem = CStr(ListBox1.List(i, 1))
            j = InStrRev(lktem, ".", , vbTextCompare)
            fmf = Mid(lktem, j + 1, Len(lktem) - j)
            'PDF, ELSM,...
            If InStr(1, fmf, "PDF", vbTextCompare) > 0 Then
                ActiveWorkbook.FollowHyperlink lktem
            ElseIf InStr(1, fmf, "XL", vbTextCompare) > 0 Then
                Workbooks.Open lktem
            End If
            
            Exit Sub
        End If
    Next i
 
End Sub
 
Sửa lần cuối:

tuhocvba

Administrator
Thành viên BQT
Code ở #8 hoạt động khá ổn đấy, @Embevinhphuc test thử xem sao.
Nói là khá ổn vì test với 3 đường link sau:
Mã:
C:\Users\jpnfriend.net\Downloads\XepLichTruc.xls
C:\Users\jpnfriend.net\Downloads\Yeu%20Cau%20ghep%20chuoi.xls
C:\Users\jpnfriend.net\Downloads\Tai lieu BDHSG.pdf
thì đường link số 2 bị lỗi không mở được.
Bạn cần đăng nhập để thấy hình ảnh
 

Euler

Biên Tập Viên
Về lý thuyết mở file excel thì workbooks.open là OK, nên chưa biết tại sao có lỗi như trường hợp 2 mà #9 nêu. Bạn @Embevinhphuc test xem bạn có vấn đề gì không, nếu không vấn đề gì thì cứ dùng .
 

Embevinhphuc

Thành viên mới
Dạ em đã test ở máy cá nhân chưa thấy lỗi, mai em test ở chỗ làm rồi em báo cáo ạ.
Em cảm ơn anh chị đã giúp đỡ !
 
Top