Hỏi Code để mở file Excel trong thư mục (1 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

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.​
Cũng đơn giản thôi: Dùng FileSearch
1> Code trong sheet:
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Target.Parent.Rectangles("Btt1").Visible = False
  If Target.Column = 2 And Target.Row > 3 And Target.Count = 1 Then
    With Target.Parent.Rectangles("Btt1")
      .Top = Target.Offset(, 1).Top
      .Left = Target.Offset(, 1).Left
      .Width = Target.Offset(, 1).Width
      .Height = Target.Offset(, 1).Height
      .Visible = True
    End With
  End If
End Sub
2> Code trong Module
PHP:
Sub Open_File()
  Dim fName As String
  fName = Cells(ActiveCell.Row, 2).Value & ".doc"
  With Application.FileSearch
    .NewSearch
    .Filename = fName
    .LookIn = ThisWorkbook.Path
    .SearchSubFolders = True
    If .Execute Then CreateObject("Shell.Application").Open .FoundFiles(1)
  End With
End Sub
Xem file
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Rất tuyệt. Cảm ơn anh ndu96081631 rất nhiều, em lại học thêm được một bài bổ ích. Cho em hỏi thêm một chút anh nhé. Khi em di chuyển chuột vào ô B10 là ô chưa có tên văn bản thì ở ô C10 không nổi nút mở file được không anh. Hơn nữa trong các thư mục con không chỉ các văn bản bằng word mà còn cả Excel, PowerPoint, ... nữa. Mong anh giúp đỡ thêm. Cảm ơn anh nhiều.
 
Lần chỉnh sửa cuối:
Upvote 0
Rất tuyệt. Cảm ơn anh ndu96081631 rất nhiều, em lại học thêm được một bài bổ ích. Cho em hỏi thêm một chút anh nhé. Khi em di chuyển chuột vào ô B10 là ô chưa có tên văn bản thì ở ô C10 không nổi nút mở file được không anh.
Code phía trên có đoạn:
PHP:
If Target.Column = 2 And Target.Row > 3 And Target.Count = 1 Then
Hãy sửa nó thành:
PHP:
If Target.Column = 2 And Target.Row > 3 And Target.Count = 1 And Target(1,1).Value <> "" Then
 
Lần chỉnh sửa cuối:
Upvote 0
Cóp nhặt code của Ndu tại http://www.giaiphapexcel.com/forum/...-các-file-trong-1-folder.&p=208823#post208823 và bài này làm thử cho bạn file đính kèm không biết bạn có ưng không ?

Hướng dẫn sử dụng:
1. Tạo một thư mục riêng, Ví dụ "Bai giang" và giải nén File đính kèm vào thư mục này.
2. Mở file Main -> phải chuột vào ô bất kỳ để mở Browse -> chọn thư mục "Bai giang" và nhấn OK bạn sẽ có danh sách tất cả các file và đuôi của nó có trong thư mục này (khỏi mất công đánh tên file)
3. Đúp chuột vào tên file muốn mở (bạn tạo thêm các loại file có đuôi khác để thử nha).

Xin cảm ơn Ndu về những đoạn code tuyệt vời này !
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cóp nhặt code của Ndu tại http://www.giaiphapexcel.com/forum/...-các-file-trong-1-folder.&p=208823#post208823 và bài này làm thử cho bạn file đính kèm không biết bạn có ưng không ?

Hướng dẫn sử dụng:
1. Tạo một thư mục riêng, Ví dụ "Bai giang" và giải nén File đính kèm vào thư mục này.
2. Mở file Main -> phải chuột vào ô bất kỳ để mở Browse -> chọn thư mục "Bai giang" và nhấn OK bạn sẽ có danh sách tất cả các file và đuôi của nó có trong thư mục này (khỏi mất công đánh tên file)
3. Đúp chuột vào tên file muốn mở (bạn tạo thêm các loại file có đuôi khác để thử nha).

Xin cảm ơn Ndu về những đoạn code tuyệt vời này !
Anh ơi... có lấy tên file thì cũng nên trừ cái file Main.xls ra chứ nhỉ?
 
Upvote 0
cho mình hỏi thăm trong vba có "Btt1" là gì vậy anh Ndu giải thích cho mình rõ với
 
Upvote 0
cho mình hỏi thăm trong vba có "Btt1" là gì vậy anh Ndu giải thích cho mình rõ với
Theo minhf nghĩ đó là cái Button hay là Texbox (Nút Mở file) đúng không vậy anh Ndu
Khi cái nút hiện ra, bấm giữ phím Ctrl rồi nhấp chuột vào nút... Nhìn lên hộp Name box sẽ biết liền

untitled.JPG


Cái tên ấy do tôi tự đặt thôi
 
Upvote 0
Macro tạo list thì được còn mở file thì báo lỗi rồi anh, a xem lại giúp em vơi
 
Upvote 0
1/ Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Parent.Rectangles("Btt1").Visible = False
If Target.Column = 2 And Target.Row > 3 And Target.Count = 1 Then
With Target
.Parent.Rectangles("Btt1")
.
Top = Target.Offset(, 1).Top
.Left = Target.Offset(, 1).Left
.Width = Target.Offset(, 1).Width
.Height = Target.Offset(, 1).Height
.Visible = True
End With
End
If
End Sub

2/
Sub Open_File()
Dim fName As String
fName
= Cells(ActiveCell.Row, 2).Value & ".doc"
With Application.FileSearch
.NewSearch
.Filename = fName
.LookIn = ThisWorkbook.Path
.SearchSubFolders = True
If .Execute Then CreateObject("Shell.Application").Open .FoundFiles(1)
End With
End Sub


và đoạn code tạo list rất hay. em đã ứng dụng nó vào trong quản lý các văn bản, rất thuận lợi. Các cao thủ cho em hỏi thêm ạ. Tại sao khi đưa 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. Rất mong các anh chị trong diễn đàn chỉnh giúp em đoạn code trên để sử dụng được trong excel 2010; 2016. Cảm ơn các anh, chị nhiều
 
Upvote 0
1/ Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Parent.Rectangles("Btt1").Visible = False
If Target.Column = 2 And Target.Row > 3 And Target.Count = 1 Then
With Target
.Parent.Rectangles("Btt1")
.
Top = Target.Offset(, 1).Top
.Left = Target.Offset(, 1).Left
.Width = Target.Offset(, 1).Width
.Height = Target.Offset(, 1).Height
.Visible = True
End With
End
If
End Sub

2/
Sub Open_File()
Dim fName As String
fName
= Cells(ActiveCell.Row, 2).Value & ".doc"
With Application.FileSearch
.NewSearch
.Filename = fName
.LookIn = ThisWorkbook.Path
.SearchSubFolders = True
If .Execute Then CreateObject("Shell.Application").Open .FoundFiles(1)
End With
End Sub


và đoạn code tạo list rất hay. em đã ứng dụng nó vào trong quản lý các văn bản, rất thuận lợi. Các cao thủ cho em hỏi thêm ạ. Tại sao khi đưa 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. Rất mong các anh chị trong diễn đàn chỉnh giúp em đoạn code trên để sử dụng được trong excel 2010; 2016. Cảm ơn các anh, chị nhiều
Lệnh này không còn sử dụng được cho Excel 2010 hay 2016 được bạn nhé.
Mã:
Application.FileSearch
 
Upvote 0
Anh (Chị) có thể sửa giúp em để lệnh Application.FileSearch chạy trong excel 2010 hay 2016 được không ạ. Cảm ơn nhiều
 
Upvote 0
Upvote 0
Em đã tải về xem rồi. Cảm ơn anh nhiều. Trong file của em chứa trên 1000 công văn giờ nhập lại không nổi. Em muốn sửa lại đoạn lệnh trên để áp dụng trong excel 2010 hay 2016, đồng thời cũng học hỏi thêm vba ạ.
 
Upvote 0
Em đã tải về xem rồi. Cảm ơn anh nhiều. Trong file của em chứa trên 1000 công văn giờ nhập lại không nổi. Em muốn sửa lại đoạn lệnh trên để áp dụng trong excel 2010 hay 2016, đồng thời cũng học hỏi thêm vba ạ.

Muốn sử dụng File THEO DOI CONG VAN trên Excel 2010 thì bạn thực hiện như sau: Mở File rồi vào File > Save As, chọn Browse, trong khung Save As type chọn Excel Macro – Enabled Workbook (*.xlsm) rồi nhấn Save.
 
Upvote 0
Muốn sử dụng File THEO DOI CONG VAN trên Excel 2010 thì bạn thực hiện như sau: Mở File rồi vào File > Save As, chọn Browse, trong khung Save As type chọn Excel Macro – Enabled Workbook (*.xlsm) rồi nhấn Save.

Cảm ơn anh Be09 đa hướng dẫn. Em thử rồi mà không được anh Be09 ơi. em gởi file lên nhờ anh và các anh chị trên Diễn đàn giúp. Cảm ơn nhiều. Trong File em gởi lên ở cột I "Tên VB lưu" chỉ cần tên lưu trùng tên với tên lưu VB cùng thư mục với file thì mở được.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn anh Be09 đa hướng dẫn. Em thử rồi mà không được anh Be09 ơi. em gởi file lên nhờ anh và các anh chị trên Diễn đàn giúp. Cảm ơn nhiều. Trong File em gởi lên ở cột I "Tên VB lưu" chỉ cần tên lưu trùng tên với tên lưu VB cùng thư mục với file thì mở được.

Code trong File của bạn là của người khác. Vì vậy, trước đây bạn lấy code ở bài viết nào thì vào đó hỏi người đó cho lẹ.

Tôi đã xem, nhưng chưa rảnh để xem một mớ code trong File của bạn, chịu khó chờ người khác giúp vậy.
 
Upvote 0
Cũng đơn giản thôi: Dùng FileSearch
1> Code trong sheet:
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Target.Parent.Rectangles("Btt1").Visible = False
  If Target.Column = 2 And Target.Row > 3 And Target.Count = 1 Then
    With Target.Parent.Rectangles("Btt1")
      .Top = Target.Offset(, 1).Top
      .Left = Target.Offset(, 1).Left
      .Width = Target.Offset(, 1).Width
      .Height = Target.Offset(, 1).Height
      .Visible = True
    End With
  End If
End Sub
2> Code trong Module
PHP:
Sub Open_File()
  Dim fName As String
  fName = Cells(ActiveCell.Row, 2).Value & ".doc"
  With Application.FileSearch
    .NewSearch
    .Filename = fName
    .LookIn = ThisWorkbook.Path
    .SearchSubFolders = True
    If .Execute Then CreateObject("Shell.Application").Open .FoundFiles(1)
  End With
End Sub
Xem file

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
 
Upvote 0
Code trong File của em cũng lấy trong diễn đàn giải pháp excel của anh ndu96081631 viết giúp cho anh nào đó. Em sẽ tìm lại vào trang đó. cảm ơn anh be09
 
Upvote 0
Web KT

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

Back
Top Bottom