Hỏi Code để mở file Excel trong thư mục (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

tranquangdat

Thành viên mới
Tham gia
21/1/11
Bài viết
19
Được thích
8
Kính gởi anh CONCOGIA.​
Từ khi đăng ký làm thành viên của dễn đàn em đã vào thành phố mua sách "Lập trình VBA trong excel" về học. Trong quá trình học em có nghĩ ra một bài tập này không hiểu nó có sử dụng bằng code được không, nếu được rất mong anh giúp em. Thành thật cảm ơn anh rất nhiều.
Em có thư mục VBA trong excel trong thư mục này còn có rất nhiều thư mục con, trong các thư mục con này em lưu các văn bản (Như ví dụ trong file đính kem). Trong thư mục VBA trong excel em có một file excel gồm 2 cột.
Cột A là stt, cột B là chứa tên các văn bản đã lưu trong các thư mục con. Bây giờ em muốn tạo một Button khi bấm vào nó sẽ mở file ở Cột B với điều kiện: VD: Nếu con trỏ chuột đang đứng ở Ô A4 khi bấm vào Button mở File nó sẽ mở văn bản có tên ở ô B4. Tương tự Nếu con trỏ chuột đang đứng ở Ô A7 khi bấm vào Button mở File nó sẽ mở văn bản có tên ở ô B7.
Mong anh thông cảm vì em chưa rành về gởi bài mới lên diễn đàn nên đành gởi vào đây. Rất mong nhận được sự giúp đỡ của anh. Một lần nữa cảm ơn anh nhiều.​
 

File đính kèm

Anh ndu96081631 ơi, Em đưa đoạn code này vào excel 2010; excel 2016 thì báo lỗi không thể mở file. còn trong excel 2003 thì vẫn bình thường vậy. Anh xem giúp được không ạ. Cảm ơn anh

Bởi từ Excel 2007 trở về sau thì Application.FileSearch đã không còn được hỗ trợ nên đương nhiên ta phải dùng code khác rồi. Giờ bạn làm như sau:
1> Chèn thêm 1 module với code:
Mã:
Function FilesFoldersList(ByVal RootFolder As String, ByVal ListType As Boolean, _
                          ByVal Search As String, ByVal InSub As Boolean)
  'ListType = True: Get Files list
  'ListType = False: Get Folders list
  Dim sComm As String, sText As String, sFullPath As String, sTmpFile, Arr
  On Error Resume Next
  If Right(RootFolder, 1) <> "\" Then RootFolder = RootFolder & "\"
  sFullPath = """" & RootFolder & Search & """"
  
  With CreateObject("Scripting.FileSystemObject")
    sTmpFile = .GetTempName
    sComm = "DIR " & sFullPath & " /ON /B /A" & IIf(ListType, "-", "") & "D" & IIf(InSub, "/S", " ") & " >" & sTmpFile
    CreateObject("Wscript.Shell").Run "cmd /u /c " & sComm, 0, True
    With .OpenTextFile(sTmpFile, 1, , -2)
      sText = Trim(.ReadAll)
      If Right(sText, 2) = vbCrLf Then sText = Left(sText, Len(sText) - 2)
      If Len(sText) Then
        If InSub = False Then sText = RootFolder & Replace(sText, vbCrLf, vbCrLf & RootFolder)
        FilesFoldersList = Split(sText, vbCrLf)
      End If
      .Close
    End With
  End With
  Kill sTmpFile
End Function
2> Sửa Sub OpenFile bài 2 thành:
Mã:
Sub Open_File()
  Dim sFileName As String, arrFiles
  sFileName = Cells(ActiveCell.Row, 2).Value & ".doc"
  arrFiles = FilesFoldersList(ThisWorkbook.Path, True, sFileName, True)
  If IsArray(arrFiles) Then CreateObject("Shell.Application").Open CStr(arrFiles(0))
End Sub
Xong!
 

File đính kèm

Upvote 0
Thành thật cảm ơn anh ndu96081631. Em đã đưa 2 đoạn code anh làm giúp và làm theo hướng dẫn của anh. Anh cho em hỏi thêm chút em đưa đoạn code vào nó chỉ mở được file có phần mở rộng là *.doc. anh xem lại giúp em làm sao để nó mở tất cả các file như: *.rar; *.xls, .... Cảm ơn anh nhiều.
 
Lần chỉnh sửa cuối:
Upvote 0
Thành thật cảm ơn anh ndu96081631. Em đã đưa 2 đoạn code anh làm giúp và làm theo hướng dẫn của anh. Anh cho em hỏi thêm chút em đưa đoạn code vào nó chỉ mở được file có phần mở rộng là *.doc. anh xem lại giúp em làm sao để nó mở tất cả các file như: *.rar; *.xls, .... Cảm ơn anh nhiều.

Thì bạn để ý trong Sub OpenFile có đoạn:
Mã:
Sub Open_File()
  Dim sFileName As String, arrFiles
  sFileName = Cells(ActiveCell.Row, 2).Value & "[COLOR=#ff0000].doc[/COLOR]"
  arrFiles = FilesFoldersList(ThisWorkbook.Path, True, sFileName, True)
  If IsArray(arrFiles) Then CreateObject("Shell.Application").Open CStr(arrFiles(0))
End Sub
Thấy chỗ màu đỏ trong code không? Chỗ đó có nghĩa là mở file Word. Vậy giờ muốn mở loại file nào, cứ sửa tùy gì (.xls, .rar, chấm mắm nêm, nước mắm gì gì đó...). Nếu không chắc là loại file gì, có thể sửa thành .* (tức loại file nào cũng.. xơi)
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom