[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数ブックのエクセルの表を統合したい』(お魚)
ひとつのエクセルに表を統合したいのですが、マクロでの一括処理について教えていただけますでしょうか。
ファイル名で日ごとにファイルが分かれております。
2021016統計.xlsx
2021017統計.xlsx
:
シート名は同じ(統計)
こちらをひとつのエクセルに表を統合したいのですが、マクロでの一括処理について教えていただけますでしょうか。
何卒よろしくお願い申し上げます。
【イメージ図】
A B C D
1・・・・
2・・・・
3・・・・
4・・・・
↑↓統合
A B C D
1●●●●
2●●●●
3●●●●
4●●●●
5●●●●
統合後↓
A B C D
1・・・・
2・・・・
3・・・・
4・・・・
5●●●●
6●●●●
7●●●●
8●●●●
9●●●●
< 使用 Excel:Excel2016、使用 OS:Windows10 >
こんにちは ^^ 様々な方法があるかと思いますが 何ファイルで、一ファイル当たり何行×何列。。。くらいなの でしょうかね。列は4列なのですね?? ^^;、日付情報は含ん でいます? ^^; 一寸気になった点だけですみません。 とりあえず、ループ処理、とかファイル読込みのエラー対策等が メインかと。 お困りの箇所等、御座いましたら、さらに具体的に、個別に、 ご説明、賜ればお手伝い出来ることも、有るかもしれません 。。。← 多分 ^^; 私が解らなくとも、諸先生から、アドバイスが有ると思いま すです。m(__)m (隠居じーさん) 2021/01/26(火) 13:00
・ファイル数は月ごとなので最大でも30ファイル
・列はB〜F (B:日付 C:名前 D:顧客番号 E:ID番号 F:TEL番号)
・行の開始は2行目からですが、終わりは日のデータによって異なります。
出来上がったコードをなんとなく理解することはできるのですが(英語を辞書引きながら読むレベル)、一から作ることが出来ません。
ネットをみていろいろためしましたが、どうもうまく作用しないためお力をお借りできればと思いご質問いたしました。
(お魚) 2021/01/26(火) 14:28
(隠居じーさん) 2021/01/26(火) 15:20
▼参考になりそうな例 [[20200415114844]] 『VBAのマクロがうまく動かない』(ノブ) [[20210121161257]] 『A列のファイル名を参照してフォルダ内のファイルを順にOPENして特定名のシートを1つのファイルに集約するマクロ』(ゲゲル) [[20201225110230]] 『掲載したマクロ【貼り付け方法の変更】ご教示願います。』(れん) [[20200613152818]] 『VBA:コピーした行を別ファイルの最終行に張り付けるコード』(じょあ)
>ネットをみていろいろためしましたが、どうもうまく作用しない
無理にとは言いませんが、とりあえずそちらのコードを示して、どのようにうまく作用しないのか説明されてどうでしょうか
(●▲のところで、実行時エラー×× ×××というエラーがでるとか、✕✕になるはずが○○になってしまうなど)
また、いきなり複数のブックを処理しようとすると混乱すると思いますから、まずは1つのブックを
(1)開く (2)必要な範囲をコピーする (3)(集約用の(ブックの)シートに貼付する (4)閉じる
というのを考えてみてはどうでしょうか。
こちらなら、手作業を【マクロの記録】でコード化することにより、必要な命令を調べることが出来ます。
こちらが完成してから、複数のブックを相手にすることを考えるとよいと思います。
(複数を相手にする場合、ループ処理というものが関わってきますが、マクロの記録では得られないので、少し難易度があがるように感じられるとおもいます。)
余談ですが「英語を辞書引きながら読むレベル」とのことですが、あくまで命令の1つだったりしますので、英単語としての意味にとらわれるより、プログラムとしてどういう意味であるのか研究されたほうがよいと思います。
なお、ネットで見つけたり、質問掲示板で回答のあったコードを研究される際には、「ステップ実行」と呼ばれる方法で1行ずつ実行して動きを確認してみるというのも非常に有効だとおもいます。
VBAの学習をする上で、必須とも言える技術なので、「ステップ実行」という言葉を聞いたことがなければ↓を読んでみてください。
【ステップ実行】 https://www.239-programing.com/excel-vba/basic/basic023.html http://plus1excel.web.fc2.com/learning/l301/t405.html
ついでに↓も覚えてしまいましょう。
【イミディエイトウィンドウ】 https://www.239-programing.com/excel-vba/basic/basic024.html https://excel-ubara.com/excelvba1/EXCELVBA486.html
【ローカルウィンドウ】 https://excel-ubara.com/excelvba4/EXCEL266.html http://excelvba.pc-users.net/fol8/8_2.html
(もこな2) 2021/01/26(火) 16:18
最大数は30行ほど
1行目がタイトルで2行目からがデータになります。
(お魚) 2021/01/26(火) 17:03
こんばんは ^^
新規でマクロ使用可能ブックを作成後 IJ00193.xlsm として保存
シート名が 統計 のシートを作成してください。
ブック読込先フォルダ名とパスは実際の物にご変更してください。
ブックの読込み順は保証されませんので、最終的に読み込んだもの
を日付で並び替えしています。←良いかどうかは解りません。
読込み順を制御する必要が御座いましたら、もう一工夫必要です。
エラー処理、有ったらいいな。。。的なものは御座いません。^^;
もこな2さんのご案内も勘案されると、これくらいのマクロでしたら
ご自分で作成出来るようになると思いますです。でわ。。。m(_ _)m
Option Explicit
Sub OneInstanceMain()
Const zProgramID As String = "IJ00193.xlsm"
Dim zTb As Workbook
Dim wB As Workbook
Dim wS As Worksheet
Dim r As Range
Dim i As Long
Dim lr As Long
Dim fD As String
Dim fNm As String
Dim v() As Variant
Dim t As Date
t = Timer
Set zTb = Workbooks(zProgramID)
With zTb.Worksheets("統計")
.UsedRange.Clear
.Cells(1, 2).Resize(, 5) = Array("日付", "名前", "顧客番号", "ID番号", "TEL番号")
End With
fD = zTb.Path & "\myd\"
fNm = Dir(fD & "*統計.xlsx")
Do Until fNm = ""
i = i + 1
Set wB = Workbooks.Open(fD & fNm)
Set wS = wB.Worksheets("統計")
Set r = wS.Cells(1, 2).CurrentRegion
v = r.Offset(1).Resize(r.Count - 1).Value
Set r = Nothing
With zTb.Worksheets("統計")
lr = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Cells(lr, 2).Resize(UBound(v, 1), UBound(v, 2)) = v
End With
Erase v
wB.Close False
Set wS = Nothing
Set wB = Nothing
fNm = Dir()
If i Mod 10 = 0 And i >= 10 Then DoEvents
Loop
With zTb.Worksheets("統計")
.Cells(1, 2).CurrentRegion.Sort Key1:=.Range("B1"), Order1:=xlAscending, Header:=xlYes
.UsedRange.Columns.AutoFit
End With
Set zTb = Nothing
MsgBox "終了 " & Format(Int(Timer - t) / 24 / 60 / 60, "hh : mm : ss") & _
Format((Timer - t) - Int(Timer - t), ".000") & " 秒"
End Sub
(隠居じーさん) 2021/01/26(火) 18:32
追伸 ^^; すみません。配列を使いましたので、値貼付けです。 読込対象フォルダには読み込む必要のあるブック以外の拡張子 がxlsxのブックは無い前程です。 書式等必要でしたら別途考えます。[直接レンジオブジェクト 操作でコピペかな ^^v]もっとスマートな方法は他の回答者様 のご案内をお待ちくださいね。でわ。。。m(__)m 18:52 変更^^; (隠居じーさん) 2021/01/26(火) 18:39
ありがとうございます。
確認してみたいと思いま!!!!
(お魚) 2021/01/27(水) 11:48
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.