あるソフトを用いて指定行数に分割した15のcsvファイルをそれぞれシート別にしてエクセルファイルに取り込みたいと考えています。

マクロを用いてこのような作業を行いたいのですが何方かご教授いただけませんでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

素人がの私が自分のスキルupのために考えて作って


みたものですので完璧では無いかもしれませんが記載致します。
===動作例====================================================
「ファイルを開く」ダイアログが開いて、任意のcsvファイルを
マウス等で複数選択し、「開く」ボタンを押します。ダイアログ
上のファイル(下記のは例としてのファイル名です)の並びが
No01.csv
No02.csv
No03.csv
No04.csv
と表示されているファイル名を上からマウスで選択を行った場合、
完成される合成csvファイルのシートの並びは
No01 No02 No03 No04
となり、下からマウスで複数選択した場合は完成される合成csv
ファイルのシートの並びは
No04 No03 No02 No01
となります。いずれも最後に残るファイルのファイル名は最初に
マウスで選択したものです。以上です。
============================================================
Sub Macro1()

'---ファイル名を取得するためのメソッド---------------------
F_name = Application.GetOpenFilename _
(Filefilter:="csvファイル(*.csv), *.csv", MultiSelect:=True)
'-------------------------------------------------------
F_no = UBound(F_name) '配列の要素数の確認
Workbooks.Open Filename:=F_name(1) '1つめ開く
Std_F = ActiveWorkbook.Name '基準を最初に開いたファイルに

For i = 2 To F_no '2つめから配列の要素数分まわす
Workbooks.Open Filename:=F_name(i) 'ファイル開く
Move_F = ActiveSheet.Name '開いたファイルのシート名記録
'↓基準ファイルに後から開いたファイルを移動↓
Sheets(Move_F).Move After:=Workbooks(Std_F).Sheets(i - 1)
Next i

End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。
シート順は逆になりましたが、ひとつに統合することができました。

お礼日時:2009/06/08 10:29

規約違反の丸投げコード作成依頼型質問なのでコードは書かない


(1)目的のCSVファイルの捕らえ方。質問にどういう状況k書いてない。最悪ファイル名をシートにでも列挙入力。
あるフォルダのファイル全部とかあるフォルダのCSVファイル全てなど
が多いかとは思うが。それならVBSriptやDir関数をGoogoleで照会のこと。
(2)CSVファイルの読みこみ方
  Open、レコードの最後を捉える方法、読んだ変数に入れる
  そのEOFになるまで繰り返し。
(3)Split関数でカンマを区切りとして、項目データを配列に入れる。
(4)シートのk行の各列にSplit配列から順次データを代入
  列を対象とした繰り返し。For j=1 to ○・・Next j
  k=K+1 次は下の行に書き込む
(5)終わればCSVファイルをクローズ
(6)次のファイルに対し、(1)-(5)を繰り返し。
類似コードはwebなどに沢山ある。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2009/06/09 10:15

一例です。


その15件のCSVファイルが入っているフォルダーに以下のマクロを書いたエクセルBOOKを保存してください。(パス取得のため必ず「保存」してください。)
フォルダー内の全てのCSVファイルからデータをエクセルに1ファイルを1シートにして転記していきます。

Sub test01()
Dim MyFile As String, MyPath As String '変数宣言
Dim i As Long
Dim wb As Workbook
MyPath = ThisWorkbook.Path & "\" '自分のパスを取得
MyFile = Dir(MyPath & "*.csv", vbNormal) 'パス内のcsvファイル
Application.ScreenUpdating = False '画面更新停止
Application.Calculation = xlCalculationManual '自動計算停止
Do Until MyFile = "" '対象ファイルがなくなるまで
Set wb = Workbooks.Open(MyPath & "\" & MyFile) '選択したファイルを開く
Set ns = ThisWorkbook.Sheets.Add 'このBOOKにシートを追加
wb.Sheets(1).Cells.Copy ns.Cells(1, 1) '新規シートにコピペ
i = i + 1 'カウント
wb.Close (False) '選択したファイルを閉じる
MyFile = Dir '次のファイルを検索
Loop '繰り返し
Application.Calculation = xlCalculationAutomatic '自動計算停止解除
Application.ScreenUpdating = True '画面更新停止解除
Set wb = Nothing
Set ns = Nothing
MsgBox i & "件のCSVファイルから転記しました。", vbInformation, " " & Environ("UserName") & "さん (o^-')v "
End Sub
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング