在 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 对象库。
在 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,所以它超出了这个函数的范围。
采用
'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 对象库。