替换工作表并丢失范围参考

时间:2020-10-06 02:21:30

标签: excel vba

我有一本名为“产品”的工作簿,有两页。工作表1(“全局”)由工作表2所指的许多范围组成。我还有另一个“主”工作簿,其中包含一个(“全局”)工作表,其范围与“产品”工作簿的范围相同。

在“主”工作簿中,将修改并保存范围的所有值。然后,从“产品”工作簿中删除(“全局”)工作表,然后从“主”工作簿中导入(“全局”)工作表。

问题在于,即使我要导入具有相同名称的工作表并且其中包含完全相同的范围名称,工作表2中的所有单元格也会丢失它们所引用的范围。

我可以添加一些代码来解决此问题吗?

Sub ImportGlobalSheets()

Dim GlobalsFile As String
Dim GlobalsFolder As String

Application.ScreenUpdating = False

   GlobalsFolder = Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\") - 1) & "\Globals\"
   GlobalsFile = GlobalsFolder & "Master Globals.xlsx"
   
    Workbooks.Open (GlobalsFile)
        Sheets.Copy Before:=ThisWorkbook.Sheets(1)
    Workbooks("Master Globals").Close SaveChanges:=False
    
End Sub

1 个答案:

答案 0 :(得分:0)

一个想法:
我认为您应该在删除全局表之前先复制产品表。 (否则,您将丢失参考。)在复制工作表之后,它应成为活动工作表。 (它具有对另一个工作簿的引用。)您可以删除对另一个工作簿的引用部分,将其(带有扩展名的工作簿名称)替换为空(示例字符串)。

ActiveSheet.UsedRange.Replace _
      What:="[NameOfYourOldWorkbook.xlsm]", Replacement:="", _
      SearchOrder:=xlByColumns, MatchCase:=True

然后,您可以删除所需的工作表。我希望它对您有用。