复制命名范围(Microsoft Excel)
Graeme的工作簿中定义了许多(120+)个命名范围。他想将范围名称和定义复制到另一个工作簿中。因此,复制后,在原始工作簿中将存在一个名为MyRange1的范围,该范围引用原始工作簿中的范围C7:H22,并在目标工作簿中引用相同的范围。
不得将其他任何内容从原始工作簿复制到目标-只是范围名称和定义。
最简单的方法是使用一个宏,该宏将逐步遍历您定义的每个名称,并将名称定义复制到目标工作簿中。这是一个示例:
Sub CopyNames() Dim Source As Workbook Dim Target As Workbook Dim n As Name Set Source = ActiveWorkbook Set Target = Workbooks("Book2.xlsx") For Each n In Source.Names Target.Names.Add Name:=n.Name, RefersTo:=n.Value Next End Sub
请注意,宏中的大部分工作都是在For Each循环中完成的,该循环逐步遍历所有已定义的名称。它在目标工作簿中创建名称,并为其分配与源工作簿中相同的名称(包含在Value属性中)。
应当注意,默认情况下,命名范围在Value属性中包括工作表的名称。如果源工作簿具有一个引用了Sheet4的命名范围,而目标工作簿中没有Sheet4,则添加名称失败。宏不会产生错误。它根本不会创建新的命名范围。解决方案是(a)确保目标工作簿包含与源工作簿相同的工作表名称,或者(b)修改宏,以便它识别出缺少工作表并采取适当的措施。
如果您不想创建宏,那么最简单的方法可能是将工作表从源工作簿复制到目标工作簿。
Excel通常会将命名范围与工作表一起复制。唯一不能令人满意的方法是,如果目标工作簿已经具有与您要复制的工作表同名的工作表。在这种情况下,最好使用宏方法。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(8811)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: