VBA(マクロ)を用いて一括でブックを操作する

スポンサーリンク

今回紹介するVBA(マクロ)の内容

VBA(マクロ)では複数のブック(Excelファイル)に対して繰り返し作業を行うこともできます。
今回紹介するコードは私が初めてネットで調べたコードを加工して作ったもので「一つのフォルダにあるファイルを順に開けて、中にあるシートを一つのファイルにまとめる」という作業をしてくれます。

使用方法

①名前はなんでもよいのでフォルダを作成し、まとめたいファイルをその中に入れておきます。
②後に記すVBAのコードを実行します。
③フォルダの選択画面が立ち上がるので、まとめたいファイルをいれたフォルダの中にあるファイルのうちどれか一つを選択します。
④順番にファイルを開いてシートを新しいファイルにコピーしていくVBAが実行されます。

コードの詳細

作成したコードは以下になります。作成した当時勤めていた会社で商品の売り上げデータを集めていたのですが、一つのファイルに1週間分のデータしか記載されていなかったので、まとめたいという気持ちで作成しました。

Sub 一つのフォルダからシート取り出す()
Workbooks.Add
’新しいブックの追加:コピー先のファイルを作成する
Dim FolderName As String
’文字列を入れる変数として「FolderName」を使う
Dim index As Integer
’数字を入れる変数として「index」を使う
Dim FileName As String
’文字列を入れる変数として「FileName」を使う
FolderName = Application.GetOpenFilename
’ダイアログを用いて選択したファイルのパスをFolderNameとする①
If FolderName = “False” Then
’FolderNameが選択されていなければ作業を終了する
Exit Sub
End If
index = InStrRev(FolderName, “\”)
’②FolderNameのうちフォルダを示す部分を取り出す(1)文字数をカウントする
FolderName = Left(FolderName, index)
’③(2)カウントした文字数のところまで抜き出す
FileName = Dir(FolderName & “*”)
’④フォルダの中に入っているファイル全てを順にFileNameに当てはめていく
Do While FileName <> “”
’FileNameがなくなるまで継続する
シートコピー (FileName)
’⑥FileNameのファイルに対して、下に記すVBA「シートコピー」を実行する
FileName = Dir()
’⑤次のファイルに移る
Loop
Worksheets(“sheet1”).Delete
’最初にブックを追加した際に元々あるシートを削除する
End Sub
Private Sub シートコピー(FileName2 As String)
’⑥コードをまたいで渡された変数を受け取る側の変数はFileName2とする
Dim ws As Worksheet
Workbooks.Open FileName2
’FileName2で指定しているファイルを開く
For Each ws In Workbooks(Workbooks.Count).Sheets
’コピー元として開いたファイルの各シートに対して、作業を行う
ws.Copy After:=Workbooks(Workbooks.Count – 1).Worksheets(1)
’⑦コピー元として開いたファイルのシートを最初に開いたコピー先のファイル(VBAの1行目のコードで追加したファイル)の1つ目のシートの後にコピーしていく
Next
Workbooks(Workbooks.Count).Saved = True
’開いたファイルを保存せずに閉じるようにする
Workbooks(Workbooks.Count).Close
’開いたファイルを閉じる
End Sub

VBAコードの解説

①FolderName = Application.GetOpenFilename

ファイルを開くダイアログを表示して、選択したファイルのパス(C:\Users\○○\Desktop\○○など、ファイルのある場所を表すもの)を読み込みます。

②index = InStrRev(FolderName, “\”)

①で読み込んだファイルの情報から入っているフォルダの情報を取り出すための作業。右から数えて「\」が表示されるまでがフォルダの情報になるので、その位置をindexという変数に当てはめています。

③FolderName = Left(FolderName, index)

①で調べたパスの中から、②で調べた一番右の「\」までの文字列を抜き出すコードです。抜き出したものをFolderNameに入れることでFolderNameを変更します。

④FileName = Dir(FolderName & “*”)

Dirは指定した条件に当てはまるパスをもつファイル名を答えてくれる関数です。これでFileNameという変数に一つのファイルがセットされます。

⑤FileName = Dir()

繰り返しを指定し、次のファイルをFileNameにセットする際に使うコードです。これで次のファイルがセットされます。

