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で作ってみてくださいね!

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
現在はフリーランスエンジニア兼テックライターとして活動中。