2

我在 Access 2016 中有一个带有文本框的表单,我需要在其中有多个分号分隔的超链接(将动态创建)。我决定做的是在 VBA 中创建一个“超链接构造字符串”,然后将它们分配给文本框的值。所以,像:

Me.Field.Value = {link: www.google.com : "Google"} & "; " & {link: www.yahoo.com : "Yahoo"}

...将导致它出现在文本框中:

谷歌雅虎

我的问题是,如果不使整个文本框成为单个超链接,我似乎无法弄清楚在文本框中创建单个链接的语法,这是行不通的。

我正在使用我发现的一些解决方案。我读到这会以我需要的方式创建链接,但它只是作为带有井号的文字文本出现:

"Google # www.google.com # Some Argument"

我还尝试将文本框设置为富文本,然后将值设置为包含超链接的富文本代码......但这不起作用:

"{\field{\*\fldinst HYPERLINK ""http://www.google.com/""}{\fldrslt http://www.google.com}}"

我还考虑过设计一个返回超链接的查询。但是,我有点想让它成为 VBA 的东西,因为我将在如何创造价值方面拥有更大的灵活性。有没有人有任何想法?

注意:我知道多个值应该在 1:M 关系数据库中。他们是。但是,该任务的要求是获取 1 实体的所有 M 值,然后以分号分隔的方式列出它们,所有这些都用作 M 实体的详细信息表的链接。

4

1 回答 1

1

常规文本框(仅限文本)不支持此功能。

富文本文本框是可能的。与名称相反,它们实际上使用HTML的子集,而不是 RTF。

有了这里的想法,我得到了这个工作:

Private Sub cmdInsertHyperlinks_Click()

    Dim url1 As String, url2 As String

    url1 = "D:\tmp\test.jpg"
    url2 = "D:\tmp\test space.txt"

    Me.rText.Value = "<div>" & _
        "<a href = " & url1 & ">file://" & url1 & "</a>" & _
        "  other text between hyperlinks  " & _
        "<a href = " & url2 & ">file://" & url2 & "</a>" & _
        "</div>"


End Sub

注意:链接的线程说您必须对链接进行 URL 编码(空格到 %20 等),但至少对于我的简单测试而言,这不是必需的。

注意 2:你不能有不同的显示文本和链接 url,至少我没有让它工作。

于 2016-07-22T06:18:23.843 回答