Dir関数を使わないで、複数ブックのデータを一つのシートにまとめる
Excel塾のマクロ講座60回
Dir関数を使わないで、複数ブックのデータを一つのシートにまとめる
動画版「マクロ講座」です。
複数ブックのデータを一つのまとめブックのシートにまとめる。
今回は、59回と結果は同じですが、Dir関数を使わずに、特定フォルダのファイルを取得し、まとめシートにデータをまとめます。
使うメソッドは、GetOpenFilenameメソッドです。
Excel ファイル を複数取得します。
(サンプルファイルは、こちらから 60回サンプルデータ)
Dir関数を使わずに、複数ブックのデータを1つにまとめる、マクロ動画
動画で使用したコード
Sub セル範囲書き出したブックのデータをまとめる() Dim 支店bk As Workbook, 支店sh As Worksheet Dim rng As Range, mrow As Long, i As Long, srow As Long matome.Cells(1, 1).CurrentRegion.Offset(1, 0).Clear srow = sentaku.Cells(Rows.Count, 1).End(xlUp).Row ' Application.ScreenUpdating = False For i = 1 To srow Set 支店bk = Workbooks.Open(Filename:=sentaku.Cells(i, 1).Value) Set 支店sh = 支店bk.Worksheets(1) 支店sh.Rows(1).Delete Set rng = 支店sh.UsedRange mrow = matome.Cells(matome.Rows.Count, 1).End(xlUp).Row + 1 rng.Copy Destination:=matome.Cells(mrow, 1) 支店bk.Close SaveChanges:=False Next i ' Application.ScreenUpdating = True End Sub
セル範囲に取得したいファイル名を書き出すマクロ。このマクロでGetOpenFilenameメソッドを使用します。
Sub getfilenames() Dim filenames As Variant, fn As Variant, i As Long filenames = Application.GetOpenFilename( _ FileFilter:="Excel ファイル , *.xlsx", MultiSelect:=True) If Not IsArray(filenames) Then Exit Sub End If i = 1 For Each fn In filenames sentaku.Cells(i, 1).Value = fn i = i + 1 Next fn End Sub
GetOpenFilenameメソッド
ファイルの選択するためのGetOpenFilenameメソッドの書式と引数の説明
Application.GetOpenFilename(FileFilter, FilterIndex, Title, MultiSelect)
ファイルを開くダイアログをマクロの中で使いたい時に、利用するのが、GetOpenFilenameメソッドです。
親オブジェクトは、 Applicationオブジェクトになります。
パラメータ | 省略可否 | データ型 | 引数の内容 |
---|---|---|---|
FileFilter | 〇 | Variant型 | ファイルの候補(種類)を指定する文字列(ファイルフィルタ文字列)を指定します。省略すると種類は「"すべてのファイル (*.*),*.*"」になります。 |
FilterIndex | 〇 | Variant型 | 引数「FileFilter」で指定した「ファイルフィルタ文字列,ワイルドカードのペア」において、何番目のペアを既定値とするかを指定します。この引数を省略するか、「ファイルフィルタ文字列,ワイルドカードのペア」のペア数より大きな値を指定すると、1番目の「ファイルフィルタ文字列,ワイルドカードのペア」が規定値となります。 |
Title | 〇 | Variant型 | [ファイルを開く]ダイアログボックスのタイトルを指定します。これを省略すると、デフォルト”ファイルを開く" になります。 |
ButtonText | 〇 | Variant型 | Macintoshのみ指定できます。 |
MultiSelect | 〇 | Variant型 | TrueかFalseを指定します。Trueを指定した場合、複数ファイルを選択できるようになります。 |