【问题标题】:Create Hyperlink for row each entry in Excel Sheet but just in specific columns为 Excel 工作表中的每个条目创建超链接,但仅在特定列中
【发布时间】:2017-06-04 02:22:33
【问题描述】:

在附加的代码中,我正在遍历文件夹中的所有 Excel 文件并搜索关键字。然后我提取文件名、工作表编号、单元格编号和行数据,并将这些信息放入一个新创建的名为“摘要”的电子表格中。如何仅超链接工作表 # 和单元格 # 列(B 列和 C 列)以指向新创建的行条目来自的确切文件、页面、单元格?

这是我的代码的 sn-p:

 Sub SearchFolders()
'UpdatebySUPERtoolsforExcel2016
 ...
    Dim xOut As Worksheet
    Dim xWb As Workbook
    Dim xWk As Worksheet
    Dim xRow As Long
    Dim xFound As Range
    Dim xStrAddress As String
    Dim xCount As Long
    Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
    xFileDialog.AllowMultiSelect = False
    xFileDialog.Title = "Select a forlder"
    If xFileDialog.Show = -1 Then
        xStrPath = xFileDialog.SelectedItems(1)
    End If
  ...
    xUpdate = Application.ScreenUpdating
    Application.ScreenUpdating = False
    Set xOut = wsReport
    xRow = 1
    With xOut
        .Cells(xRow, 1) = "Workbook"
        .Cells(xRow, 2) = "Worksheet"
        .Cells(xRow, 3) = "Cell"
        .Cells(xRow, 4) = "Test"
        ...
        Set xFso = CreateObject("Scripting.FileSystemObject")
        Set xFld = xFso.GetFolder(xStrPath)
        xStrFile = Dir(xStrPath & "\*.xlsx")
        Do While xStrFile <> ""
            Set xWb = Workbooks.Open(Filename:=xStrPath & "\" & xStrFile, UpdateLinks:=0, ReadOnly:=True, AddToMRU:=False)
            For Each xWk In xWb.Worksheets
                Set xFound = xWk.UsedRange.Find(xStrSearch, LookIn:=xlValues)
                If Not xFound Is Nothing Then
                    xStrAddress = xFound.Address
                End If
                Do
                    If xFound Is Nothing Then
                        Exit Do
                    Else

                    xCount = xCount + 1
                    xRow = xRow + 1
                    .Cells(xRow, 1) = xWb.Name
                    .Cells(xRow, 2) = xWk.Name
                    .Cells(xRow, 3) = xFound.Address
                     WriteDetails rCellwsReport, xFound

                    End If
                    Set xFound = xWk.Cells.FindNext(After:=xFound)
                Loop While xStrAddress <> xFound.Address
            Next
            xWb.Close (False)
            xStrFile = Dir
        Loop
        .Columns("A:I").EntireColumn.AutoFit
        .Range("A1:A" & xCount + 1).Rows.EntireRow.AutoFit
    End With

    MsgBox xCount & "cells have been found", , "SUPERtools for Excel"
ExitHandler:
    Set xOut = Nothing
    ...
    Application.ScreenUpdating = xUpdate
    Exit Sub
ErrHandler:
    MsgBox Err.Description, vbExclamation
    Resume ExitHandler
End Sub

Private Sub WriteDetails(ByRef xReceiver As Range, ByRef xDonor As Range)
  xReceiver.Value = xDonor.Parent.Name
  xReceiver.Offset(, 1).Value = xDonor.Address

  xDonor.EntireRow.Resize(, 100).Copy xReceiver.Offset(, 2)

  Set xReceiver = xReceiver.Offset(1)

End Sub

【问题讨论】:

  • Range(xCount) 应该是实际范围,例如 Range("A1")Range("A" &amp; i) 在循环中增加 ixWb.Name 也应该是 xWb.FullName

标签: excel search hyperlink vba


【解决方案1】:

要创建指向external workbook/worksheet/cell 的超链接,您需要了解链接的形成方式

看这个例子

假设您在C:\ 中有一个文件Joe.Xlsx。假设它有一个名为 Sheet1 的工作表,并且您想超链接到该工作表的单元格 A1

因此,在您当前的工作簿中,您将键入

=HYPERLINK("[C:\Joe.xlsx]Sheet1!A1","CLICK HERE")

所以如果你打破它,它会变成这样。

Dim FileName As String
Dim SheetName As String
Dim CellAddress As String

FileName = "C:\Joe.xlsx"
SheetName = "Sheet1"
CellAddress = "A1"

If InStr(1, SheetName, " ") Then SheetName = "'" & SheetName & "'"

Range("A1").Formula = "=HYPERLINK(" & Chr(34) & "[" & _
                      FileName & _
                      "]" & _
                      SheetName & _
                      "!" & _
                      CellAddress & _
                      Chr(34) & "," & Chr(34) & _
                      "CLICK HERE" & Chr(34) & ")"

只需在代码中循环使用它并创建超链接

【讨论】:

  • 您能否用代码更新问题。 cmets中的代码看不懂
  • 您的建议不只是将 C 列设为超链接??
  • 以上代码将帮助您创建指向外部工作簿中单元格的链接。
  • 点击您的代码创建的超链接后,我收到Reference isn't valid的错误消息。
  • 您在公式栏中看到了什么?你看到的公式是什么?
猜你喜欢
  • 2018-10-26
  • 2021-08-13
  • 1970-01-01
  • 2013-12-12
  • 1970-01-01
  • 2021-05-31
  • 1970-01-01
  • 2019-01-16
  • 1970-01-01
相关资源
最近更新 更多