この記事ではVBAマクロで範囲指定(最終行まで選択・コピー)し貼り付けする(別シート・別ブック)方法(2行目から)について解説していきます。
ポイントとしては、
`Find`関数、
`Copy`メソッド、
`PasteSpecial`メソッド
を使用することです。
なお、下記の解説では完全な初心者でもわかりやすいようにあえて変数名(あなた自身が名付けていい場所)を少々変わった名称にしております。
そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。
それでは詳しく見ていきましょう!
VBAマクロで範囲指定(2行目から最終行まで選択・コピー)し別のシートに貼り付ける方法【Find, Copy, PasteSpecial】
初めてVBAマクロを使用する方でも理解できるよう、段階を追って説明いたします。
まずは、指定した範囲をコピーして同じブック内の別のシートに貼り付ける基本的な方法を見ていきましょう。
具体的には以下サンプルのSheet1の2行目から最終行まで(A列)をまずコピーし、Sheet2に貼り付けてみます。1行目はヘッダーの場合が多いため、2行目から指定するケースは多いですね。
以下のコードを活用しましょう。
Atl+F11にてVBE画面を開き、以下コードをコピペしましょう。
Sub SaishuuGyouMadeCopyPaste()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim SaishuuGyou As Long
' シートの設定
Set ws1 = ThisWorkbook.Sheets("Sheet1")
Set ws2 = ThisWorkbook.Sheets("Sheet2")
' 最終行を取得
SaishuuGyou = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
' 範囲をコピー
ws1.Range("A2:A" & SaishuuGyou).Copy
' 別のシートに貼り付け
ws2.Range("A2").PasteSpecial Paste:=xlPasteValues
End Sub
このあたりは基本の動作のため、あなた自身で考えるというよりも、まずはほぼ暗記のようなイメージでいいです。
複雑なコードを扱うようになった際に、あなた自身で書いていきましょう。
Alt+F8にてマクロ選択画面を出し、該当のSub SaishuuGyouMadeCopyPaste()関数を実行させてます。
別シートに貼り付けた結果(Sheet2)は以下の通りです!
このコードでは、以下の手順を実行しています:
1. シート1とシート2を指定します(`ws1`, `ws2`を設定)
2. シート1のA列で最後にデータが入力されている行を取得します(`SaishuuGyou`を取得)
3. 2行目から最終行までの範囲をコピーします
4. シート2のA2セルの先頭~最終行分まで、値だけを貼り付けます
このコードを実行する前に、ブック内に「Sheet1」と「Sheet2」が存在し、データが入力されていることを確認してください。
次に、範囲指定してコピーしたデータを別のブックに貼り付ける方法を解説します。
VBAマクロで範囲指定(2行目から最終行まで選択・コピー)し別のブック(ファイル)に貼り付けする方法【Workbooks.Open, Copy, PasteSpecial】
前回は同一ブック内の異なるシート間でのデータ移動を学びました。
今回はさらに一歩進めて、異なるブック間でのデータ移動を行います。
こちらも初心者の方が取り組みやすいよう、わかりやすい変数名を使用しています。
Sub BetuBukkuNiCopyPaste()
Dim motoBukku As Workbook, mokuhyouBukku As Workbook
Dim motoSheet As Worksheet, mokuhyouSheet As Worksheet
Dim SaishuuGyou As Long
' 元のブックとシートの設定
Set motoBukku = ThisWorkbook
Set motoSheet = motoBukku.Sheets("Sheet1")
' 目的のブックとシートを開き、設定
Set mokuhyouBukku = Workbooks.Open("C:\path\to\your\workbook.xlsx")
Set mokuhyouSheet = mokuhyouBukku.Sheets("Sheet1")
' 最終行を取得
SaishuuGyou = motoSheet.Cells(motoSheet.Rows.Count, "A").End(xlUp).Row
' 範囲をコピー
motoSheet.Range("A2:A" & SaishuuGyou).Copy
' 目的のブックの指定したシートに貼り付け
mokuhyouSheet.Range("A2").PasteSpecial Paste:=xlPasteValues
' クリップボードをクリア
Application.CutCopyMode = False
' 目的のブックを保存し閉じる
mokuhyouBukku.Close SaveChanges:=True
End Sub
このスクリプトは以下のような手順で動作します:
1. 現在のブックとシート(`motoBukku`, `motoSheet`)を設定します。
2. 目的のブックを開き、目的のシート(`mokuhyouBukku`, `mokuhyouSheet`)を設定します。ここでパスを正しく設定することが重要です。
3. 元のシートで最後にデータが入力された行を取得します。
4. 2行目から最後の行までの範囲をコピーします。
5. 目的のシートにコピーしたデータを貼り付けます。
6. クリップボードをクリアし、不要なデータを削除します。
7. 目的のブックを保存し、閉じます。
この方法を用いることで、データの転送をスムーズに行うことが可能となります。
ただし、このスクリプトを実行する前に、ファイルパス(別ブック:ファイルがどこにあってそのような名称か)が正確であることを確認することが重要です。
また、目的のブックとシートが存在していることも確認してください。
まとめ VBAマクロで2行目から最終行までのコピー・選択・貼り付け(範囲指定:別シート・別ブック)方法
ここまでで基本的な範囲指定とコピー&貼り付けに関するVBAマクロの解説を行いました。
初心者の方でもスムーズに操作できるように、変数名をわかりやすくしています。また、エラーを避けるためにも、各パラメーターの設定やシート名の確認を行うことをお勧めします。
実際にコードを試してみて、Excel作業の効率を向上させましょう!