[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『外部csv取り込み』(まさまさ)
こんにちは
お知恵をお貸し下さい。
外部(特定のフォルダー)にありcsvファイルをエクセルに取り込みたいと思っています。
その際にcsvのファイル名、シート名がランダムに変わるのでマクロ上で記載して指定する形ではなく
エクセルファイルと一緒にあるcsvファイルで開いた時にアクティブになるシートの内容全部を取り込む。
という事は可能でしょうか?
よろしくお願いします。
エクセル2003 windowsXPです
つまり ・エクセルブックを開く ・そのときにアクティブになっているシート(本当はシート名が指定できたらいいんだけど)の どこかに(どこにあるかは説明がほしい)aaa.csv とか bbb.csv と入っている。 (あるいは aaa とか bbb ?) ・そのcsvファイルは、開いたエクセルブックと同じフォルダに入っている。 ・それらを、開いたブックの追加シートとして取り込む。
追記) あぁ、そうじゃなく、単純にエクセルブックと同じフォルダのcsvファイルをすべて
エクセルブックの追加シートとして取り込みたいということ?
あるいは、エクセルブックのあるシートに、全部まとめたい(つまり結果は1シート)?
こううこと?
(ぶらっと)
↑どちらかわからないし、どちらでもないかもしれないけど。 とりあえず、開いたマクロブックと同じフォルダにあるcsvファイルをすべて取り込む。 シート別パターンと全csvファイル->1つのシートのパターン。 csvファイルのシートへの取り込みは、もっともっと、高度(?)な技があるけど、わかりやすさ優先で ブックとして開いて取り込む方法にした。
Sub Sample1()
'csvファイル毎に独立したシートとして取り込み
Dim myPath As String
Dim fName As String
Dim csv As Workbook
Application.ScreenUpdating = False
myPath = ThisWorkbook.Path & "\"
fName = Dir(myPath & "*.csv")
Do While Len(fName) > 0
Set csv = Workbooks.Open(myPath & fName)
csv.Sheets(1).Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
csv.Close False
fName = Dir()
Loop
Set csv = Nothing
Application.ScreenUpdating = True
MsgBox "取り込み完了"
End Sub
Sub Sample2()
'1枚のシートに全csvファイルを取り込み
Dim myPath As String
Dim fName As String
Dim csv As Workbook
Dim sh As Worksheet
Dim z As Long
Dim lCell As Range
Application.ScreenUpdating = False
Set sh = ThisWorkbook.Sheets("Sheet1") '取り込みシート名 実際のものに
sh.Cells.ClearContents
z = 1 '取り込み先の行番号
myPath = ThisWorkbook.Path & "\"
fName = Dir(myPath & "*.csv")
Do While Len(fName) > 0
Set csv = Workbooks.Open(myPath & fName)
With csv.Sheets(1)
With .UsedRange
Set lCell = .Cells(.Count)
End With
sh.Cells(z, "A").Resize(lCell.Row, lCell.Column).Value = .Range("A1", lCell).Value
End With
z = z + lCell.Row
csv.Close False
fName = Dir()
Loop
Set sh = Nothing
Set lCell = Nothing
Set csv = Nothing
Application.ScreenUpdating = True
MsgBox "取り込み完了"
End Sub
(ぶらっと)
ぶらっとさん、少ない情報から読み解いて頂きありがとうございます。
sample2で思った通りの処理が出来ました。
本当にありがとうございます。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.