マクロで列幅も新規シートにコピー(後半)
Excel 2013 マクロ講座 49回後半マクロ講座
列幅も含めて新規シートにコピーするマクロ
テンプレート用のワークシートに、複数の表のひな形があり、それらを用途に応じてコピーするというケースです。
前頁では、アクティブセルのある表だけを新規シートにコピーするマクロをつくりました。
ここでは、アクティブセルのある表を列幅も含めて新規シートにコピーするマクロを作ります。
(サンプルファイルは、こちらから 2013マクロ講座49回サンプルデータ)
アクティブセルのある表を列幅も含めて新規シートにコピーするマクロ
サンプルのような列幅を設定している表のコピーの場合、列幅も貼り付けたいのですが、Excelで形式を選択して貼り付けで行っている列幅の貼り付けは、Paste メソッドでは貼り付けることができません。
列幅(形式を選択して貼り付けで行うはりつけ)の場合には、貼り付けたい場所にあるRangeオブジェクトに対して「PasteSpecial」メソッドを使います。
![](gazo2013/macro/range_pastespecial_method.png)
列幅(形式を選択して貼り付けで行うはりつけ)の場合には、貼り付けたい場所にあるRangeオブジェクトに対して「PasteSpecial」メソッドを使います。
![](gazo2013/macro/range_pastespecial_method.png)
「Paste」引数に設定可能な項目の一覧表です。
列幅をA1セルに貼り付けたいときは、定数xlPasteColumnWidthsを使います。![](gazo2013/mini/mini_macro_004.png)
列幅をA1セルに貼り付けたいときは、定数xlPasteColumnWidthsを使います。
Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
![](gazo2013/mini/mini_macro_004.png)
先のマクロコードに列幅コピーのコードを追加しましょう。
ワークシートは右(後ろ)に追加します。
ワークシートは右(後ろ)に追加します。
Sub セルのある表を列幅も含めて新規シートにコピー() ActiveCell.CurrentRegion.Copy Worksheets.Add After:=ActiveSheet ActiveSheet.Paste Range("A1").PasteSpecial Paste:=xlPasteColumnWidths Range("E1").Select End Sub
セルのある表を列幅も含めて新規シートにコピーマクロを実行したところです。
![](gazo2013/macro/2013_macro_49_03.png)
![](gazo2013/macro/2013_macro_49_03.png)