以编程方式更改工作簿中的链接

所有,

我有以下代码来更改工作簿的链接。

ThisWorkbook.ChangeLink "OldPath.xlsx", "NewPath.xlsx", xlLinkTypeExcelLinks

我的问题是,“NewPath.xlsx”表示一个工作簿具有一个稍微不同于WorkSheet对象的名称比OldPath.xlsx。 那么,有没有办法以编程方式更改不仅与Excel工作簿关联的path,还有实际的对象/范围引用或有问题的外部链接?

提前致谢。

我唯一的想法是@ d-stroyer解决scheme的扩展版本。 您需要replace包括文档path在内的部分公式(如果打开,则只需简单提供工作簿参考):

 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 

不幸的是,如果你想replace其他excel元素中的链接,这将不起作用(我认为,没有testing):一系列的图表,可能的数据源的枢轴表等。

就在这里。 使用一个简单的replace语句:

 Sub UpdateSheetName() Cells.Replace What:="OldSheetName", Replacement:="NewSheetName", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub 

如果您的工作簿中还有其他的工作表名称,并且不希望他们被search捕获,请使用有限的范围。 此外,您可以通过search“OldSheetName!”进行限制 (用“!”)replace为“NewSheetName!”。