VBAでデータ転記する方法とは?5つのサンプルを使って解説!


VBAでデータを転記する処理を作りたいな・・・
シンプルな方法だけでなく、いくつかのパターンを知りたい・・・

Excelのちょっとした操作を自動化したいと思ったときに作るのが、データ転記ですよね。ただ、データ転記と一口に言ってもやり方はさまざまです。自分が実現したいデータ転記の方法を調べることが難しい・・・と思っている方も多いのではないでしょうか。

こんにちは!フリーランスエンジニア兼テックライターのワキザカです。

この記事では、VBAでデータ転記処理を作る5つの方法を徹底的に解説します!

この記事はこんな人のために書きました。

  • VBAでできることについて詳しく知りたい人
  • VBAの基礎・機能・作れるツールなどを知りたい人

VBAでデータ転記する方法とは?

はじめに、VBAでデータ転記する方法について簡単に解説します。

データ転記と聞くとコピペをイメージする人もいると思いますが、Copyメソッドは使いません。値を転記する場合は、A = Bのように転記する値をイコールでつないで、処理を書きます。

これだけではイメージがしづらいと思うので、5つのサンプルを用いて具体的な使い方を解説しますね。

VBAでデータ転記する5つのサンプル

それでは、データを転記する5つのサンプルをご紹介します。


■VBAでデータ転記する5つの方法

  • 1行のデータ
  • 複数行・列のデータ
  • 連続したデータ
  • 別シートのデータ
  • 別ブックのデータ

それぞれ詳しく解説しますね。

1行のデータ

1つ目は、1行のデータを転記する方法です。

1行のデータを転記する方法は、次のとおりです。

実行前:

実行前

サンプルコード:

Sub Sample1()
    Range("A1").Value = Range("A2").Value
End Sub

実行結果:

実行結果

A1セルの値をA2セルに転記しています。このように、簡単にデータ転記をすることができます。データ転記の基本なので、ぜひ実際に書いて覚えてみてくださいね。

複数行・列のデータ

2つ目は、複数行・列のデータを転記する方法です。

複数行・列のデータを転記する方法は、次のとおりです。

実行前:

実行前

サンプルコード:

Sub Sample2()
    Range("A8:C10").Value = Range("A2:C4").Value
End Sub

実行結果:

実行結果

このように、Rangeのセル範囲を「開始セル:終了セル」のように範囲指定するだけで、指定範囲を一括で転記することができます。データを一括で転記する場合はおすすめです!

連続したデータ

3つ目は、連続したデータを転記する方法です。

連続したデータを転記する方法は、次のとおりです。

実行前:

実行前

サンプルコード:

Sub Sample3()
    '①データの最終行を取得
    Dim maxRow As Long
    maxRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    '②データ範囲を一括で転記
    Range("E3:G" & maxRow).Value = Range("A3:C" & maxRow).Value
End Sub

実行結果:

実行結果

連続したデータを転記する場合は、転記元のデータの行数が変動するケースもありますよね。そのため、最大行の行番号を取得して、取得した行番号を使ってデータ転記する方法を覚えておくことがおすすめです。

ちなみに、以下で最大行の取得方法について詳しく解説しています。最大行を取得する方法の解説を見たい方は、ぜひ見てみてくださいね!

VBAで最終行を取得するには?|End(xlUp)、SpecialCells(xlLastCell)
更新日 : 2019年4月24日

別シートのデータ

4つ目は、別シートのデータを転記する方法です。

別シートのデータを転記する方法は、次のとおりです。

実行前 (Sheet1):

実行前 - Sheet1

実行前 (Sheet2):

実行前 - Sheet2

サンプルコード:

Sub Sample4()
    '①シートを変数にセット
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Set ws1 = Worksheets("Sheet1")
    Set ws2 = Worksheets("Sheet2")
    
    '②シートを指定してデータを転記
    ws2.Range("A1:C4").Value = ws1.Range("A1:C4").Value
End Sub

実行結果:

実行結果

このように、Rangeの前にシートを指定するだけで、シートをまたいでデータ転記をすることができます。シートを指定するときは1文が長くなってしまうため、シートを変数にセットしてから使うことがおすすめです。

別ブックのデータ

5つ目は、別ブックのデータを転記する方法です。

別ブックのデータを転記する方法は、次のとおりです。

実行前 (Test.xlsx):

実行前 - Test.xlsx

実行前 (マクロ実行ファイル):

実行前 - マクロ実行ファイル

サンプルコード:

Sub Sample5()
  
  '①ブックを開いて変数にセット
  Dim wb1 As Workbook
  Workbooks.Open ThisWorkbook.Path & "Test.xlsx"
  Set wb1 = ActiveWorkbook
  
  '②Test.xlsxのデータをマクロファイルに転記
  wb1.Worksheets("Sheet1").Range("A1:C4") = _
  ThisWorkbook.Worksheets("Sheet1").Range("A1:C4")
 
  '③ブックを閉じる
  Application.DisplayAlerts = False
  wb1.Close
  Application.DisplayAlerts = True
  
End Sub

実行結果:

実行結果

「Workbooks.Open ThisWorkbook.Path & "Test.xlsx"」の処理で、マクロを実行しているブックと同じフォルダにある「Test.xlsx」のブックを開いています。その後、「ブック.シート.Range」でデータ転記元、転記先を指定してデータを転記しています。

このように、「ブック.シート.Range」の順で位置を指定することで、ブックをまたいでデータ転記することができます。

ちなみに、今回サンプルで使用したWorkbook.openを使って別ブックを操作する方法は、以下で詳しく解説しています。詳しく知りたい方は、以下を見てみてくださいね!

【ExcelVBA入門】ワークブック操作する方法について徹底解説!
更新日 : 2019年8月28日

VBAで書式も含めてコピペする方法

ここまで、データ転記の方法について解説してきました。

ただ、値だけでなく書式も含めてデータをコピペしたいときもありますよね。

データ転記のみの例:

データ転記のみの例

書式含めてコピペする例:

書式を含めてコピペする例

書式を含めてコピペしたいときは、Copyメソッドがおすすめです。

具体的な使い方は以下で詳しく解説しているので、ぜひ見てみてくださいね!

VBAでセル・シート・ファイルをコピー(値、書式のみも解説)
更新日 : 2019年4月21日

まとめ

今回は、VBAでデータ転記処理を作る5つの方法について、解説しました。

データ転記処理は、今回解説した方法で簡単に作ることができます。

ぜひ、自動化処理をVBAで作ってみてくださいね!

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

Sanshiro Wakizaka

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!

侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー