複数エクセルファイルのレコードを1ファイルにまとめたい。
1.ファイル名は違う(質問上のファイル名はあ、い、う、の3つとします)
2.フィールド名は共通
3.レコード数(行側)はファイルにより違う
私はファイルあ の行末にファイルい と ファイルうのフィールド以外の行全部をコピーしペーストし、ファイルあをファイルAのように名前を変更し保存し利用しています。
しかしながら、ファイルあ、い、う程度ならその作業でも良いのですが、ファイル数が多くなると、手間がかかります。
ファイルは月単位に作られ、毎月各ファイルの行数も変わります。
フィールドは常に共通です。効率的にファイルA(あ、い、う、え、お、、、、)を作る関数とかVBA?とか教えて頂けないでしょうか?
No.2ベストアンサー
- 回答日時:
以下のマクロを標準モジュールに登録してください。
シート名が提示されていないので、”集計”としました。変える場合は
Const sname As String = "集計" をあなたのシート名に変えてください。
Const folder As String = "D:\goo\excel\goo371\" は、集計対象のファイルが格納されているフォルダです。
あなたの環境にあわせて、適切に設定して下さい。
マクロを登録したファイルのシートにも同じシート名(例では集計)のシートを予め作成しておいてください。
集計対象のフォルダ内の全てのファイル(拡張子が.xlsx)のシート(例では集計)をコピーして、マクロのあるファイルのシート(例では集計)に格納します。
--------------------------------------
Option Explicit
Const sname As String = "集計"
Const folder As String = "D:\goo\excel\goo371\"
Public Sub ファイル纏め()
Dim path As String
Dim datafile As String
Dim row0 As Long
Dim row As Long
Dim maxrow As Long
Dim ws As Worksheet
row0 = 1
ThisWorkbook.Worksheets(sname).Cells.Clear
datafile = dir(folder & "*.xlsx")
Do While datafile <> ""
Workbooks.Open (folder & datafile)
Set ws = Worksheets(sname)
If row0 = 1 Then
ws.Rows(1).Copy Destination:=ThisWorkbook.Worksheets(sname).Rows(1)
row0 = row0 + 1
End If
maxrow = ws.Cells(ws.Rows.Count, 1).End(xlUp).row
For row = 2 To maxrow
ws.Rows(row).Copy Destination:=ThisWorkbook.Worksheets(sname).Rows(row0)
row0 = row0 + 1
Next
Workbooks(datafile).Close
datafile = dir()
Loop
MsgBox ("完了")
End Sub
No.1
- 回答日時:
補足要求です。
①ファイル名(あ、い、う)の拡張子は何でしょうか。.xlsですか、それとも.xlsxですか。
②3つのファイルの同じシート名のものをまとめればよいと理解しましたが、そのシート名は何でしょうか。
(大文字、小文字、全角、半角についてもを正確に提示ください)
③ファイル”あ”の見出し行(1行目)とデータ行(2行目以降)をコピーし、”い”と”う”についてはデータ行(2行目)をコピーすれば良いのでしょうか。(フィールドに意味がよくわかりませんので、その確認です)
④ファイルをまとめるとき、順番はかならず、”あ”、”い”、”う”の順でしょうか。
それとも、”い”、”う”、”あ”のようになっても良いのでしょうか。
(その場合は、”い”の見出し行とデータ行をコピーし、他のファイルはデータ行のみコピーします)
⑤ファイル名(あ、い、う)は、同じフォルダにまとめてある前提で良いですか。
また、そのフォルダには、(あ、い、う)以外のファイルは存在しない前提で良いですか。
(集計対象のファイルのみ格納されている前提)
⑥まとめる先のファイル(ファイルA)は、⑤とは違うフォルダに格納されている前提で良いですか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access VBA を利用して、フォルダ内のファイルの名称を変更したい 1 2023/08/03 08:27
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) エクセルで、ファイルの分割 と ファイルの集約 1 2022/08/28 08:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Visual Basic(VBA) vbaサブフォルダーをワイルドカードで取得したい 2 2022/11/15 08:04
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
エクセルでファイルを開かずに...
-
one drive からExcel onlineを...
-
エクセルで他のファイルのセル...
-
ファイル内にある数字の出現回...
-
エクセルのファイルを開くこと...
-
エクセル(Excel)で別ファイルと...
-
Excel 2枚目のブックが開かな...
-
複数のtxtの特定部分を抽出し、...
-
パワーポイントをエクセルファ...
-
エクセルで「500時間」を「何日...
-
EXCELで上書き保存しないと反映...
-
エクセル0:00と表示される原因
-
エクセルを上書き保存したのに...
-
エクセルで使えるかわいい枠を...
-
マクロ VBA ファイル名を連番...
-
メール添付されているファイル...
-
エクセルでファイルを閉じても...
-
エクセルに貼った画像が変形し...
-
gage R&R の計算
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
エクセルでファイルを開かずに...
-
Excel 2枚目のブックが開かな...
-
CPU使用率が100%となっ...
-
エクセルで他のファイルのセル...
-
マクロで別ファイルのシートコ...
-
複数のtxtの特定部分を抽出し、...
-
PhotoshopでExcelのファイルが...
-
ファイル内にある数字の出現回...
-
MATLABでcsvファイルを読み込も...
-
エクセルマクロ 数式【VLOOKUP...
-
one drive からExcel onlineを...
-
excel ファイル
-
マクロでシートのデータをコピ...
-
EXCELで関数が使えなくなった?
-
エクセルマクロ(vba)のFSO.Open...
-
エクセルでハイパーリンクが貼...
-
エクセル(Excel)で別ファイルと...
-
エクセル保存後に別のブックの...
-
複数ファイルの同じ行のデータ...
おすすめ情報
補足要求下さりありがとうございます。
①拡張子は.xlsxです。エクセル2016です。
②シート名は全く同じです。
③見出しフィールド名はあ、い、う共に共通なので、
見出し列名が一致すればあ、い、うの行順番は問いません。
④見出し列はあ、い、う共に共通かつ、行側の並びはあ、い、うが う、い、あ になっても構いません。
列名(フィールド並び含め)を一行目に利用し、2行目以降のレコードだけを繋げて1ファイル(1ワークシート)に出来ればと思っております。
⑤同じフォルダにファイル名が異なり、ワークシート名が同じで存在しております。
⑥まとめる先のファイルフォルダは変わっても同じでも構いません。
よろしくお願い致します。