エクセル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
このQ&Aは役に立ちましたか?
1人が「このQ&Aが役に立った」と投票しています
回答(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
サンプルコードを書いてみようと思いましたが、情報不足や理解できない点が多すぎて回答できません。
> 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