Excelでコピー&ペーストをするとき、どんな方法でやっていますか?
多くの方は、「Ctrl+Cでコピー、Ctrl+Vでペースト」とやっていると思います。
でも、もし毎回決まった場所にコピー&ペーストを何回も繰り返すとしたら、めんどくさいですよね。
そんな時は、Excelマクロを作って自動化しちゃいましょう!
Excelマクロでコピー&ペーストをするには、Range.CopyとPasteSpecialというメソッドを使います。
この2つのメソッドを組み合わせることで、セルやセル範囲を別の場所にコピーしたり、貼り付けたりすることができます。
この記事では、Excelマクロでコピー&ペーストをする基本的な方法をわかりやすく解説します。
Excelマクロでコピー&ペーストを自動化する方法をマスターして、Excelのエキスパートになりましょう!
Range.CopyとPasteSpecialの使い方
Range.CopyとPasteSpecialの使い方をそれぞれ紹介します。
Range.Copyの使い方
Range.Copyメソッドは、コピーしたいセルやセル範囲を引数に指定します。
引数を省略すると、選択されているセルやセル範囲がコピーされます。
' A1からA10までのセルをコピーする
Range("A1:A10").Copy
' 選択されているセルをコピーする
Selection.Copy
PasteSpecialの使い方
PasteSpecialメソッドは、貼り付けたいセルやセル範囲を引数に指定します。
引数を省略すると、アクティブなセルに貼り付けられます。
' B1に貼り付ける
Range("B1").PasteSpecial
' アクティブなセルに貼り付ける
ActiveCell.PasteSpecial
記事を読んでいただき、ありがとうございます。
しかし、こんなことを思っている方はいませんか?
「ゲームを作るVBAを知りたいんじゃない、仕事でつかえるVBAを知りたいんだ!」
「VBAを基礎から体系的に勉強したい」
「でも、勉強するまとまった時間はないし、お金もない!」
そんな方には、Youtuberとしても有名なUdemy講師のエクセル兄さんが教える
「Excel VBA エキスパート認定への道 ~マクロ初心者から資格試験レベルへ &7つの自動化 マクロ を作る15時間」の講座がおすすめです。
この講座の良いところは4つ。
- 仕事でつかえるVBAを学べる
- スクールに通うより圧倒的に安い
- 買い切り
- 隙間時間で勉強できる
- 一度買えば、何度でも見れる
VBAを仕事で活用できるレベルになりたいという方は↓のボタンから購入し、勉強しましょう。
貼り付け方法の指定(数値貼り付けや行列入れ替えなど)
PasteSpecialメソッドには、貼り付け方法を指定するオプションがあります。 例えば、以下のようなオプションがあります。
- Paste:貼り付ける内容を指定します。デフォルトはxlPasteAllです。
- Operation:貼り付ける際に行う演算を指定します。デフォルトはxlNoneです。
- SkipBlanks:コピー元の空白セルを無視するかどうかを指定します。デフォルトはFalseです。
- Transpose:コピー元の行と列を入れ替えるかどうかを指定します。デフォルトはFalseです。
' 数値だけを貼り付ける
Range("B1").PasteSpecial Paste:=xlPasteValues
' コピー元の値をB1の値に加えて貼り付ける
Range("B1").PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd
' コピー元の空白セルを無視して貼り付ける
Range("B1").PasteSpecial Paste:=xlPasteAll, SkipBlanks:=True
' コピー元の行と列を入れ替えて貼り付ける
Range("B1").PasteSpecial Paste:=xlPasteAll, Transpose:=True
別のシートやファイルからのコピペ
Range.CopyメソッドとPasteSpecialメソッドを使えば、別のシートやファイルからもコピペすることができます。
別のシートからコピペする場合は、シート名を指定してください。
' Sheet1のA1からA10までのセルをコピーする
Sheets("Sheet1").Range("A1:A10").Copy
' Sheet2のB1に貼り付ける
Sheets("Sheet2").Range("B1").PasteSpecial
別のファイルからコピペする場合は、ファイル名とパスを指定してください。
' ファイル1のA1からA10までのセルをコピーする
Workbooks.Open("C:\ファイル1.xlsx").Sheets("Sheet1").Range("A1:A10").Copy
' ファイル2のB1に貼り付ける
Workbooks.Open("C:\ファイル2.xlsx").Sheets("Sheet1").Range("B1").PasteSpecial
オプションは他にもたくさんあります。
こちらのサイトに詳しく紹介されているので、他のオプションが気になる方は見てみてください。
コピペ後にコピー状態を解除する方法
コピペをすると、コピー元のセルが点線で囲まれてコピー状態になります。
これを解除するには、Application.CutCopyModeプロパティにFalseを代入します。
' コピー状態を解除する
Application.CutCopyMode = False
Range.CopyメソッドとPasteSpecialメソッドの処理の後に組み込んでおきましょう。
Range.CopyとPasteSpecialの活用例
Range.CopyとPasteSpecialの活用例を2つ紹介します。
- 活用例①:請求書マクロ
- 活用例②:キャラクターにセリフを表示する
それぞれ紹介します。
活用例①:請求書マクロ
請求書を作るマクロを作ってみました。
『請求先リスト』シートに企業名や振込先を入力していると『請求書』シートの宛名と振込先へコピペしてくれます。
このマクロは、請求先リストに1件しか登録されていない場合にしか使えないなど、改善の余地はありまくりです。
あくまで、サンプルとしてみていただければと思います。
Sub 請求先マクロ()
' 請求先リストの企業名をコピーする
Sheets("請求先リスト").Range("B2").Copy
' 請求書へペーストする
Sheets("請求書").Range("A2").PasteSpecial
' 請求先リストの連絡先をコピーする
Sheets("請求先リスト").Range("C2").Copy
' 請求書へペーストする
Sheets("請求書").Range("B8").PasteSpecial
' コピー状態を解除する
Application.CutCopyMode = False
End Sub
活用例②:キャラクターにセリフを表示する
僕のアイコンに『こんにちは』というセリフをコピペするマクロを作りました。
これも『こんにちは』の一言だけしか登録していないので、まだまだ改善できそうです。
こんな感じでExcelで遊ぶときにもマクロが役立ちます。
Sub セリフマクロ()
' Sheet1のA1からA10までのセルをコピーする
Sheets("セリフ一覧").Range("B2").Copy
' Sheet2のB1に貼り付ける
Sheets("メイン").Range("G4").PasteSpecial
' コピー状態を解除する
Application.CutCopyMode = False
End Sub
Range.CopyとPasteSpecialwを駆使してコピペを自動化しよう!(まとめ)
この記事では、Excelマクロでコピー&ペーストを自動化する方法について解説しました。
Excelマクロでコピー&ペーストをするには、Range.CopyとPasteSpecialというメソッドを使います。
この2つのメソッドを組み合わせることで、セルやセル範囲を別の場所にコピーしたり、貼り付けたりすることができます。
また、オプションも数多くあり、貼り付け方法を指定したり、別のシートやファイルからもコピペしたりすることも可能です。
仕事や遊びに使える便利な機能ですので、ぜひ使ってみてください。
コメント