在Excel工作表的列上创建超链接以打开多层子文件夹

时间:2018-08-23 23:21:25

标签: excel hyperlink directory subdirectory

我在一个工作表中有8层这样的文件夹和子文件夹,并且在一张纸上有500K条记录:

C:\999\236\857\871 
C:\999\234\567\874 
C:\999\234\567\873 
C:\999\234\586\396 
C:\999\234\566\458

在测试工作表中,列A具有数据

236857871 
234567874 
234567873 
234586396 
234566458

我想创建一个宏,以在A列中的现有数据上创建超链接,以便当我单击数据时,相应的文件夹将打开。我从下面StackOverflow中提供的宏中移植了一个宏。它仅创建一个目的地...无法为各个记录创建链接。我可以得到帮助吗?

Sub HyperlinkNums ()
Dim WK As Workbooks
Dim sh As Worksheet
Dim i As Long
Dim lr As Long
Dim Rng As Range, Cell As Range
Set sh = Workbooks("Bigboss.xlsm").Sheets("Test")
lr = sh.Range("A" & sh.Rows.Count).End(xlUp).Row
Set Rng = sh.Range("A5:A" & lr)

sh.range("A5").Activate

For i = 7 To lr
For Each Cell In Rng

If Cell.Value > 1 Then

   sh.Hyperlinks.Add Anchor:=Cell, Address:= _
        "C:\999\" & Left(ActiveCell, 3) & "\" & _
        Mid(ActiveCell, 4, 3) & "\" & Mid(ActiveCell, 7, 3) & "\" & _
        Right(ActiveCell, 3), TextToDisplay:=Cell.Value

End If


Next Cell
Next

End Sub.

1 个答案:

答案 0 :(得分:1)

因此,代码中最大的问题是您始终引用ActiveCell。您正在使用For Each...Next循环,并且应该使用要循环的rng对象。

您还有一个冗余循环:For i = 7 To lr。您可以摆脱它。

我不喜欢使用半保留关键字作为变量,因此我将cell变量重命名为cel。我认为这可能是您要寻找的东西:

Option Explicit

Sub HyperlinkNums()
    Dim WK As Workbooks
    Dim sh As Worksheet
    Dim lr As Long
    Dim Rng As Range, Cel As Range
    Set sh = Workbooks("Bigboss.xlsm").Sheets("Test")
    lr = sh.Range("A" & sh.Rows.Count).End(xlUp).Row
    Set Rng = sh.Range("A5:A" & lr)

    sh.Range("A5").Activate

    For Each Cel In Rng

        If Cel.Value > 1 Then

            sh.Hyperlinks.Add Cel, "C:\999\" & Left(Cel.Text, 3) & "\" & _
                    Mid(Cel.Text, 4, 3) & "\" & Right(Cel.Text, 3), _
                    TextToDisplay:=Cel.Text

        End If


    Next Cel

End Sub

此外,我对Mid(ActiveCell, 7, 3)的使用感到有些困惑,它似乎与Right(ActiveCell, 3)具有相同的含义。我删除了那部分。