【Excelマクロ】コピー&ペーストを自動化する基本的な方法を紹介

当ページのリンクには広告が含まれています。

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.CopyPasteSpecialというメソッドを使います。

この2つのメソッドを組み合わせることで、セルやセル範囲を別の場所にコピーしたり、貼り付けたりすることができます。

また、オプションも数多くあり、貼り付け方法を指定したり、別のシートやファイルからもコピペしたりすることも可能です。

仕事や遊びに使える便利な機能ですので、ぜひ使ってみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次