- ベストアンサー
マクロで複数のcsvファイルを順番に集計し、コピーは行列入れ替えで
- マクロを使用して複数のcsvファイルを順番に集計する方法を説明します。
- ファイル名が「帳票00」から「帳票10」となっており、番号順に開いてコピーします。
- 「帳票5(1)」や「帳票5(2)」など、一部のファイルは分かれています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>ファイル名の番号の若い順から開くにはどうすればよいでしょうか。 3&4の回答で書いたDirのあとソートすればできます。 以下はサンプルです。 ----------------------------------------------- Sub ファイルリスト作成() '初期設定 Dim Line As Long Dim Filename As String Dim Filenames As String Sheet1.Cells.ClearContents 'リスト作成 Line = 1 Filename = Dir(ThisWorkbook.Path & "\*.*") Do While Filename <> "" Filenames = StrConv(Filename, vbLowerCase) If Not (Filenames Like "*.xls" Or Filenames Like "*.bat" ) _ Then Line = Line + 1 Cells(Line, 1) = Filename End If Filename = Dir() Loop If Line = 1 Then MsgBox "対象となるファイルがありません" Exit Sub End If 'ソート [A1].Select Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin End Sub
その他の回答 (2)
- rukuku
- ベストアンサー率42% (401/933)
サンプルの前提条件を書き忘れました。 このサンプルのあるエクセルブックが、対象となるcsvファイルと同じフォルダにあることを想定しています。
- rukuku
- ベストアンサー率42% (401/933)
こんばんは とりあえずすぐに回答できるところから。 1&2 csvを順次「Worksheets.Open」で開きコピー&ペーストします。 3&4 「元データのcsvファイルがすべて同じフォルダにある」&「そのフォルダには余計なcsvファイルは置かれていない」という条件なら、Dir関数を使って対象ファイルのリストを作ることができます。 5 PasteSpecial メソッドの「Transpose」のオプションで設定できます。 マクロの記録で、形式を指定して貼り付け(行列を入れ替えるにチェック)で試してみてください。 6&7 Ifで分岐できます。 質問にはありませんが元データのcsvファイルの最終行を取得するには Cells(Rows.Count, "A").End(xlUp).Row が使えます。(バージョン2000~2007に対応、エクセルの最終行までデータが入っていないことが条件) 以上、参考になれば。 追加で回答できる部分があれば、改めて回答します。 また、詳細が分からない場合には、「補足」に書き込みしてください。
補足
早速のご回答ありがとうございます。 補足ですが、ファイルは実際は100個ほど同じフォルダ内にあります。 他に余計なファイルはありません。 ファイル名の番号の若い順から開くにはどうすればよいでしょうか。
お礼
詳しいご回答ありがとうございました。 参考になりました!