所有
我有以下代码来更改工作簿的链接。
ThisWorkbook.ChangeLink "OldPath.xlsx", "NewPath.xlsx", xlLinkTypeExcelLinks
我的问题是“NewPath.xlsx”表示WorkSheet对象的名称与OldPath.xlsx略有不同的工作簿。那么,有没有一种方法可以不仅以编程方式更改与Excel工作簿关联的路径,还可以更改实际的对象/范围引用或相关的外部链接?
提前致谢。
答案 0 :(得分:1)
我唯一的想法是@ d-stroyer解决方案的扩展版本。您还需要替换部分公式,包括文档的路径(如果一个是打开的话,只需要工作簿参考):
Cells.Replace What:="C:\Users\Name\Desktop\[OldPath.xlsx]OldSheetName", _
Replacement:="C:\Users\Name\Desktop\[NewPath.xlsx]NewSheetName", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
不幸的是,如果你想替换其他excel元素中的链接,这将无效(我认为,未经过测试),如:系列图表,可能是数据透视表的数据源等。
答案 1 :(得分:0)
是的,有。使用简单的Replace语句:
Sub UpdateSheetName()
Cells.Replace What:="OldSheetName", Replacement:="NewSheetName", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
如果您的工作簿中有其他出现的工作表名称,并且您不希望它们被搜索捕获,请使用有限范围。此外,您可以通过搜索“OldSheetName!”来限制(使用“!”)并替换为“NewSheetName!”。