[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA CSVファイルを複数から処理』(Ryan)
先ほどCSVの書き出しで質問させていただいたものです。
同じデータ数を持つ複数のCSVファイル(具体的にはR,G,Bの3つ)をVBAで処理を行い、その計算結果を新しいCSVのB列,C列,D列に格納するという処理を行いたいです。
R,G,B、別々で処理を行うとB列にRのデータ、C列にGのデータ,D列にBのデータが
新しいCSVに格納されるのは確認済みです。
R,G,BのCSVデータは全て同じフォルダに入っております。
Workbooks.Openなど試してみたのですが、使い方が悪いのか上手くいかなかったため、詳しい方がおられましたらご教授願いたいです。
'※ここからループ開始?
'(4 + X_c + Y_c * 10, 200)〜Cells(4 + X_c + Y_c * 10 + 55, 200)にCSVから色々計算して、計算結果を入れる処理は省略
rng = Selection.Address rng = Cells(4 + X_c + Y_c * 10, 200).Address & ":" & Cells(4 + X_c + Y_c * 10 + 55, 200).Address 'シート名 sname = ActiveSheet.Name '新しいシートを追加し、選択範囲をコピー If fileflag = 1 Then Worksheets(sname).Range(rng).Copy Destination:=Worksheets.Add.Range("B1")
ElseIf fileflag = 2 Then Worksheets(sname).Range(rng).Copy Destination:=Worksheets.Add.Range("C1")
ElseIf fileflag = 3 Then Worksheets(sname).Range(rng).Copy Destination:=Worksheets.Add.Range("D1")
Else Worksheets(sname).Range(rng).Copy Destination:=Worksheets.Add.Range("Z1") End If
'※ここまでR,G,Bでループさせる?
'新しいブックを作成し、そこにシートを移動する ActiveSheet.Move For t = 0 To 54 Cells(1 + t, 1) = (-27 + 20 + t) * 3.1415 / 180 Next
fileflagはActiveWorkbook.NameのR.G.BのCSV名で判断しております
以上、よろしくお願いします。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
>Workbooks.Openなど試してみた
ちょっと、情報不足気味なんじゃないですか? Openメソッドがどう絡んでくるのは不明瞭です。
少なくとも、初回のファイルがどう扱われているのかが分からないと、 推測する部分が徒に膨らみます。
>Worksheets(sname).Range(rng).Copy Destination:=Worksheets.Add.Range("B1") 同一シート上に書きたいなら、毎回Addメソッドを使う訳にはいかないですよ。
ループ開始前に1枚挿入して、そのシート(WshToWrite)を覚えて置き、 毎回そのシートに書き込むことになります。
Dim WshToWrite As Worksheet
Set WshToWrite = Worksheets.Add '事前準備として、シートを一枚挿入する '省略
'※ここからループ開始
'省略
If fileflag = 1 Then Worksheets(sname).Range(rng).Copy Destination:=WshToWrite.Range("B1")
ElseIf fileflag = 2 Then Worksheets(sname).Range(rng).Copy Destination:=WshToWrite.Range("C1") ’省略 End If
'※ここまでR,G,Bでループさせる
'省略
(半平太) 2017/12/06(水) 09:42
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.