在excel vba中使用路径名中的#作为超链接

时间:2017-08-10 02:06:56

标签: excel vba hyperlink path

我正在创建一个vba For循环来遍历范围中的单元格,并根据单元格中的文本创建指向文件夹的超链接。见下文:

Set rng = Worksheets("Sheet1").Range("A1:A100")

For Each cell In rng

    address1 = "C:\Users\Desktop\Tests\Comm Review\Item #" & 
    cell.Text

    If Not IsEmpty(cell) Then
        Worksheets("Sheet1").Hyperlinks.Add Anchor:=cell, Address:=address1, TextToDisplay:=cell.Text
    End If
Next cell

单元格值将类似于1001.T0502,我链接到的实际文件夹名称将为Item#1001.T0502。所以在我的address1变量中,我创建了该文件夹的路径。

然而,当我这样做时,它会创建除#1001.T0502之外的所有内容的路径,最后停在“\ Item”处。如果我要删除数字符号(#)虽然它包含数字并最终成为项目1001.T0502。由于某种原因,数字符号阻止它制作正确的路径。我在这里错过了什么?已经有200个文件夹名称中包含数字符号的文件夹,因此现在返回并将其取出将会起到太多作用。

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

对于Office程序中的超链接,不能在文件名中使用井号字符。请参阅此处的官方Microsoft文档:

https://support.microsoft.com/en-us/help/202261/you-cannot-use-a-pound-character-in-a-file-name-for-a-hyperlink-in-an

如果你问我,似乎完全没什么问题,但是唉,我认为你正试图解决一个无法解决的问题。

但是,不要害怕,我确实想到了潜在的解决方法。您可以使用下划线将单元格重新着色为蓝色,然后使用此小技巧捕获选定单元格并将Windows资源管理器打开到相应的文件路径,而不是使单元格成为实际的超链接。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Count = 1 Then
        If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
            Shell "explorer ""C:\Users\Desktop\Tests\Comm Review\Item #" & Target.Value & """", vbNormalFocus
        End If
    End If
End Sub

我在这里看到的唯一缺点是用箭头键选择单元格也会打开相应的文件夹。可能有一项工作要做,但我目前没有时间去研究它。

我希望这有帮助!