こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセル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 ○○ ○○ ○○ ○○
・・・
・・

のようになれば大変嬉しいです。

お力をお貸しください
よろしくお願いいたします。

投稿日時 - 2009-04-21 00:17:39

QNo.4896295

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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 フォルダ 拡張子 選択
などで調べまくること

投稿日時 - 2009-04-21 10:39:05

ANo.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

投稿日時 - 2009-04-21 09:53:53

ANo.1

まず、
・新規Bookを作成
・1つのCSVファイル開く
・計算用ブックに貼付ける
・計算結果を新規Bookに貼付ける
などをマクロの自動記録でやってみるとか。

そうでなければ、ある範囲のセルをどのセルに貼付け、計算結果のセル範囲を
どのような順序で転記していくのか不明な気がしますけど。

例:
>CSV読み込みセル8箇所:B2、D2、F2~P2
B2、D2、F2~P2はセル数13個ですし。
(5個の行き先又は除外条件が不明)

投稿日時 - 2009-04-21 06:57:47

あなたにオススメの質問