全部,
我有以下代码来更改工作簿的链接。
ThisWorkbook.ChangeLink "OldPath.xlsx", "NewPath.xlsx", xlLinkTypeExcelLinks
我的问题是“NewPath.xlsx”代表一个工作簿,其工作表对象的名称与 OldPath.xlsx 中的名称略有不同。那么,有没有办法以编程方式不仅更改与 Excel 工作簿关联的路径,还更改实际的对象/范围引用或有问题的外部链接?
提前致谢。
我唯一的想法是@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 元素中的链接,例如:一系列图表,可能是数据透视表的数据源等,这将不起作用(我认为,未经测试)。
就在这里。使用简单的 Replace 语句:
Sub UpdateSheetName()
Cells.Replace What:="OldSheetName", Replacement:="NewSheetName", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
如果您的工作簿有其他出现的工作表名称,并且您不希望它们被搜索捕获,请使用有限范围。此外,您可以通过搜索“OldSheetName!”进行限制。(使用“!”)并替换为“NewSheetName!”。