【Excel マクロ初心者】エクセルを開く・転記する・閉じる・保存をExcel マクロでやってみた(応用)

スポンサーリンク
スポンサーリンク

どうも!そこらへんの社会人です!!

今回は、エクセルを開く・転記する・閉じるをマクロでやってみたいと思います!
仕事で大量のエクセルファイルの処理におわれ業務に追われているという方はぜひ、業務改善の参考にして頂きたいです!

まず、準備として下記のように2つのエクセルファイルを準備しました。

事前に開いています

Excelシート:転記場所
シート名:転記シート

事前に閉じています

Excelシート:テスト
シート名:Sheets1

アドセンス 広告

STEP①:1行目だけを転機する

今回の内容は下記の記事の応用になります。
基本的な、エクセルファイルを開く・転記する・閉じるがいまいち理解できていない・・・
という方は、ご参考ください。

【Excel マクロ初心者】エクセルを開く・転記する・閉じる・保存をExcel マクロでやってみた(導入)

Sub データ取り込み()

Workbooks.Open (“C:¥Users¥ユーザー名¥Desktop¥vba¥テスト.xlsx”)
(“C:¥Users¥ユーザー名¥Desktop¥vba¥テスト.xlsx”)のExcelを開く

Workbooks(“転記場所.xlsm”).Sheets(“転記シート”).Range(“B4”).Value _
= Workbooks(“テスト.xlsx”).Sheets(“Sheet1”).Range(“B4”).Value
エクセル名「テスト.Xlsx」のシート名「Sheet1」のセル「B4」を
エクセル名「転記場所.xlsm」のシート名「転記シート」のセル「B4」に記載する

Workbooks(“転記場所.xlsm”).Sheets(“転記シート”).Range(“C4”).Value _
= Workbooks(“テスト.xlsx”).Sheets(“Sheet1”).Range(“C4”).Value
エクセル名「テスト.Xlsx」のシート名「Sheet1」のセル「C4」を
エクセル名「転記場所.xlsm」のシート名「転記シート」のセル「C4」に記載する

Workbooks(“転記場所.xlsm”).Sheets(“転記シート”).Range(“D4”).Value _
= Workbooks(“テスト.xlsx”).Sheets(“Sheet1”).Range(“D4”).Value
エクセル名「テスト.Xlsx」のシート名「Sheet1」のセル「D4」を
エクセル名「転記場所.xlsm」のシート名「転記シート」のセル「D4」に記載する

Workbooks(“テスト.xlsx”).Close
エクセル名「テスト.Xlsx」を閉じる

End Sub

まず、1行だけやってみました。実際の動画がこのようになります。

STEP②:複数行を転記する

次は複数行をやっていきましょう!
複数行をやる前におさえておきたいポイントがあります!

Range(“B1000”).End(xlUP).Row ⇒ B1000を選択し、「Ctrl +↑」をした行

言葉だけでも難しいので実際にやってみたのがこちらになります。

上記の例だと、セル「B1000」から「Ctrl + ↑」で「B3」が選択されましたね!
これを踏まえてコードを確認していきましょう!!

Option Explicit

Sub データ取り込み()

Dim i
関数iを定義
Dim cnt
関数cntを定義

cnt = Workbooks(“転記場所.xlsm”).Sheets(“転記シート”).Range(“B1000”).End(xlUp).Row + 1
cnt=エクセル名「転記場所.xlsm」のシート「転記シート」のセル「B1000」から
「ctrl + ↑」をした行+1行目 ※実際にやって頂くと理解しやすいですよ

Workbooks.Open (“C:¥Users¥ユーザー名¥Desktop¥vba¥テスト.xlsx”)
(“C:¥Users¥ユーザー名¥Desktop¥vba¥テスト.xlsx”)のExcelを開く

For i = 4 To Workbooks(“テスト.xlsx”).Sheets(“Sheet1”).Range(“B1000”).End(xlUp).Row
i を4からエクセル名「テスト.xlsx」のシート「Sheet1」のセル「B1000」から
「ctrl + ↑」をした行までを繰り返す

Workbooks(“転記場所.xlsm”).Sheets(“転記シート”).Range(“B” & cnt).Value _
= Workbooks(“テスト.xlsx”).Sheets(“Sheet1”).Range(“B” & i).Value
エクセル名「テスト.Xlsx」のシート名「Sheet1」のセル「B+i」を
エクセル名「転記場所.xlsm」のシート名「転記シート」のセル「B+cnt」に記載する

