【发布时间】:2019-11-06 19:09:44
【问题描述】:
我有两个具有许多相同命名范围的工作簿,我需要将值从第二个工作簿移动到第一个工作簿。我可以通过指定范围所在的工作表和范围名称来做到这一点,但是大约有 200 个命名范围分布在 20 个左右的工作表上,我只需要其中 11 个工作表上的命名范围。我可以花时间弄清楚并硬编码移动每一个,但我真的希望它是一个大部分自动化的过程。这样,如果添加了新范围,它就可以自动完成,我不必更新代码。
我目前的代码是:
For Each Name In sheetList
Set sheet2vals = sheet2.Sheets(Name).Range(rangename)
Set sheet1vals = sheet1.Sheets(Name).Range(rangename)
sheet2vals.Copy sheet1vals
Next Name
sheetList 是一个工作表名称数组,其中存储了所有范围。该部分完全按照我的需要工作,我只需要找到一种方法从每张纸上拉出范围并移动它们。但是,我似乎能找到获取命名范围列表的唯一方法是在工作簿级别拉动,这并不能告诉我它在哪个工作表上。
【问题讨论】:
-
这 11 张纸(目标纸)与其他纸有何不同?您必须设置一个循环来自动执行此过程。因此我们需要一些条件。
-
每个
Name都有一个RefersToRange属性,它为您提供一个Range对象,每个Range都有一个Parent属性,它为您提供它所属的Worksheet。 -
@MathieuGuindon 这正是我所需要的。如果您想将此移至回复,我会将其标记为已接受。