スライドショー

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

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説