【问题标题】:In Excel, create hyperlink with unicode "folder" symbol using VBA在 Excel 中,使用 VBA 创建带有 unicode“文件夹”符号的超链接
【发布时间】:2020-08-04 03:46:48
【问题描述】:

在 Excel 中,我正在尝试创建显示 unicode 文件夹图标(以及各种其他图标)的超链接。我可以通过右键单击 --> 超链接 --> 手动执行此操作,然后从 Web 浏览器“剪切并粘贴”字符。我的问题是我正在尝试使用 VBA 添加超链接,但我不知道该怎么做。这是我正在尝试的代码,但我得到了一个错误。 您可以在我的代码中看到,我使用 ChrW 函数和 TextToDisplay:=ChrW(&H1F4C1) 创建超链接。不幸的是,Excel 在到达该行时会引发错误。

'Purchase Orders Folder
    ActiveSheet.Range("ProjectTable[POs]").Cells(lastTblRowNum).Select                
    ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:=poPath, TextToDisplay:=ChrW(&H1F4C1)

【问题讨论】:

    标签: excel vba unicode hyperlink


    【解决方案1】:

    ChrW 函数接受的字符代码有一个上限(请参阅MSDN documentation)。

    charcode 的正常范围是 0–255。但是,在 DBCS 系统上, charcode 的实际范围是 -32768–65535。

    在你的情况下,文件夹符号的字符代码是 128193,所以它超出了这个函数的范围。

    采用this question 的建议答案之一(来自 Mark Tolonen),您的代码可能如下(如果您运行的是 Excel 2013 或更高版本):

    'Purchase Orders Folder
        ActiveSheet.Range("ProjectTable[POs]").Cells(lastTblRowNum).Select                
        ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:=poPath, TextToDisplay:=WorksheetFunction.Unichar(&H1F4C1)
    

    如果您运行的是 Excel 2010 或更低版本,则必须使用上述问题中提供的其他答案之一。如果您选择使用 html 解决方法的 milevyo 的答案,则必须添加以下内容:

    Function GetUnicode(CharCodeString As String) As String
        Dim Doc As New HTMLDocument
        Doc.Body.innerHTML = "&#x" & CharCodeString & ";"
        GetUnicode = Doc.Body.innerText
    End Function
    

    然后你的代码将是:

    'Purchase Orders Folder
        ActiveSheet.Range("ProjectTable[POs]").Cells(lastTblRowNum).Select                
        ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:=poPath, TextToDisplay:=GetUnicode("1F4C1")
    

    另外,请确保您 add a reference 访问 Microsoft HTML 对象库。

    【讨论】:

    • 作为对引用链接 Get UniCode characters with CharCode values greater hex FFFF 的进一步说明:除了显示的工作表函数之外,您还发现 2 个使用 byte 操作的方法,2 个正在使用 html i> 解决方法和一个WorkSheetFunction.FilterXML
    • @DecimalTurn 我正在尝试您的解决方案,但我收到了 Run-timeerror '438': Object doesn't support this property or method
    • @Frank,你用的是什么版本的 Excel?
    • @DecimalTurn 2010 专业版
    • @Frank – Unichar 函数仅适用于 Windows 上的 Excel 2013 或更高版本,因此我编辑了答案以提供替代方案。
    猜你喜欢
    • 2018-03-09
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2022-01-16
    • 2012-06-03
    • 2015-07-16
    • 1970-01-01
    相关资源
    最近更新 更多