首页 > 解决方案 > 在 Excel 中,使用 VBA 创建带有 unicode“文件夹”符号的超链接

问题描述

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

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

在此处输入图像描述

标签: excelvbaunicodehyperlink

解决方案


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

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

在您的情况下,文件夹符号的字符代码是 128193,因此它超出了此函数的范围。

采用此问题的建议答案之一(来自 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")

此外,请确保添加对 Microsoft HTML 对象库的引用。


推荐阅读