Graemeには、多数(120以上)の名前付き範囲が定義されたワークブックがあります。彼は、範囲名と定義を別のブックにコピーしたいと考えています。したがって、コピー後、元のブックの範囲C7:H22を参照するMyRange1という名前の範囲は、ターゲットブックに存在し、ターゲットブックの同じ範囲を参照します。

元のブックからターゲットにコピーするものは他にありません。範囲名と定義だけです。

これを行う最も簡単な方法は、定義された各名前をステップスルーし、名前定義をターゲットワークブックにコピーするマクロを使用することです。次に例を示します:

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

マクロでの作業の大部分は、定義されたすべての名前をステップスルーするForEachループで行われることに注意してください。ターゲットワークブックに名前を作成し、ソースワークブック(Valueプロパティに含まれる)と同じ割り当てを与えます。

デフォルトでは、名前付き範囲のValueプロパティにワークシートの名前が含まれていることに注意してください。ソースワークブックに、たとえばSheet4を参照する名前付き範囲があり、ターゲットワークブックにSheet4がない場合、名前の追加は失敗します。マクロはエラーを生成しません。新しい名前付き範囲は作成されません。解決策は、(a)ターゲットワークブックにソースワークブックと同じシート名が含まれていることを確認するか、(b)不足しているシートがあることを認識し、適切なアクションを実行するようにマクロを変更することです。

マクロを作成したくない場合は、ワークシートをソースブックからターゲットブックにコピーするのが最も簡単な方法です。

Excelは通常、名前付き範囲をワークシートと一緒にコピーします。これが満足のいくアプローチではない唯一の場合は、ターゲットワークブックに、コピーしたいワークシートと同じ名前のワークシートがすでにある場合です。その場合は、マクロアプローチを使用するのが最善です。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(8811)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。

link:/ excel-Copying_Named_Ranges [名前付き範囲のコピー]