⑥シートコピー (FileName) → Private Sub シートコピー(FileName2 As String)

「Private Sub シートコピー」で記しているコードを実行するコードです。()の中に入っている変数FileNameはそのままその値が、シートコピーの中に記されているFileName2に当てはめられます。

⑦ws.Copy After:=Workbooks(Workbooks.Count – 1).Worksheets(1)

それぞれのシートをコピーして、VBAで作成したコピー先のファイルの1つ目のシートの後に追加するコードです。
Workbooks.Countは開かれているExcelのファイル数を表します。

個人用マクロブックを開く設定にしているかどうかで値が変わります。個人用マクロブックを開く設定にしていると開かれているファイルが一つ多くなるので、4で、開かない設定にしていると3になります。いずれにしても「一番最後に開く」コピー元ファイル(Workbooks(Workbooks.Count))から「その1つ前に開く」コピー先ファイル(Workbooks(Workbooks.Count – 1))にコピーをするので、以上のような記載をしておくと便利だと思います。

⑧.Saved = True

確認メッセージを表示せずに変更しないファイルを閉じるときに使うコードです。「.Save(保存する)」とは意味が全然違います。

VBA(マクロ)記載ファイルの投稿

このコードは少し複雑で理解するのに時間がかかりましたが、色んなケースで使える便利なコードなので、紹介したくて記載しました。VBA(マクロ)を含むファイルなので、不安を感じる方はダウンロードを控えていただく方が良いですが、「そもそもどこにコードを書けばよいかわからない」という方のためにサンプルファイルアップしておきます。

ファイルを開いて、表示されるボタンを押せばVBA(マクロ)が実行されます。
(セキュリティの設定をされていない方は設定をお願いします。)

複数のファイルのシートを一つのファイルに集めるマクロ

