我有大约300个指定范围,指的是外部电子表格。
例如
范围名称: my_range
请参阅: =' \ mycompany.com \ lucas [Lucas.xlsm] SHEETNAME'!$ C $ 10
我想替换" \ mycompany.com \ lucas [Lucas.xlsm]"用空字符串
我尝试在线研究这个问题,但似乎我没有能够正确地说出来,所有答案都指的是在单元格中查找和替换......
答案 0 :(得分:1)
在VBA中有很多资源可以做到这一点(300多个手动做很多事情!)。
这里有一个很棒的一般指南:The SpreadsheetGuru's guide to Named Ranges in VBA
循环遍历特定工作表中的所有命名范围和所有命名范围:
Sub NamedRange_Loop()
'PURPOSE: Delete all Named Ranges in the Active Workbook
'SOURCE: www.TheSpreadsheetGuru.com
Dim nm As Name
'Loop through each named range in workbook
For Each nm In ActiveWorkbook.Names
Debug.Print nm.Name, nm.RefersTo
Next nm
'Loop through each named range scoped to a specific worksheet
For Each nm In Worksheets("Sheet1").Names
Debug.Print nm.Name, nm.RefersTo
Next nm
End Sub
要更改链接,请编辑RefersTo,而不是使用Debug.Print
。我无法找到直接编辑链接的方法,所有文档都表明您必须删除链接并使用新引用重新创建链接。
删除很简单 - nm.Delete
创建很简单:
'For Workbook level links
ThisWorkbook.Names.Add Name:=RangeName, RefersTo:=cell
'For Worksheet level links
Worksheets("Sheet1").Names.Add Name:=RangeName, RefersTo:=cell
另见:
Names Object
Names.Add Method
Defining and using names in VBA formulas
Looping through all named ranges in excel VBA in current active sheet
答案 1 :(得分:0)
如果使用空字符串替换命名范围的引用地址,Excel将删除命名范围。这是我用来删除命名范围的方式:
Public Sub DeleteName(sName As String)
On Error GoTo DeleteName_Error
ActiveWorkbook.Names(sName).Delete
Debug.Print sName & " is deleted!"
On Error GoTo 0
Exit Sub
DeleteName_Error:
Debug.Print sName & " not present or some error"
On Error GoTo 0
End Sub
简单地称之为:
DeleteName my_range
实际上,Excel开发人员删除没有.RefersTo
的命名范围非常聪明 - 否则会出现大量错误。检查一下,如果您声明my_range1
和my_range2
,此代码只会运行一次:
Public Sub TestMe()
Dim nameArray As Variant
nameArray = Array("my_range1", "my_range2")
Dim myNameRange As Name
For Each myNameRange In ThisWorkbook.Names
Dim cnt As Long
For cnt = LBound(nameArray) To UBound(nameArray)
If nameArray(cnt) = myNameRange.Name Then
Debug.Print myNameRange
Debug.Print myNameRange.RefersTo
myNameRange.RefersTo = vbNullString
End If
Next cnt
Next myNameRange
End Sub
答案 2 :(得分:-1)
您应该可以从“数据”,“编辑链接”对话框中执行此操作。选择相关链接,单击“更改源”并将其指向工作簿本身。
如果失败,请下载我的FlexFind工具(http://jkp-ads.com/officemarketplaceff-en.asp),运行它并确保检查对话框中的对象复选框。