在Excel中使用vba生成目录

问题描述 投票:0回答:3

我有一个宏,可以从外部源检索数据,然后在各个工作表中格式化/绘制该数据。我有大量工作表(100+),我想在我的第一个工作表上创建一个目录列

我的宏的工作方式是我的第一个工作表充当我的命令工作表。我有一个油井序列号列表(A 列),然后从互联网上下载相关信息。为每个油井下载的信息将放入一个新的工作表中,然后根据 C 列中的值进行命名。

在 D 列中,我想插入 C 列中任何文本的超链接版本。此超链接将链接到使用 A 列和 C 列生成和命名的工作表。

我尝试自己创建这个,但我无法使其工作。

如果我可以澄清任何事情,请告诉我。

我还附上了一张显示我想要的图片。见下文

enter image description here

vba excel
3个回答
1
投票

Excel VBA 创建到另一个工作表的超链接

由@curial提供: 我录制了一个制作 Hiperlink 的宏。结果就是这样。

ActiveCell.FormulaR1C1 = "=HYPERLINK(""[Workbook.xlsx]Sheet1!A1"",""CLICK HERE"")"

对于您的具体应用,公式为:

=HYPERLINK(""[NameOfWorkbook.xlsx]" & C2 & "!A1"", C2)

然后将其复制下来。


0
投票

以Chrismas007的答案为基础,也许这就是您所需要的:

Sub Add_Hyperlinks()
    Dim lngLastRow As Long, i As Integer
    lngLastRow = ActiveSheet.Range("C" & Rows.Count).End(xlUp).Row
    For i = 2 To lngLastRow
        Cells(i, 4).Activate
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" & i - 1 & "'!A1", TextToDisplay:="'" & i - 1 & "'!A1"
    Next
End Sub

如果您将其放入现有的子程序中(或将其分开并在主子程序中调用它),它将遍历,找到最后一行,然后从第 2 行循环到最后一行,在需要的地方添加 =超链接公式。只需确保根据需要编辑该超链接公式的内容即可。

更新:这应该可以解决问题!有一个新的公式可以在 For 循环中添加超链接,该公式有效(至少对我来说)


0
投票

我认为您面临的问题是由于Excel没有将整数类型显示名称转换为字符串。只需解析 TextToDisplay 值即可解决此问题。这是 vba api 中的一个小问题,大多数时候你不会注意到。

Sub LinkMAcro()
Dim ws As Worksheet
Dim link As String
Dim i As Integer

Set ws = ActiveSheet

    For i = 2 To ws.Cells(ws.Rows.Count, 3).End(xlUp).Row
        If Len(ws.Cells(i, 3).Value) > 0 Then
            ws.Cells(i, 4).ClearHyperlinks
            'Change 1 to 3  in TextToDisplay if you want the display name to be name of sheet
            link = "'" & ws.Cells(i, 3).Value & "'!A1"
            ws.Hyperlinks.Add Anchor:=ws.Cells(i, 4), Address:="", SubAddress:=link, TextToDisplay:=CStr(ws.Cells(i, 1).Value)
        End If
    Next
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.