4

全部,

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

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

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

提前致谢。

4

2 回答 2

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 元素中的链接,例如:一系列图表,可能是数据透视表的数据源等,这将不起作用(我认为,未经测试)。

于 2013-07-16T05:51:36.920 回答
0

就在这里。使用简单的 Replace 语句:

Sub UpdateSheetName()

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

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

于 2013-07-16T05:40:15.037 回答