用于查找和替换excel链接部分的宏

时间:2016-02-13 04:26:45

标签: excel vba excel-vba

示例行的屏幕截图: enter image description here

这是我首次使用相对引用录制的宏:

ActiveCell.Offset(-2, -3).Range("A1:L1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(0, -1).Range("A1").Select
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Replace What:="Billy Bob", Replacement:="Joanne Sue", LookAt:= _
    xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
End Sub

我有一个主电子表格链接到许多其他个人电子表格。

D-N中的值都分别引用单独链接表中的相同单元格,如下所示:

='G:\WORK\Test folder\Test\Employees\[Billy Bob.xlsx]Sheet1'!$E$2

C栏的链接引用B列中的值来填写链接名称,如下所示:

=HYPERLINK("G:\WORK\Test folder\Test\Employees\Billy Bob.xlsx",B3)

所以我基本上试图更改行中每个链接的名称部分。因此,如果我要在B列中输入另一个名称,那么宏或代码将在B中获取该名称并将其添加到C中的超链接和D-N中的所有工作表链接。

1 个答案:

答案 0 :(得分:0)

看起来您在B列中有名称,每个名称都有一个名称的工作表。因此,这将在这些工作表中创建到Range A1的超链接。请务必将d s:\temp\hyper.xlsxd替换为工作簿的实际路径。

Sub MakeHyperlinksColumnC()

    Dim x As Long
    Dim aCell As Range
    Dim nm As String

    For x = 2 To ActiveSheet.Columns("C").Cells.Count
        Set aCell = ActiveSheet.Columns("C").Cells(x)
        If Not IsEmpty(aCell.Offset(0, -1)) Then
            nm = aCell.Offset(0, -1).Value
            aCell.Formula = "=HYPERLINK(""[s:\temp\hyper.xlsx]'" & nm & "'!A1"",""" & nm & """)"
        Else
            Exit For
        End If
    Next

End Sub

我认为这比搜索和替换更有效。它也会跳过第一行并退出第一个空白单元格。

另一种方法

实际上你根本不需要代码;只需在C2中使用这样的公式然后复制:

=HYPERLINK("[s:\temp\hyper.xlsx]'"&B2&"'!A1",B2)