在 Excel 中,使用 VBA 创建带有 unicode "folder" 符号的超链接

In Excel, create hyperlink with unicode "folder" symbol using VBA

在 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)

ChrW 函数接受的字符代码有上限(参见 MSDN documentation)。

The normal range for charcode is 0–255. However, on DBCS systems, the actual range for charcode is -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")

此外,请确保您 add a reference 到 Microsoft HTML 对象库。