• 締切済み

エクセルVBAで複数CSVを抽出、ブックへの出力

エクセルVBAで複数のCSVファイルからファイル名と 任意のセル8箇所を自作した計算シートに抽出。 別ブックにCSVファイル名 計算結果4種類を出力する。 というvbaを作りたいのですがどうすればよいでしょうか? CSVファイルが1700ほどあり、大変困っています。 申し訳ありませんがご教授願います。 ーーーーーーーーーーーーーーーーーーーーーーーーーーー 詳細 CSV読み込みセル8箇所:B2、D2、F2~P2 自作計算シートへの貼り付け箇所:G3~G10 計算結果セル抽出箇所:C8~F4 出力の理想系は CSVファイル名、計算結果1、2、3、 4の順で file01 ○○ ○○ ○○ ○○ file02 ○○ ○○ ○○ ○○ ・・・ ・・ のようになれば大変嬉しいです。 お力をお貸しください よろしくお願いいたします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

したいことだけ、それも不完全に書いているだけで、コードを回答者に書いてください、と言わんばかりの質問。丸投げは禁止。 ーー 必要な(小分けした)処理単位に、文章でまず分割列挙してみること。(この分類するにもコンピュタ処理経験は要るが、できる範囲からやってみないと) >1700ほどあり これを捉えるのは、どういう特徴で捉えるのか。1つのフォルダなどにまとまって入っていて、対象外のCSVファイルが混じっていないとか。(質問にこれを書いてないのは、経験不足) そのフォルダの中にエクセルファイルが混じっている程度なら、拡張子xlsのファイルを飛ばしCSVだけ選ぶのは簡単。 だいたい1700個(1ファイルの行でなく)ものCSVを作ることそのものが、あとの処理のことを考えてない。いったん、1700CSV-->1CSVにまとめて、それからまとまった1ファイルで考える手もある。まさか1700CSVの列構成(フォ-マット)が別々ってこと無いでしょうね。 (1)1フォルダに有るCSVファイルを1つつ、かつ、もらさず2度読みせず読む方法(コード)For Eachとか繰り返しで処理になろう。 Googleで照会すれば、この例がたくさん例が出るのだ。知らないのかな。 もし他種類のファイルがあれば処理を飛ばす方法 (2)読んだCSVのファイル名を捉える方法ーー>そしてエクセル・シートに書き出す方法。 (3)1つ(レコード)のCSVファイルを読む方法 質問者はエクセルにCSVファイルを1つ読み込んで8項目を判別すると考えているようだが、CSVファイルを配列変数に読み込み そこで8項目を選んだほうが良い。項目に分割するにはSplit関数という便利な関数がある。 (3)読んだとき列(フィールド・項目)データに分割して捉える方法(そうしないと8箇所が判別できない)前述のSplit関数で配列に収納するとインデックス番号で指定。 (4)列を判別ーー>必要なデータ項目を捉える。-->エクセルのシートに書き出す方法 8項目はどう捉えるか質問に書いてない。質問がすきだらけ。 >任意のセル8箇所、なんて、任意とはおかしいのでは。必ずランダムにしろルールが有るはず。軽々しく「任意」を使わないこと。 >A任意のセル8箇所を自作した計算シートに抽出。 B別ブックにCSVファイル名 4種類を出力する (抽出とはどういう条件で?計算結果とはどういう計算?) は2処理有るようだが、質問者のレベルではAとBは別けて独立させてコードを考えたら(実行は2回)どうかな。 現在の質問者には、まだそこまで行ってないと思う。 WEBで上記を1つづつ調べるか、改めて細分して具体的に絞って 別質問にしたらどうです。 ーーー Googleで照会をお勧め用語を挙げておく VBA フォルダ ファイル 捉える VBA Split関数 CSVファイル 読み込み VBA http://www.k1simplify.com/vba/tipsleaf/leaf291.htmlほか VBA フォルダ 拡張子 選択 などで調べまくること

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

サンプルコードを書いてみようと思いましたが、情報不足や理解できない点が多すぎて回答できません。 > CSVファイルが1700 対象はすべて一つのフォルダーにはいっているのですか? また、その場合、対象以外のCSVファイルが混在したりしませんか? > CSV読み込みセル8箇所:B2、D2、F2~P2 セルが13個ですが?Σ( ̄ロ ̄lll) > 自作計算シートへの貼り付け箇所:G3~G10 縦に変換しても8個しかはいらないので、上記F2~P2は、~K2までの誤りですか? また、CSVファイルが複数なら、常にG3~G10に貼り付けたら上書きされてしまいますよね? どうするのでしょう? > 計算結果セル抽出箇所:C8~F4 他に説明がないので意味が不明です。ヽ(´▽`)/ それに、C8~F4?普通はC4からF8と書きませんか? > 出力の理想系は > CSVファイル名、計算結果1、2、3、 4の順で > file01 ○○ ○○ ○○ ○○ これが、計算結果セル抽出箇所の例だとしたら、ひょっとしてC8~F8、あるいはC4~F4の誤り? 「質問」の理想系は、必要事項を洩れなく正確に書いていただきたいのですが・・・・ o(^-^)o

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

まず、 ・新規Bookを作成 ・1つのCSVファイル開く ・計算用ブックに貼付ける ・計算結果を新規Bookに貼付ける などをマクロの自動記録でやってみるとか。 そうでなければ、ある範囲のセルをどのセルに貼付け、計算結果のセル範囲を どのような順序で転記していくのか不明な気がしますけど。 例: >CSV読み込みセル8箇所:B2、D2、F2~P2 B2、D2、F2~P2はセル数13個ですし。 (5個の行き先又は除外条件が不明)

関連するQ&A