大多数命名范围可以正确复制,但有些则不能。在已复制文件的名称管理器中查看,未正确复制的范围仍然引用源文件,而不是副本。正确复制的副本会按原样指向本地副本。
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个范围的定义没有什么独特之处。在名称管理器中查找副本,不正确的副本将引用源文件,而不是副本(“数据文件”)文件。