![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
VBAをはじめて1ヶ月のものです。
VBAの集計ツールを作成していますが
思うようにいかず、お知恵をお借りしたいと考えています。
abcというフォルダ配下に以下のように4桁の日付を示す
フォルダが日付毎にあります。(いくつあるかはわかりません。)
さらにその配下にいくつかのcsvファイルがおいてありますが
aaa.csvというcsvのみ抽出し
最終的には合体.csvのような集計CSVを作成したいと考えています。
以上よろしくお願いいたします。
(1) abc → 0812フォルダ
<aaa.csv>
A列 B列 C列
1行 100 200 8月12日
2行 100 100
3行 200 200
4行 300 100
5行 100 100
6行 200 200
7行 400 100
8行 100 100
(2)abc → 0813フォルダ
<aaa.csv>
A列 B列 C列
1行 0 300 8月13日
2行 100 100
3行 100 200
4行 100 200
5行 100 200
6行 300 200
7行 300 400
8行 200 100
↓
(3)<合体.csv>
A列 B列 C列 D列 E列 F列 G列
(日付) (A1~A4計)(A5~A8計)(合体B+C)(B1~B4計)(B5~B8計)(合体E+F)
1行 8月12日 700 800 1500 600 500 1100
2行 8月13日 300 900 1200 800 900 1700
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ANo.1です。
どこでどんなエラーになりますか?
Dim fso As New FileSystemObject
で、「ユーザ定義型は定義されていません。」の場合は、参照設定でMicrosoft Scripting Runtimeの参照にチェックを入れてください。
方法は、VisualBasicの画面で、「ツール」->「参照設定」で、「参照可能なライブラリファイル」の中の「Microsoft Scripting Runtime」のチェックを入れてください。
どうしてもわからない場合は、
Dim fso As New FileSystemObject
Dim fld As Folder
の部分を
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim fld As Object
に変更してください。
「実行時エラー76:パスがみつかりません。」の場合は、パスが正しくありません。
まずこのVBAがあるブックを保存してください。
そのブックのあるフォルダの中のabcと言うフォルダが必要です。
例えば、このブックがc:\book1.xlsなら、c:\abc\0812\aaa.csvと言うファイルがある場合です。
このブックがc:\test\book1.xlsなら、c:\test\abc\0812\aaa.csvと言うファイルがある場合です。
または、「ThisWorkbook.Path & "\abc"」の部分を、「"c:\abc"」とかのabcの絶対パスに変えてください。
この時、結果書き込みの部分の「ThisWorkbook.Path & "\abc\合体.csv"」の部分も「c:"\abc\合体.csv"」とかにしてください。
No.1
- 回答日時:
こんなのではどうでしょうか?
'参照設定でMicrosoft Scripting Runtimeの参照にチェックを入れてください
Option Explicit
Sub test()
Dim fso As New FileSystemObject
Dim fld As Folder
Dim srcRows() As String
Dim srcCols() As String
Dim dstRows() As String
Dim dstCols(6) As Variant
Dim r As Integer
dstRows() = Split("", " ") 'ubound(dstRows)=-1にするための初期化
'このBookのフォルダにあるabcフォルダ以下のフォルダを調べる
For Each fld In fso.GetFolder(ThisWorkbook.Path & "\abc").SubFolders
'aaa.csv読み込み
With fso.GetFile(fld & "\aaa.csv").OpenAsTextStream
srcRows = Split(.ReadAll, vbCrLf)
.Close
End With
'日付取得
dstCols(0) = Split(srcRows(0), ",")(2)
'1-4
dstCols(1) = 0
dstCols(4) = 0
For r = 0 To 3
srcCols = Split(srcRows(r), ",")
dstCols(1) = dstCols(1) + Val(srcCols(0)) 'A1~A4計
dstCols(4) = dstCols(4) + Val(srcCols(1)) 'B1~B4計
Next
'5-8
dstCols(2) = 0
dstCols(5) = 0
For r = 4 To 7
srcCols = Split(srcRows(r), ",")
dstCols(2) = dstCols(2) + Val(srcCols(0)) 'A5~A8計
dstCols(5) = dstCols(5) + Val(srcCols(1)) 'B5~B8計
Next
'合計
dstCols(3) = dstCols(1) + dstCols(2)
dstCols(6) = dstCols(4) + dstCols(5)
'結果1行分追加
ReDim Preserve dstRows(UBound(dstRows) + 1)
dstRows(UBound(dstRows)) = Join(dstCols, ",")
Next
'結果書き込み
With fso.CreateTextFile(ThisWorkbook.Path & "\abc\合体.csv", True)
.Write Join(dstRows, vbCrLf)
.Close
End With
Set fso = Nothing
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- その他(プログラミング・Web制作) pythonのpandasのcsvの外部結合(outer_join)した際に列が想定とは異なる事象 1 2022/05/25 13:23
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) vbaマクロについて 【1.csv】をもとに【商品.csv】に有るものを【有り.csv】として名前を 1 2023/05/18 07:58
- Excel(エクセル) csvに別のExcelの文章を差し込む 2 2023/04/01 16:06
- Excel(エクセル) セルを参照して条件で値をコピーする 3 2023/02/08 17:45
- Visual Basic(VBA) vbaマクロについて 次のようなマクロを組みたいです。 自分は初心者なので全くわかりません。 詳しく 8 2023/05/18 18:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Python CSVファイルについて
-
複数エクセルファイルの合成
-
エクセルのVBAについて とある...
-
エクセル 指定範囲をCSV出力
-
FTPコマンド mgetでとまってし...
-
csv形式からbmpを作成
-
VBA でCSV集計
-
コマンドプロンプトの「%1」と...
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトのエラーに...
-
バッチでテキストファイルから...
-
VBAでワークシートを引数として...
-
バッチファイルでサーバーのフ...
-
バッチ処理でファイルの中身を...
-
バッチファイル 特定ウインドウ...
-
xcopyで特定のファイルのみをコ...
-
Thunderbirdで社内共有フォルダ...
-
ftpコマンドを実行すると「425 ...
-
binファイルを解凍したいの...
-
自分で作成した重要ファイルを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのVBAについて とある...
-
Python CSVファイルについて
-
アクセスと同フォルダのCSVファ...
-
FTPコマンド mgetでとまってし...
-
【Rコマンダー】データインポー...
-
エクセル 指定範囲をCSV出力
-
バッチ処理でcsvファイルの文字...
-
エクセルマクロ、複数のCSVファ...
-
複数のcsvファイルを統合、でも...
-
EXCEL マクロが正常に動かなく...
-
MAC フォルダ内のPDF件数とペー...
-
gnuplotで複数csvファイルから...
-
複数エクセルファイルの合成
-
シェルスクリプトで文字コード変換
-
エクセルにまとめたcsvデータを...
-
複数のCSVファイルを読み込んで...
-
Excelの帳票形式をアクセスに取...
-
excelでMac(-)⇒Win(?)文字化け...
-
csvファイルを結合するバッ...
-
csvファイルを統合する方法を教...
おすすめ情報