• ベストアンサー

CSVファイルの集計

VB初心者の為、簡単なことかもしれませんが教えて下さい。 複数あるCSVファイルの内容を集計したいと思っています。 いずれのファイルにもコードと数量が含まれているのですが、集計したいのはそのコード毎の数量計です。 EXCELやACCESS等を使えば簡単だと思うのですが、そういった他アプリやDBなどを使わずにVBとCSVファイルのみで処理したいと考えています。 できれば処理時間も短いようなやり方があれば教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • Kuppycat
  • ベストアンサー率50% (109/216)
回答No.1

VB6.0と仮定したサンプル。 ------------------------------ Dim con As String Dim sql As String Dim rs As Object con = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\temp;Extended Properties=""text;HDR=No;FMT=Delimited;"";" sql = "Select F1, sum(F2) from csvtest.csv group by F1" Set rs = CreateObject("ADODB.Recordset") rs.Open strSQL, con, 0 '0=adOpenForwardOnly Do Until rs.EOF MsgBox rs(0) & ":" & rs(1) rs.MoveNext Loop rs.Close Set rs = Nothing ------------------------------ Data Source にCSVが置いてあるフォルダ名、テーブル名にCSVの名前を指定してください。 CSVは1行目からデータが入っているものとしてます。

zhen-yu
質問者

お礼

教えていただいたコードでサンプルを作ってみたのですが、うまくいきそうです。 あとはこれを応用して作りこんでいきたいと思っています。 ありがとうございました。

