通过版本更新更新对另一个文档中单元格的引用

时间:2012-08-21 12:59:31

标签: excel vba excel-vba

假设有一个Excel文档C:\Budget-v034-2012.xlsx(文档A)和另一个Excel文档(文档B)引用第一个文档中的单元格,如下所示:='C:\[Budget-v034-2012.xlsx]Sheet1'!$A$1

更新文档A后,将使用更新的版本号保存(即v034变为v035)。如何让doc B自动使用新版本号更新其引用?

解决方案不需要完全自动化。例如,可以是文档B中的单元格,其中当前版本号是手动提供的,并且所有引用都自动包含所提供的编号。如何实现这种合并?

2 个答案:

答案 0 :(得分:2)

这是一个非常简单(简单化?)的解决方案:

在文档B中,您可以存储文件的路径和/或名称(比如我的示例中的单元格A1),并使用INDIRECT公式在其他单元格中显示结果。

    单元格A1中的
  • Budget-v034-2012.xlsx
  • 在另一个单元格中:=INDIRECT('C:[' & A1 & ']Sheet1'!$A$1)

为了更好的可维护性,请注意您也可以使用Named Range

  • 在文档B(Sheet1,单元格A1或其他)的工作表单元格中添加路径或名称
  • 在左上角(单元格A1上方)输入名称(您想要的名称),让我们说Path
  • 在另一张表格中,您可以使用以下公式:=INDIRECT('C:[' & Path & ']Sheet1'!$A$1)

答案 1 :(得分:0)

除非有充分的理由,否则通常更容易保留相同的文件名并更新文件中单元格中的版本详细信息。这样,任何外部链接都将与相关数据保持同步。

如果使用Excel中的新文件名保存新文件,则其他工作簿中的链接仍将链接到旧文件,并且只有在删除文件或从外部重命名时才会中断。

有几种方法可以在Excel中手动执行此操作

  1. 在Excel数据/编辑链接中/突出显示源并单击更改源
  2. 使用Find&替换,例如查找[Budget-v034-2012.xlsx]替换为[Budget-v035-2012.xlsx](确保选项已启用且Lookin:=公式和March整个单元格内容:= FALSE)
  3. 如果你录制上述两种宏,你会得到类似于

    的东西
    Sub Macro1()
    
    ThisWorkbook.ChangeLink Name:="C:\Users\ooo\Desktop\Budget-v034-2012.xlsx", NewName _
            :="C:\Users\ooo\Desktop\Budget-v035-2012.xlsx", Type:=xlExcelLinks
    
    End sub
    
    Sub Macro1()
    
        Cells.Replace What:="[Budget-v034-2012.xlsx]", Replacement:="[Budget-v035-2012.xlsx]", LookAt:=xlPart _
            , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    End Sub