-
Sử dụng Hyperlink trên Form
mrtoanbin > 25-10-18, 11:15 PM
Xin được các bác hướng dẫn làm như sau:
- Table có 3 Filed, trong đó 01 trường dữ liệu kiểu hyperlink
- Tạo Form trống gồm các 03 texbox để lấy dữ liệu vào Table trên
Nhu cầu: Khi lấy dữ liệu trên Form vào Table thì đã có siêu liên kết tương ứng (chuyên nghệp nhưng suy nghĩ rất đau đầu)
Mục đích: Cập nhật văn bản để tìm kiếm
XIn được cảm ơn rất nhiều và đang rất cần!! -
RE: Sử dụng Hyperlink trên Form
ongke0711 > 30-10-18, 01:13 AM
Tôi demo cho bạn như sau:
- Table có sẳn 1 field có kiểu dữ liệu dạng Hyperlink.
- 1 Form có 1 textbox tên "txtHyperlinkedFile": dùng chứa đường dẫn tới file cần tạo hyperlink. Textbox này có Control Source là Field hyperlink trong table.
Cách thức:
- Lấy dường dẫn đến file cần tạo hyperlink.
- Thêm dấu # trước đường dẫn để chèn hyperlink.
- Tôi dùng toàn bộ Late Binding cho 2 bộ thư viện:
+ Microsoft Office XX.X Object Library
+ Microsoft Scripting Runtime
- Code cho nút lệnh chèn hyperlink:
Mã PHP:Option Explicit
Private Sub cmdChonFileHyperlink_Click()
Dim fso As Object
Dim sTieuDe As String
Dim sHyperlinkFile As String
Dim sTenFile As String
Set fso = CreateObject("Scripting.FileSystemObject")
sTieuDe = "Ch" & ChrW(7885) & "n File c" & ChrW(7847) & "n t" & ChrW(7841) & "o Hyperlink:"
'Hien thi ten file + # + Dia chi (duong dan) file Hyperlink'
'(Phai co dau # truoc duong dan toi file Hyperlink)'
sTenFile = fFileDialog(msoFileDialogFilePicker, sTieuDe, "C:\", False)
sHyperlinkFile = fso.GetFileName(sTenFile) & "#" & sTenFile
Me.txtHyperLinkedFile = sHyperlinkFile
End Sub
Trong code trên có dùng hàm fFileDialog để lấy tên file cần link: bạn copy vào Module và đặt tên tuỳ ý. Vd: modFSBrowser
Mã PHP:Option Explicit
Public Enum msoFileDialogType 'Phai khai bao khi dùng Late Binding
' msoFileDialogOpen = 1
' msoFileDialogSaveAs = 2
msoFileDialogFilePicker = 3
msoFileDialogFolderPicker = 4
End Enum
'---------------------------------------------------------------------------------------
' Cung cap các tham sô:
' ~~~~~~~~~~~~~~~~~~~~
' lDialogType : 3 (hoac 4 cho Folder)
' sTitle : Tiêu de cua hop thoai FileDialog
' sInitFileName : Duong dan bat dau tim
' bMultiSelect : Nên chon False
' sFilter : Chi loc tìm các file liêt kê
'
' Ví du:
' fFileDialog(msoFileDialogOpen,,,,"MS Excel,*.xlsx;*.xls~MS Word,*.doc;*.docx")
' fFileDialog(msoFileDialogOpen, "Muon chon file nào?", "C:\tmp\",,"MS Access,*.accdb;*.mdb")
' fFileDialog(msoFileDialogOpen)
'---------------------------------------------------------------------------------------
Public Function fFileDialog(Optional ByRef lDialogType As msoFileDialogType = msoFileDialogFilePicker, _
Optional sTitle As String = "", _
Optional sInitFileName = "", _
Optional bMultiSelect As Boolean = False, _
Optional sFilter As String = "All Files,*.*") As String
On Error GoTo Error_Handler
Dim oFd As Object
Dim vItems As Variant 'Files/Folders'
Dim vFilter As Variant
Const msoFileDialogViewDetails = 2 'Enum MsoFileDialogView'
Set oFd = Application.FileDialog(lDialogType)
With oFd
'Dat ten cho tieu de hop thoai
If sTitle = "" Then
Select Case lDialogType
Case msoFileDialogOpen
.Title = "Ch" & ChrW(7885) & "n File " & ChrW(273) & ChrW(7875) & " m" & ChrW(7903) & ":"
Case msoFileDialogSaveAs
.Title = "Ch" & ChrW(7885) & "n File " & ChrW(273) & ChrW(7875) & " l" & ChrW(432) & "u:"
Case msoFileDialogFilePicker
.Title = "Ch" & ChrW(7885) & "n File:"
Case msoFileDialogFolderPicker
.Title = "Ch" & ChrW(7885) & "n Folder:"
End Select
Else
.Title = sTitle
End If
'Thiet lap duong dan Folder mac dinh'
If sInitFileName <> "" Then .InitialFileName = sInitFileName
.AllowMultiSelect = bMultiSelect
'Chon kieu View hien thi - mac dinh chon Detail'
.InitialView = msoFileDialogViewDetails
'Thiet lap chuoi loc'
If lDialogType <> msoFileDialogFolderPicker Then
Call .Filters.Clear
For Each vFilter In Split(sFilter, "~") 'Them vào tung chuoi Filter, tung dong
Call .Filters.Add(Split(vFilter, ",")(0), Split(vFilter, ",")(1))
Next vFilter
End If
If .Show = True Then
For Each vItems In .SelectedItems
fFileDialog = vItems
Next
End If
End With
Error_Handler_Exit:
On Error Resume Next
If Not oFd Is Nothing Then Set oFd = Nothing
Exit Function
Error_Handler:
MsgBox "The following error has occured" & vbCrLf & vbCrLf & _
"Error Number: " & Err.Number & vbCrLf & _
"Error Source: fFileDialog" & vbCrLf & _
"Error Description: " & Err.Description & _
Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
, vbOKOnly + vbCritical, "An Error has Occured!"
Resume Error_Handler_Exit
End Function
Link file demo: http://www.mediafire.com/file/ei71gtzg2pjra1b/Hyperlink.mdb/file -
RE: Sử dụng Hyperlink trên Form
mrtoanbin > 30-10-18, 01:15 PM
(30-10-18, 01:13 AM)ongke0711 Đã viết: Tôi demo cho bạn như sau:
- Table có sẳn 1 field có kiểu dữ liệu dạng Hyperlink.
- 1 Form có 1 textbox tên "txtHyperlinkedFile": dùng chứa đường dẫn tới file cần tạo hyperlink. Textbox này có Control Source là Field hyperlink trong table.
Cách thức:
- Lấy dường dẫn đến file cần tạo hyperlink.
- Thêm dấu # trước đường dẫn để chèn hyperlink.
- Tôi dùng toàn bộ Late Binding cho 2 bộ thư viện:
+ Microsoft Office XX.X Object Library
+ Microsoft Scripting Runtime
- Code cho nút lệnh chèn hyperlink:
Mã PHP:Option Explicit
Private Sub cmdChonFileHyperlink_Click()
Dim fso As Object
Dim sTieuDe As String
Dim sHyperlinkFile As String
Dim sTenFile As String
Set fso = CreateObject("Scripting.FileSystemObject")
sTieuDe = "Ch" & ChrW(7885) & "n File c" & ChrW(7847) & "n t" & ChrW(7841) & "o Hyperlink:"
'Hien thi ten file + # + Dia chi (duong dan) file Hyperlink'
'(Phai co dau # truoc duong dan toi file Hyperlink)'
sTenFile = fFileDialog(msoFileDialogFilePicker, sTieuDe, "C:\", False)
sHyperlinkFile = fso.GetFileName(sTenFile) & "#" & sTenFile
Me.txtHyperLinkedFile = sHyperlinkFile
End Sub
Trong code trên có dùng hàm fFileDialog để lấy tên file cần link: bạn copy vào Module và đặt tên tuỳ ý. Vd: modFSBrowser
Mã PHP:Option Explicit
Public Enum msoFileDialogType 'Phai khai bao khi dùng Late Binding
' msoFileDialogOpen = 1
' msoFileDialogSaveAs = 2
msoFileDialogFilePicker = 3
msoFileDialogFolderPicker = 4
End Enum
'---------------------------------------------------------------------------------------
' Cung cap các tham sô:
' ~~~~~~~~~~~~~~~~~~~~
' lDialogType : 3 (hoac 4 cho Folder)
' sTitle : Tiêu de cua hop thoai FileDialog
' sInitFileName : Duong dan bat dau tim
' bMultiSelect : Nên chon False
' sFilter : Chi loc tìm các file liêt kê
'
' Ví du:
' fFileDialog(msoFileDialogOpen,,,,"MS Excel,*.xlsx;*.xls~MS Word,*.doc;*.docx")
' fFileDialog(msoFileDialogOpen, "Muon chon file nào?", "C:\tmp\",,"MS Access,*.accdb;*.mdb")
' fFileDialog(msoFileDialogOpen)
'---------------------------------------------------------------------------------------
Public Function fFileDialog(Optional ByRef lDialogType As msoFileDialogType = msoFileDialogFilePicker, _
Optional sTitle As String = "", _
Optional sInitFileName = "", _
Optional bMultiSelect As Boolean = False, _
Optional sFilter As String = "All Files,*.*") As String
On Error GoTo Error_Handler
Dim oFd As Object
Dim vItems As Variant 'Files/Folders'
Dim vFilter As Variant
Const msoFileDialogViewDetails = 2 'Enum MsoFileDialogView'
Set oFd = Application.FileDialog(lDialogType)
With oFd
'Dat ten cho tieu de hop thoai
If sTitle = "" Then
Select Case lDialogType
Case msoFileDialogOpen
.Title = "Ch" & ChrW(7885) & "n File " & ChrW(273) & ChrW(7875) & " m" & ChrW(7903) & ":"
Case msoFileDialogSaveAs
.Title = "Ch" & ChrW(7885) & "n File " & ChrW(273) & ChrW(7875) & " l" & ChrW(432) & "u:"
Case msoFileDialogFilePicker
.Title = "Ch" & ChrW(7885) & "n File:"
Case msoFileDialogFolderPicker
.Title = "Ch" & ChrW(7885) & "n Folder:"
End Select
Else
.Title = sTitle
End If
'Thiet lap duong dan Folder mac dinh'
If sInitFileName <> "" Then .InitialFileName = sInitFileName
.AllowMultiSelect = bMultiSelect
'Chon kieu View hien thi - mac dinh chon Detail'
.InitialView = msoFileDialogViewDetails
'Thiet lap chuoi loc'
If lDialogType <> msoFileDialogFolderPicker Then
Call .Filters.Clear
For Each vFilter In Split(sFilter, "~") 'Them vào tung chuoi Filter, tung dong
Call .Filters.Add(Split(vFilter, ",")(0), Split(vFilter, ",")(1))
Next vFilter
End If
If .Show = True Then
For Each vItems In .SelectedItems
fFileDialog = vItems
Next
End If
End With
Error_Handler_Exit:
On Error Resume Next
If Not oFd Is Nothing Then Set oFd = Nothing
Exit Function
Error_Handler:
MsgBox "The following error has occured" & vbCrLf & vbCrLf & _
"Error Number: " & Err.Number & vbCrLf & _
"Error Source: fFileDialog" & vbCrLf & _
"Error Description: " & Err.Description & _
Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
, vbOKOnly + vbCritical, "An Error has Occured!"
Resume Error_Handler_Exit
End Function
Link file demo: http://www.mediafire.com/file/ei71gtzg2pjra1b/Hyperlink.mdb/file
Cảm ơn bài viết của Bác, đã đáp ứng nhu cầu nhưng xin được hỏi them: Thay vì tên file mình tự gõ vào dòng chữ theo ý mình được không, như thế sẽ chuyên nghiệp hơn ấy bác? -
RE: Sử dụng Hyperlink trên Form
ongke0711 > 30-10-18, 02:17 PM
(30-10-18, 01:15 PM)mrtoanbin Đã viết: Cảm ơn bài viết của Bác, đã đáp ứng nhu cầu nhưng xin được hỏi them: Thay vì tên file mình tự gõ vào dòng chữ theo ý mình được không, như thế sẽ chuyên nghiệp hơn ấy bác?
Trong code có đoạn này:
sHyperlinkFile = fso.GetFileName(sTenFile) & "#" & sTenFile
Bạn thay thế chỗ fso.GetFileName(sTenFile) bằng chuỗi ở textbox bạn gõ vào.
sHyperlinkFile = "Ten file go vo" & "#" & sTenFile -
RE: Sử dụng Hyperlink trên Form
mrtoanbin > 30-10-18, 08:21 PM
(30-10-18, 02:17 PM)ongke0711 Đã viết:
(30-10-18, 01:15 PM)mrtoanbin Đã viết: Cảm ơn bài viết của Bác, đã đáp ứng nhu cầu nhưng xin được hỏi them: Thay vì tên file mình tự gõ vào dòng chữ theo ý mình được không, như thế sẽ chuyên nghiệp hơn ấy bác?
Trong code có đoạn này:
sHyperlinkFile = fso.GetFileName(sTenFile) & "#" & sTenFile
Bạn thay thế chỗ fso.GetFileName(sTenFile) bằng chuỗi ở textbox bạn gõ vào.
sHyperlinkFile = "Ten file go vo" & "#" & sTenFile
Đó là một cách hay, nhưng chưa phải vậy Bác.
Ý là thế này: Nội dung trích yếu mình gõ vào giống như mình làm khi Click chuột phải và chọn Hyperlink -> Edit hyperlink ấy, và nội dung đó là mình ghi vào phần “Text to display”. Tức là mỗi đường dẫn là 01 nội dung khác nhau. -
RE: Sử dụng Hyperlink trên Form
ongke0711 > 30-10-18, 08:41 PM
Tôi chỉ bạn chỗ đoạn code để đưa text rồi bạn tự ngâm cứu cách truyền tham số từ textbox đưa vô chứ có phải kêu gõ vô đó đâu.
Còn cụ thể như thế nào thì bạn đưa file demo để xem mặt mũi nó, thao tác ra sao mới có giải pháp xử lý. Nói như bạn là làm thao tác giống như Word vậy à?
Mỗi ứng dụng có cái đặc thù của nó, bạn muốn Access làm giống như word thì khó lắm nhé. -
RE: Sử dụng Hyperlink trên Form
mrtoanbin > 30-10-18, 09:50 PM
(30-10-18, 08:41 PM)ongke0711 Đã viết: Tôi chỉ bạn chỗ đoạn code để đưa text rồi bạn tự ngâm cứu cách truyền tham số từ textbox đưa vô chứ có phải kêu gõ vô đó đâu.
Còn cụ thể như thế nào thì bạn đưa file demo để xem mặt mũi nó, thao tác ra sao mới có giải pháp xử lý. Nói như bạn là làm thao tác giống như Word vậy à?
Mỗi ứng dụng có cái đặc thù của nó, bạn muốn Access làm giống như word thì khó lắm nhé.
Nhờ bác nhắc truyền tham số đã làm thành công, cảm ơn bác gợi ý! -
RE: Sử dụng Hyperlink trên Form
hoat > 20-12-21, 05:56 PM
Cho em hỏi thêm là mình muốn tạo một nút khi bấm vào nó sẽ mở 1 một folder trên máy tính tình mình làm như thế nào ạ ? -
RE: Sử dụng Hyperlink trên Form
ongke0711 > 20-12-21, 06:17 PM
(20-12-21, 05:56 PM)hoat Đã viết: Cho em hỏi thêm là mình muốn tạo một nút khi bấm vào nó sẽ mở 1 một folder trên máy tính tình mình làm như thế nào ạ ?
Bạn tìm hiểu FileDialog nhé.
Link: https://thuthuataccess.com/forum/post-13...l#pid13383 -
RE: Sử dụng Hyperlink trên Form
haidc > 03-03-23, 04:20 PM
(30-10-18, 01:13 AM)ongke0711 Đã viết: Tôi demo cho bạn như sau:
- Table có sẳn 1 field có kiểu dữ liệu dạng Hyperlink.
- 1 Form có 1 textbox tên "txtHyperlinkedFile": dùng chứa đường dẫn tới file cần tạo hyperlink. Textbox này có Control Source là Field hyperlink trong table.
Cách thức:
- Lấy dường dẫn đến file cần tạo hyperlink.
- Thêm dấu # trước đường dẫn để chèn hyperlink.
- Tôi dùng toàn bộ Late Binding cho 2 bộ thư viện:
+ Microsoft Office XX.X Object Library
+ Microsoft Scripting Runtime
- Code cho nút lệnh chèn hyperlink:
Mã PHP:Option Explicit
Private Sub cmdChonFileHyperlink_Click()
Dim fso As Object
Dim sTieuDe As String
Dim sHyperlinkFile As String
Dim sTenFile As String
Set fso = CreateObject("Scripting.FileSystemObject")
sTieuDe = "Ch" & ChrW(7885) & "n File c" & ChrW(7847) & "n t" & ChrW(7841) & "o Hyperlink:"
'Hien thi ten file + # + Dia chi (duong dan) file Hyperlink'
'(Phai co dau # truoc duong dan toi file Hyperlink)'
sTenFile = fFileDialog(msoFileDialogFilePicker, sTieuDe, "C:\", False)
sHyperlinkFile = fso.GetFileName(sTenFile) & "#" & sTenFile
Me.txtHyperLinkedFile = sHyperlinkFile
End Sub
Trong code trên có dùng hàm fFileDialog để lấy tên file cần link: bạn copy vào Module và đặt tên tuỳ ý. Vd: modFSBrowser
Mã PHP:Option Explicit
Public Enum msoFileDialogType 'Phai khai bao khi dùng Late Binding
' msoFileDialogOpen = 1
' msoFileDialogSaveAs = 2
msoFileDialogFilePicker = 3
msoFileDialogFolderPicker = 4
End Enum
'---------------------------------------------------------------------------------------
' Cung cap các tham sô:
' ~~~~~~~~~~~~~~~~~~~~
' lDialogType : 3 (hoac 4 cho Folder)
' sTitle : Tiêu de cua hop thoai FileDialog
' sInitFileName : Duong dan bat dau tim
' bMultiSelect : Nên chon False
' sFilter : Chi loc tìm các file liêt kê
'
' Ví du:
' fFileDialog(msoFileDialogOpen,,,,"MS Excel,*.xlsx;*.xls~MS Word,*.doc;*.docx")
' fFileDialog(msoFileDialogOpen, "Muon chon file nào?", "C:\tmp\",,"MS Access,*.accdb;*.mdb")
' fFileDialog(msoFileDialogOpen)
'---------------------------------------------------------------------------------------
Public Function fFileDialog(Optional ByRef lDialogType As msoFileDialogType = msoFileDialogFilePicker, _
Optional sTitle As String = "", _
Optional sInitFileName = "", _
Optional bMultiSelect As Boolean = False, _
Optional sFilter As String = "All Files,*.*") As String
On Error GoTo Error_Handler
Dim oFd As Object
Dim vItems As Variant 'Files/Folders'
Dim vFilter As Variant
Const msoFileDialogViewDetails = 2 'Enum MsoFileDialogView'
Set oFd = Application.FileDialog(lDialogType)
With oFd
'Dat ten cho tieu de hop thoai
If sTitle = "" Then
Select Case lDialogType
Case msoFileDialogOpen
.Title = "Ch" & ChrW(7885) & "n File " & ChrW(273) & ChrW(7875) & " m" & ChrW(7903) & ":"
Case msoFileDialogSaveAs
.Title = "Ch" & ChrW(7885) & "n File " & ChrW(273) & ChrW(7875) & " l" & ChrW(432) & "u:"
Case msoFileDialogFilePicker
.Title = "Ch" & ChrW(7885) & "n File:"
Case msoFileDialogFolderPicker
.Title = "Ch" & ChrW(7885) & "n Folder:"
End Select
Else
.Title = sTitle
End If
'Thiet lap duong dan Folder mac dinh'
If sInitFileName <> "" Then .InitialFileName = sInitFileName
.AllowMultiSelect = bMultiSelect
'Chon kieu View hien thi - mac dinh chon Detail'
.InitialView = msoFileDialogViewDetails
'Thiet lap chuoi loc'
If lDialogType <> msoFileDialogFolderPicker Then
Call .Filters.Clear
For Each vFilter In Split(sFilter, "~") 'Them vào tung chuoi Filter, tung dong
Call .Filters.Add(Split(vFilter, ",")(0), Split(vFilter, ",")(1))
Next vFilter
End If
If .Show = True Then
For Each vItems In .SelectedItems
fFileDialog = vItems
Next
End If
End With
Error_Handler_Exit:
On Error Resume Next
If Not oFd Is Nothing Then Set oFd = Nothing
Exit Function
Error_Handler:
MsgBox "The following error has occured" & vbCrLf & vbCrLf & _
"Error Number: " & Err.Number & vbCrLf & _
"Error Source: fFileDialog" & vbCrLf & _
"Error Description: " & Err.Description & _
Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
, vbOKOnly + vbCritical, "An Error has Occured!"
Resume Error_Handler_Exit
End Function
Link file demo: http://www.mediafire.com/file/ei71gtzg2pjra1b/Hyperlink.mdb/file
Xin phép đào mồ chút ạ. Cái file demo bác làm tải về chạy ok. Nhưng nếu add vào 1 CSDL khác (add đủ luôn cả cái module modFSBrowser) thì chạy nó báo lỗi Compille Error : Variable not defined. Nếu lấy các form, table của file demo này sửa lại thì chạy cũng ok nhưng khi add vào file .mdb khác lại bị lỗi. Hay còn phải khai báo thêm gì nữa không ạ ? Bác có thể giúp dùm với ạ. Xin cảm ơn bác.