Workbooks(“転記場所.xlsm”).Sheets(“転記シート”).Range(“C” & cnt).Value _
= Workbooks(“テスト.xlsx”).Sheets(“Sheet1”).Range(“C” & i).Value
エクセル名「テスト.Xlsx」のシート名「Sheet1」のセル「C+i」を
エクセル名「転記場所.xlsm」のシート名「転記シート」のセル「C+cnt」に記載する

Workbooks(“転記場所.xlsm”).Sheets(“転記シート”).Range(“D” & cnt).Value _
= Workbooks(“テスト.xlsx”).Sheets(“Sheet1”).Range(“D” & i).Value
エクセル名「テスト.Xlsx」のシート名「Sheet1」のセル「D+i」を
エクセル名「転記場所.xlsm」のシート名「転記シート」のセル「D+cnt」に記載する

cnt = cnt + 1
cntをcnt+1する

Next
繰り返す

Workbooks(“テスト.xlsx”).Close
エクセル名「テスト.Xlsx」を閉じる

End Sub

実際にマクロを実行したものが、こちらになります。

STEP③:複数エクセルに実行する

次に下記のようにフォルダ内にあるエクセルが複数の場合を考えます!
このときファイル名とかを一回一回書きかえないといけない・・・なんてことだったら
すごくめんどくさいですよね・・・その対処方法をご紹介していきます!

ポイント①Application.GetOpenFilename = 開いたファイルパスを取得
     ⇒使う理由:ファイルパスを記載しなくてもよい!!
ポイント②ActiveWorkbook = 現状活動中(Active)なエクセル
     ⇒使う理由:ファイル名を記載しなくてもよい!!
このポイントを押さえて実際のコードを確認していきましょう!!

 
 

Option Explicit

Sub データ取り込み()

Dim i
Dim cnt
Dim file

cnt = ActiveWorkbook.Sheets(“転記シート”).Range(“B1000”).End(xlUp).Row + 1
cnt=エクセル名「転記場所.xlsm」のシート「転記シート」のセル「B1000」から
「ctrl + ↑」をした行+1行目 ※実際にやって頂くと理解しやすいですよ

file = Application.GetOpenFilename
file = 開いたファイルパスを取得する

Workbooks.Open (file)
エクセルfileを開く

For i = 4 To ActiveWorkbook.Sheets(“Sheet1”).Range(“B1000”).End(xlUp).Row
i を4から活動中シート「Sheet1」のセル「B1000」から
「ctrl + ↑」をした行までを繰り返す

Workbooks(“転記場所.xlsm”).Sheets(“転記シート”).Range(“B” & cnt).Value _
= ActiveWorkbook.Sheets(“Sheet1”).Range(“B” & i).Value
エクセル名「テスト.Xlsx」のシート名「Sheet1」のセル「B+i」を
エクセル名「転記場所.xlsm」のシート名「転記シート」のセル「B+cnt」に記載する

Workbooks(“転記場所.xlsm”).Sheets(“転記シート”).Range(“C” & cnt).Value _
= ActiveWorkbook.Sheets(“Sheet1”).Range(“C” & i).Value
エクセル名「テスト.Xlsx」のシート名「Sheet1」のセル「C+i」を
エクセル名「転記場所.xlsm」のシート名「転記シート」のセル「C+cnt」に記載する

Workbooks(“転記場所.xlsm”).Sheets(“転記シート”).Range(“D” & cnt).Value _
= ActiveWorkbook.Sheets(“Sheet1”).Range(“D” & i).Value
エクセル名「テスト.Xlsx」のシート名「Sheet1」のセル「D+i」を
エクセル名「転記場所.xlsm」のシート名「転記シート」のセル「D+cnt」に記載する

cnt = cnt + 1

Next

ActiveWorkbook.Close
活動中のエクセルを閉じる

End Sub

実際にマクロを実行してみたのがこちらです!!

いかがでしょうか??

ファイル名が違っていてもマクロが実行されたのがお分かり頂けただろうか?
これを参考にして頂き少しでも生産性UPにつながり、みなさんの生活にゆとりがでればうれしいです!!

コメント

  1. […] […]

タイトルとURLをコピーしました