おすすめ書籍 amazonicon Amazon rakutenicon 楽天 Yahooicon Yahoo検索
amazoniconAmazon
rakutenicon楽天Kobo電子書籍ストア
続 Excel VBAのプログラミングのツボとコツがゼッタイにわかる本【電子書籍】[ 立山秀利 ]
価格:2,527
rakutenicon楽天ブックス
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本(続) 最初からそう教えてくれればいいのに! Excel [ 立山秀利 ]
価格:2,808
rakuteniconbookfan 2号店 楽天市場店
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本/立山秀利【1000円以上送料無料】
価格:2,376
rakutenicon楽天ブックス
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 最初からそう教えてくれればいいのに! Excel [ 立山秀利 ]
価格:2,376
rakuteniconHMV&BOOKS online 1号店
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 最初からそう教えてくれればいいのに!Excel2007 / 2003対応 / 立山秀利 【本】
価格:2,376
rakuteniconブックオフオンライン楽天市場店
【中古】 Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 最初からそう教えてくれればいいのに!Excel2007/2003対応 /立山秀利【著 【中古】afb
価格:1,320
rakuteniconKSC
『中古』続ExcelVBAのプログラミングのツボとコツがゼッタイにわかる本
価格:6,989
rakutenicon楽天Kobo電子書籍ストア
デバッグ力でスキルアップ! Excel VBAのプログラミングのツボとコツがゼッタイにわかる本【電子書籍】[ 立山秀利 ]
価格:2,236
rakuteniconぐるぐる王国DS 楽天市場店
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本
価格:2,376
rakuteniconぐるぐる王国 楽天市場店
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本
価格:2,376
rakuteniconネットショップ駿河屋 楽天市場店
【中古】単行本(実用) ≪コンピュータ≫ Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 / 立山秀利【中古】afb
価格:1,570
rakuteniconECJOY!プレミアム楽天市場店
秀和システム Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 最初からそう教えてくれればいいのに! 立山秀利/著
価格:2,376
rakuteniconクロネコ書店
【中古】Excel VBAのプログラミングのツボとコツがゼッタイにわかる本—最初からそう教えてくれればいいのに!Excel2007/2003対応【中古】
価格:3,330
rakuteniconコンプリートブックス
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本
価格:2,376
rakuteniconbookfan 1号店 楽天市場店
【店内全品5倍】Excel VBAのプログラミングのツボとコツがゼッタイにわかる本/立山秀利【3000円以上送料無料】
価格:2,376
rakutenicon楽天Kobo電子書籍ストア
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本【電子書籍】[ 立山秀利 ]
価格:2,138
rakuteniconドラマ楽天市場店
【新品】【本】Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 立山秀利/著
価格:2,376
rakutenicon楽天Kobo電子書籍ストア
続々 Excel VBAのプログラミングのツボとコツがゼッタイにわかる本【電子書籍】[ 立山秀利 ]
価格:2,430
rakuteniconKSC
『中古』ExcelVBAのプログラミングのツボとコツがゼッタイにわかる本
価格:6,468
rakuteniconKSC
『中古』続々ExcelVBAのプログラミングのツボとコツがゼッタイにわかる本
価格:10,788
rakuteniconドラマ楽天市場店
【新品】【本】Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 続 立山秀利/著
価格:2,808
rakuteniconbookfan 2号店 楽天市場店
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 続/立山秀利【1000円以上送料無料】
価格:2,808
rakuteniconbookfan 1号店 楽天市場店
【店内全品5倍】Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 続/立山秀利【3000円以上送料無料】
価格:2,808
rakuteniconぐるぐる王国DS 楽天市場店
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 続
価格:2,808
rakuteniconVALUE BOOKS
【ポイント 10倍】【中古】Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 最初からそう教えてくれればいいのに! Excel 続 /秀和システム/立山秀利 (単行本)【年末 セール SALE 対象商品】
価格:758
rakuteniconVALUE BOOKS
【中古】Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 最初からそう教えてくれればいいのに! Excel 続 /秀和システム/立山秀利 (単行本)【年末 セール SALE 対象商品】
価格:758
rakuteniconぐるぐる王国 楽天市場店
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 続
価格:2,808
rakuteniconECJOY!プレミアム楽天市場店
秀和システム Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 続 最初からそう教えてくれればいいのに! 立山秀利/著
価格:2,808
rakuteniconコンプリートブックス
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 続
価格:2,808
rakuteniconブックオフオンライン楽天市場店
【中古】 続ExcelVBAのプログラミングのツボとコツがゼッタイにわかる本 最初からそう教えてくれればいいのに! /立山秀利【著】 【中古】afb
価格:1,264
Yahooicon京都大垣書店Yahoo!店
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 続 / 立山 秀利 著
価格:2,808
Yahooiconbookfanプレミアム
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 続 / 立山秀利
価格:2,808
Yahooiconbookfan Yahoo!店
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 続/立山秀利
価格:2,808
Yahooiconbookfanプレミアム
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 / 立山秀利
価格:2,376
Yahooiconbookfan Yahoo!店
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本/立山秀利
価格:2,376
YahooiconHonya Club.com Yahoo!店
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 続/立山秀利
価格:2,808
Yahooiconぐるぐる王国 ヤフー店
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 続
価格:2,808
YahooiconHMV&BOOKS online Yahoo!店
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 最初からそう教えてくれればいいのに!Excel2007 /
価格:2,376
Yahooiconぐるぐる王国 スタークラブ
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 続
価格:2,808
Yahooiconぐるぐる王国2号館 ヤフー店
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 続
価格:2,808
Yahooiconぐるぐる王国DS ヤフー店
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 続
価格:2,808
Yahooiconぐるぐる王国 ヤフー店
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本
価格:2,376
Yahooiconぐるぐる王国 スタークラブ
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本
価格:2,376
Yahooiconぐるぐる王国2号館 ヤフー店
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本
価格:2,376
Yahooiconぐるぐる王国DS ヤフー店
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本
価格:2,376
Yahooiconドラマ書房Yahoo!店
新品本/Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 続 立山秀利/著
価格:2,808
YahooiconドラマYahoo!店
新品本/Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 続 立山秀利/著
価格:2,808
YahooiconWINDY BOOKS on line
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本  続
価格:2,808
Yahooiconドラマ書房Yahoo!店
新品本/Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 立山秀利/著
価格:2,376
YahooiconドラマYahoo!店
新品本/Excel VBAのプログラミングのツボとコツがゼッタイにわかる本 立山秀利/著
価格:2,376

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする