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

时间:2013-07-15 23:35:03

标签: excel vba

所有

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

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

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

提前致谢。

2 个答案:

答案 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!”。