名前付き範囲のコピー(Microsoft Excel)
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 [名前付き範囲のコピー]
。