アクティブセルのある表を列幅も含めて新規シートにコピーする~Excel 2013 マクロ講座

マクロで列幅も新規シートにコピー(後半)

Excel 2013 マクロ講座 49回後半マクロ講座

列幅も含めて新規シートにコピーするマクロ

テンプレート用のワークシートに、複数の表のひな形があり、それらを用途に応じてコピーするというケースです。
前頁では、アクティブセルのある表だけを新規シートにコピーするマクロをつくりました。 ここでは、アクティブセルのある表を列幅も含めて新規シートにコピーするマクロを作ります。

(サンプルファイルは、こちらから 2013マクロ講座49回サンプルデータ

アクティブセルのある表を列幅も含めて新規シートにコピーするマクロ

サンプルのような列幅を設定している表のコピーの場合、列幅も貼り付けたいのですが、Excelで形式を選択して貼り付けで行っている列幅の貼り付けは、Paste メソッドでは貼り付けることができません。
列幅(形式を選択して貼り付けで行うはりつけ)の場合には、貼り付けたい場所にあるRangeオブジェクトに対して「PasteSpecial」メソッドを使います。
「Paste」引数に設定可能な項目の一覧表です。
列幅をA1セルに貼り付けたいときは、定数xlPasteColumnWidthsを使います。
Range("A1").PasteSpecial Paste:=xlPasteColumnWidths


先のマクロコードに列幅コピーのコードを追加しましょう。
ワークシートは右(後ろ)に追加します。
Sub セルのある表を列幅も含めて新規シートにコピー()
    ActiveCell.CurrentRegion.Copy
    Worksheets.Add After:=ActiveSheet
    ActiveSheet.Paste
    Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
    Range("E1").Select
End Sub    
    
セルのある表を列幅も含めて新規シートにコピーマクロを実行したところです。