• Sử dụng Hyperlink trên Form
  • 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(msoFileDialogFilePickersTieuDe"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(msoFileDialogFilePickersTieuDe"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 phi 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(msoFileDialogFilePickersTieuDe"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.