関連するQ&A

  • CSVファイルの集計に関して

    教えて下さい。 有休ファイル、特休ファイル、直行直帰ファイル等の複数のCSVファイルに、勤怠の情報が それぞれ入力されており、有休、特休等の申請された情報が個人毎、日付順に格納されています。 それらのファイルは、あくまでも申請内容毎となっている為、1人の社員の1ヶ月の申請を 通して確認したい時には、かなり苦労してしまいます。 そこで、ACCESSかEXCELでVBAで、全てのファイルを読み込み、個人毎の申請一覧に並び替えたい と考えています。 ACCESSでデータベースに読み込んでから処理するのが良いのか?、EXCELのVBAでやってしまう のが良いのか?どのような形が望ましいでしょうか? 良い方法をアドバイス願います。

  • CSVファイルの串刺し集計

    同書式で文字と数値が混在するCSVファイルで10年分(約3600本)のファイルがあります。 ファイル名は20070101とか20080925の様になっています。 そのファイルの数値の部分を任意の期間で集計するために1ファイルづつ EXCELのマクロで読み込んでは加算させているのですが、期間が長いと非常に時間がかかります。 すばやく集計できる方法はありませんか?(EXCELのVBAとVB6は中の下ぐらいは理解できます。)

  • CSV形式のファイル名をCSVの先頭に入れる方法

    EXCEL CSV形式のファイル名をCSVファイルの先頭に入れるたいのですが,EXCELのマクロやBVなどで簡単にできるよい方法はないでしょうか。 例えば, ファイル名:  123_001.csv 123_001.csvの内容:  氏名,年齢  山田,25歳    ↓ の123_001.csvを  コード,氏名,年齢  123_001,山田太郎,25歳 というデータにしたいのです。 できれば,フォルダ内に保存されているCSVファイルを一括で処理したいのですが...。 例) 123_001.csvの内容:  氏名,年齢  山田,25歳 123_002.csvの内容:  氏名,年齢  吉田,30歳 123_003.csvの内容:  氏名,年齢  鈴木,50歳    ↓ 123_001.csvの内容:  コード,氏名,年齢  123_001,山田,25歳 123_002.csvの内容:  コード,氏名,年齢  123_002,吉田,30歳 123_003.csvの内容:  コード,氏名,年齢  123_003鈴木,50歳 よろしくお願いします。

  • CSVファイルの取り込み

    みなさんはじめまして VB初心者です。 個人+仕事で色んなデータをエクセルに納めています。 そのデータ(CSV)をオラクルのデータベースに収めようと思っています。 その為データをオラクルに取り込むプログラムを作ろうと思っていますが、 その前段階として、CSVファイルを取り込みたいのですが、買った入門者 用の本にはそんな事がかかれていなくて、どのように取り込めばいいのかが わかりません。大きな本屋で、それらしいものを探していましたが、見当た らなかったです。(というよりわからなかったと言うのが正解です) どのようにしてCSVファイルを取り込めばいいのでしょうか?

  • CSVファイルがうまく反映されません

    CSVファイルの使い方について初心者です。 EXCEL2010を使って株式銘柄コードを登録保存した上で、CSVファイルに変換しました。 このCSVファイルを株取引ソフトにインポートしましたが、コード番号が反映されません。 多分、コード番号が文字情報になっていると想定します。 EXCELをいろいろいじってみましたが、うまくいきません。 誰か対処方法を教えてください。よろしくお願いします。

  • VB6.0 で CSVファイルをEXCELで起動

    VB初心者です。 質問内容なのですが、 VBで「ドライブ/ディレクトリ/ファイルリストボックス」を用いて、ファイルボックスから表示されたファイルをクリックしてCSVファイルをEXCELで起動したいプログラムを作成したいのですが、 CSVファイルをクリックしたときにEXCELで起動する部分のプログラムがわかりません。 言葉足らずの部分が多々あるかと思いますが、手が空いたときにでも、御教授を宜しくお願い致します。

  • エクセルVBAでCSVを読み込んで別ファイルにまとめたいです。

    エクセルVBA初心者の者です。 マクロの記録でできたコードをいじって、 なんとか動くものができるレベルです。 Aというフォルダに20~40行程度の内容のCSVファイルが 数百個あります。開けてみないと何行あるのかわかりません。 そのAフォルダのCSVの内容をエクセルで開いて、別のエクセルファイルの一枚のシートにまとめたいのです。 最初にCSVファイル名を一枚のシートのA列に書き出すところ まではやれたのですが、それを順番に読み込んでコピペの 流れができません。 CSVファイル名読み込み 読み込んだファイル1つめCSV開く CSVの20~40行をコピー 別のエクセルファイルのシートに貼り付け 1つめCSV閉じる ↓ 読み込んだファイル2つめCSV開く 繰り返し こういうやり方じゃない方がいいのかもわかりません。 もしかして考え方も違うのでしょうか? サンプルコード教えていただけるとありがたいです。 よろしくお願いします。

  • MDBファイルをCSV出力したい

    こんばんは。 環境: OS:WINDOWS2000 VB6.0 sp5 アクセス2000 VBからアクセスのMDBデータをCSV形式で出力させようとしています。  mdbファイルが実行中にVBのexeを起動してcsvファイルを取得したいのですが、いい方法が分かりません。 閉じているMDBファイルのデータをCSVで出力することは可能です。  MDBファイルが開いているとexeを実行した時に「実行時エラー7866 データベースが開いています」というようなメッセージが出て処理ができません。 なにかいい方法はないでしょうか よろしくお願いいたします。

  • VBで出力したCSVファイルの文字化けについて。

    VBで複数のCSVファイルから必要なデータのみを 新たなCSVファイルに出力するアプリケーションを作成しています。 処理自体は出力ファイルの作成まできちんとできるのですが、 エクセルで開くと文字化けが起きてしまいます。 文字化けが起きるのは漢字と片仮名(全角、半角両方)です。 ちなみにNotepadで開くと文字化けは起きていませんでした。 また、エクセルのほかにwordpadで開いても文字化けが起きていました。 入力用のCSVファイルの文字コードは分かっていません。 ファイルの読み込みはGetEncoding("Shift_JIS")で読み込んでいます。 文字化けに関する質問は他にも多数あり重複しているかもしれませんが 宜しくお願いします。

  • エクセルファイル(book)のシートの内容をCSVファイルにおとしたい

    こんにちは。 VB初心者です。 実はVBではなく、Excel VBAで行なっているのですが。 ここに質問していいかもよく分かってないのですが。 プログラムの処理としては、あるBookのシートの内容を 別のCSVファイルとして生成したいのです。マクロを組んだのですが、一つ問題があって困っています。 問題: 生成したCSVファイルが一度Window上に表示されて (それはいいのですが、あとで閉じますから) 以下の確認メッセージがでてしまいます。 「outFile.csvはExcel97のファイル形式では、ありません。変更を保存しますか?」 要はプログラムがここで、一旦ユーザアクションを要求してしまうのです。 アクションなしに普通に終了させたいのですが。 マクロではなくVBだったらこんなことはならないのでしょうか? 初心なのでよく分かりません。 もしくはもっとほかの簡単なコードできるのでしょうか。 以下にコードを記述します。 Sub OutFile() Dim myWBpath As String myWBpath = ActiveWorkbook.Path Workbooks.Open FileName:=myWBpath & "\testData1.xls" Sheets("sheet1").Select ActiveWorkbook.SaveAs FileName:="C:\outFile.csv", _ FileFormat:=xlCSV, CreateBackup:=False ActiveWorkbook.Close End Sub

専門家に質問してみよう