我有一张包含多张纸的工作簿,几乎所有工作簿都在一个名为“HK 2017”的特定工作表中有一个指向单元格A1的超链接。我想将超链接表的名称从“HK 2017”更改为“HK”。并同时更新所有链接,以便他们可以使用工作表的新名称。
感谢您的帮助。
答案 0 :(得分:1)
循环浏览工作表中的工作表。 Excel VBA looping through multiple worksheets
在每张纸中,循环使用范围内的单元格。 Excel VBA iterate over all used cells and substitute their values
更改其超链接值。 changing a wildcard in an excel hyperlink with vba或Excel VBA Get hyperlink address of specific cell
派对就像是你的生日 - https://www.youtube.com/watch?v=5qm8PH4xAss
答案 1 :(得分:0)
这是我的解决方案。在当前工作簿的所有工作表中,我只是将公式中的给定字符串替换为另一个字符串
Public Sub edit_links()
Dim iSheet As Worksheet
Dim old_text as string
Dim new_text as string
old_text = "='\\C\client\XYZ\[old_excel_file.xlsm]Sheet1'"
new_text = "=Sheet1"
For Each iSheet In ThisWorkbook.Sheets
'Debug.Print isheet.Name
Call update_all_cell_formulas_in_sheet( _
isheet, _
old_text, _
new_text)
Next iSheet
End Sub
private Sub update_all_cell_formulas_in_sheet(in_sheet As Worksheet, in_search As String, in_replace As String)
Dim counter As Integer
Dim iCell As Range
counter = 0
For Each iCell In in_sheet.UsedRange
If InStr(iCell.Formula, in_search) > 0 Then
counter = counter + 1
'Debug.Print iCell.Parent.Name, iCell.Address, iCell.Formula
iCell.Formula = Replace(iCell.Formula, in_search, in_replace)
'Debug.Assert counter Mod 100 <> 0 ' stop the code every 100 changes
End If
Next iCell
update_all_cell_formulas_in_sheet = counter
End Sub