Bạn đang cần tạo liên kết với các File trong một Folder vào một bảng tính Excel. Bạn đã có cột lưu tên File và cần một cách để tạo liên kết HYPERLINK nhanh chóng và thuận tiện.
Trong Excel, bạn có thể sử dụng HYPERLINK để tạo liên kết. Nhưng cách này thì bạn sẽ cần thực hiện cập nhật đường dẫn cho HYPERLINK mỗi khi có File. Vậy nếu bạn cần một cách nhanh hơn hay tự động thì bài viết này sẽ giúp bạn.
Tạo Hyperlink bằng FORMULA
Để tạo được liên kết tới File bằng hàm HYPERLINK bằng cách sau, trước tiên bạn cần lấy đường dẫn của File.
📝Các File nên nằm chung trong một Folder. Và tên của File cần được lưu tại 1 cột trên bảng tính Excel.
Trên Windows, bạn có thể lấy đường dẫn của File bằng cách chuột phải vào File và chọn Properties. Trong tab Security, đường dẫn đầy đủ của File sẽ là Object name ➡ Bạn hãy Copy đường dẫn đó.
Như trên, mình đã có được đường dẫn đầy đủ của File.
D:\16.Excel\test-vba\hyperlink\doc-pdf\doc1.pdf
Tiếp theo, tùy biến thành liến kết HYPERLINK đến với tên File tại cột B.
=HYPERLINK("D:\16.Excel\test-vba\hyperlink\doc-pdf\"&B2&".pdf";B2)
Trong đó:
- D:\16.Excel\test-vba\hyperlink\doc-pdf\ : là đường dẫn gốc của File
- B2 : là Cells chứa tên file. **Bạn chỉ lấy tên File thôi nhé.
- .pdf : là định dạng của File.
Thực hiện hàm HYPERLINK đã tùy chỉnh như trên, bạn sẽ tạo được Hyperlink đến File.
Và sau đó, bạn chỉ cần thêm tên File vào cột B, sao chép hàm đã tạo thì tự động Cells sẽ được tạo liên kết HYPERLINK.
Tạo HYPERLINK bằng VBA Excel
Cách tạo bằng hàm HYPERLINK vẫn có một chút thủ công. Với VBA bạn có thể làm nó tự động hơn. Mình có 2 cách giúp bạn tạo như sau.
- Tự động thêm đường dẫn HYPERLINK khi nhấp chuột.
- Mở luôn File mà không cần thêm đường dẫn HYPERLINK.
Cách 1: Tự động thêm HYPERLINK khi nhấp chuột vào Cells.
Ví dụ: Sử dụng cột B để lưu tên File. Mỗi khi thêm tên File vào cột B, nhấp chuột vào Cells đó. Tự động liên kết HYPERLINK sẽ được tạo.
Bạn hãy tham khảo hàm sau:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo ErrorHandler
Dim folder As String
Dim fileName As String
Dim fileType As String
folder = "D:\16.Excel\test-vba\hyperlink\doc-pdf\"
fileName = Target.Value
fileType = ".pdf"
If Target.Column = 2 And Target.Row > 1 And Target.Value <> "" Then
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=folder & fileName & fileType
End If
Exit Sub
ErrorHandler:
Exit Sub
End Sub
Code language: VB.NET (vbnet)
Với hàm trên, bạn cần lưu ý:
- Worksheet_SelectionChange: là sự kiện thay đổi địa chỉ Cells trong Worksheet. Tham khảo thêm cách sự kiện của Worksheet tại đây.
- Target.Column = 2 And Target.Row > 1 And Target.Value <> “” : điều kiện trong hàm If chỉ bắt khi chọn trên cột B và từ B1 trở xuống và phải có tên File.
- On Error GoTo ErrorHandler: đây là câu lệnh bắt lỗi nếu xảy ra. Hàm sẽ tự động nhảy đến nhãn ErrorHandler và thoát hàm bằng Exit Sub.
📝Lưu ý: Sự kiện Worksheet_SelectionChange sẽ thực thi mỗi khi thay đổi lựa chọn Cells nên hay xảy ra lỗi. Vì vậy, bạn cần sử dụng On Error GoTo ErrorHandler để thoát lỗi.
Cách 2: Mở luôn File mà không cần thêm đường dẫn HYPERLINK.
Cách 2 này, không như cách 1 ở trên. Nó không tạo liên kết HYPERLINK mà chỉ khi nào bạn DoubleClick vào Cells thì File sẽ tự động được mở bằng phướng thức FollowHyperlink.
Bạn hãy tham khảo hàm sau:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim folder As String
Dim fileName As String
Dim fileType As String
Dim linkFile As String
folder = "D:\16.Excel\test-vba\hyperlink\doc-pdf\"
fileName = Target.Value
fileType = ".pdf"
linkFile = folder & fileName & fileType
If Target.Column = 2 And Target.Row > 1 And Target.Value <> "" Then
ActiveWorkbook.FollowHyperlink Address:=linkFile, NewWindow:=True
End If
End Sub
Code language: VB.NET (vbnet)
Kết luận
Như vậy, mình đã chia sẻ với bạn các cách tạo liên kết HYPERLINK đến 1 File hay nhiều File trên Excel. Bạn chỉ cần tên File, thư mục và định dạng của File thì các cách mình chia sẻ ở trên đều áp dụng được. Nếu bạn thích đơn giản thì hãy dùng Formula HYPERLINK, còn nếu bạn muốn nhanh hơn hãy dùng VBA.
Chúc bạn vui!