[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『外部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.