3-5.セルのコピペ

今回は、セルのコピペ(コピー&ペースト)を行う方法をご紹介します。

Copyメソッド / Cutメソッド

<Copyメソッド>
○構文
コピー元Range.Copy Destination:=貼り付け先Range

○処理
コピー元のRangeに指定したセル範囲をコピーします。
エクセルのショートカットキー Ctrl + C に該当します。

○引数
引数Destinationに、貼り付け先のセル範囲を指定します。
省略した場合、貼り付けはされず、コピーした情報はクリップボードに保存されます。

<Cutメソッド>
○構文
切り取り元Range.Cut Destination:=貼り付け先Range

○処理
切り取り元のRangeに指定したセル範囲を切り取ります。
エクセルのショートカットキー Ctrl + X に該当します。

○引数
引数Destinationに、貼り付け先のセル範囲を指定します。
省略した場合、貼り付けはされず、切り取った情報はクリップボードに保存されます。

Pasteメソッド

○構文
Worksheet.Paste Destination:=Range , Link:=True/False

○処理
クリップボードのデータを貼り付けます。
Worksheetは貼り付け先のシートを指定します。
エクセルのショートカットキー Ctrl + V に該当します。

○引数
引数Destinationに、貼り付け先のセル範囲を指定します。
省略した場合、アクティブセルに貼り付けます。

引数LinkにTrueを指定した場合、貼り付けたデータと元のデータをリンクします。Falseまたは省略した場合、リンクされません。

PasteSpecialメソッド

○構文
Range.PasteSpecial Paste:=, Operation:=, SkipBlanks:=, Transpose:=

○処理
Rangeに指定したセル範囲に、クリップボードのデータを貼り付けます。
エクセルの「形式を選択して貼り付け」に該当します。

○引数

引数必須データ型内容
Paste省略可xlPasteType貼り付け形式を指定します
省略した場合、Pasteメソッド同様、書式等を含めすべて貼り付けます
Operation省略可xlPasteSpecialOperation貼り付けの演算形式を指定します
SkipBlanks省略可True / FalseTrueの場合、貼り付け対象から空白セルを除きます
False・省略した場合、貼り付け対象に空白セルを含めます
Transpose省略可True / FalseTrueの場合、行列を入れ替えて貼り付けます
False・省略した場合、行列は入れ替えません

<引数 Paste>

xlPasteType内容
xlPasteAll-4104すべて
xlPasteFormulas-4123数式
xlPasteValues-4163
xlPasteFormats-4122書式
xlPasteComments-4144コメントとメモ
xlPasteValidation6入力規則
xlPasteAllUsingSourceTheme13コピー元のテーマを使用してすべて貼り付け
xlPasteAllExceptBorders7罫線を除くすべて
xlPasteColumnWidths8列幅
xlPasteFormulasAndNumberFormulas11数式と数値の書式
xlPasteValuesAndNumberFormats12値と数値の書式
xlPasteAllMergingConditionalFormats14すべての結合されている条件付き書式

<引数 Operation>

xlPasteSpecialOperation内容
xlPasteSpecialOperationNone-4142演算なし
xlPasteSpecialOperationAdd2加算
xlPasteSpecialOperationSubtract3減算
xlPasteSpecialOperationMultiply4乗算
xlPasteSpecialOperationDivide5除算

CopyPictureメソッド

○構文
コピー元Range.CopyPicture Appearance:=, Format:=

○処理
コピー元のRangeに指定したセル範囲を画像としてコピーします。
エクセルの「図としてコピー」 に該当します。

○引数

引数必須データ型内容
Appearance省略可xlPictureAppearanceコピーする方法を指定します
Format省略可xlCopyPictureFormatコピーする画像の形式を指定します

<引数 Appearance>

xlPictureAppearance内容
xlScreen1画面に合わせる(画面の表示に近い形式)
xlPrinter2用紙に合わせる(印刷表示に近い形式)

<引数 Format>

xlCopyPictureFormat内容
xlPicture-4147ピクチャ
xlBitmap2ビットマップ

サンプルコード

Sub サンプルコード()

    '① Copyメソッドのみ
    Range("A1:C5").Copy Range("E1") '引数名は省略可能
    ActiveSheet.Range("A1:C5").Copy Worksheets(2).Range("A1") '別シートにコピペ
    
    '② Copyメソッド + Pasteメソッド
    Range("A1:C5").Copy
    ActiveSheet.Paste Range("E1")
    Application.CutCopyMode = False
    
    '③ Copyメソッド + PasteSpecialメソッド
    Range("A1:C5").Copy
    Range("E1").PasteSpecial
    Application.CutCopyMode = False
    
    '④-1 数式を数値として貼り付け
    Range("A1:C5").Copy
    Range("E1").PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False

    '④-2 Valueプロパティを使用した値のコピペ
    Range("A1:C5").Offset(,4).Value = Range("A1:C5").Value
    ※値のみのコピペはValueプロパティでもできるが、
      貼り付け先の範囲と貼り付け元の範囲を、同じセルサイズで指定する必要がある
    
    '⑤ セル範囲を画像にして貼り付け
    Range("A1:C5").CopyPicture
    ActiveSheet.Paste Range("E1")
        
End Sub

①~③は同じ結果になります。
書式なども含めすべてコピぺするなら、Copyメソッドで引数Destinationを指定する方法が簡潔です。

ただし、Copyメソッド単体では、1回のコピーで1回の貼り付けしかできません。
一度コピーした情報を何度も貼り付けたい場合は、Copyメソッド+PasteメソッドかPasteSpecialメソッドを使いましょう。

また、リンクして貼り付けるときはPasteメソッド、書式など貼り付ける形式を選択する場合はPasteSpecialメソッドといった使い分けができます。

サンプルコード内に、Application.CutCopyMode = Falseがあります。
これは、コピーやカットをした際に、セルに表示されるコピー・カット領域の点線を非表示にする処理です。
CopyメソッドやCutメソッドを使用する際、引数Destinationを指定しないと、コピー・カット領域の点線が残るので、この処理を使用しましょう。

コメント