从一个工作簿复制到另一个工作簿时缺少命名范围

时间:2019-10-04 20:23:33

标签: excel vba

大多数命名范围可以正确复制,但有些则不能。在已复制文件的名称管理器中查看,未正确复制的范围仍然引用源文件,而不是副本。正确复制的副本会按原样指向本地副本。

Sub Test()
    Dim TemplateTemplate As Worksheet, SummaryTemplate As Worksheet
    Dim datafile As Workbook

    With ActiveWorkbook
        Set TemplateTemplate = .Sheets("Template")
        Set SummaryTemplate = .Sheets("Summary")
    End With

' Open up a new workbook
`    Set datafile = Workbooks.Add

`' Copy worksheets to new "datafile"
    SummaryTemplate.Copy After:=datafile.Sheets(datafile.Sheets.Count)  ' All named ranges copied
    TemplateTemplate.Copy After:=datafile.Sheets(datafile.Sheets.Count) ' Missing 4 named ranges
    TemplateTemplate.Copy After:=datafile.Sheets(datafile.Sheets.Count) ' Missing 4 named ranges
End Sub

没有错误消息,但是TemplateTemplate的10个命名范围中有4个没有正确复制。如果我注释掉SummaryTemplate副本,则从TemplateTemplate复制过来的所有范围。如果我更改顺序,即在TemplateTemplate之前复制了TemplateTemplate,则所有范围都将正确复制。查看名称管理器,源文件中这4个范围的定义没有什么独特之处。在名称管理器中查找副本,不正确的副本将引用源文件,而不是副本(“数据文件”)文件。

0 个答案:

没有答案