[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数のcsvファイルを一つのシートにまとめて読み込ませる。』(カスム)
教えてください。
使用しているのはexcel2010。
題名の通り、複数のcsvファイルを一つのシートに連続して読み込ませたいのです。
ネットで検索して、以下のようなマクロを見つけて使わせて頂いたのですが、もう一つ指定したいことがあります。
読み込ませるデータの中には001のような数値が複数あるのですが、そのデータが入っている行をあらかじめ文字列として読み込ませる方法はありますでしょうか。
列はOPQ列、AC,AB,ADの6列でこれは固定です。
元のデータ形式はカンマやタブなどの区切り文字によってフィールドごとに区切られたデータ。区切り文字はカンマになります。
どうぞよろしくお願いいたします。
Sub CSVまとめsample()
Dim MyObj As Object
Dim MyFol As String
Dim MyFnm As String
Dim MyStr As String
Dim i As Long
Dim n As Long
Dim n1 As Long
'フォルダを選択する
Set MyObj = CreateObject("Shell.Application") _
.BrowseForFolder(0, "SelectFolder", 0)
'選択なければ処理を抜ける
If MyObj Is Nothing Then Exit Sub
MyFol = MyObj.self.Path & "\"
MsgBox MyFol & "を処理します。"
Set MyObj = Nothing
Application.ScreenUpdating = False
'ThisWorkbookにシートを追加して処理
With Sheets.Add
'Dir関数を使って指定フォルダ内csvファイルを順次処理
MyFnm = Dir(MyFol & "*.csv")
Do Until Len(MyFnm) = 0&
i = i + 1
'データエリアを取得してセット先を変更
n = IIf(n = 0, 1, n + n1)
'外部データ取り込みを利用
With .QueryTables.Add(Connection:="TEXT;" & MyFol & MyFnm, _
Destination:=.Range("B" & n))
.AdjustColumnWidth = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileCommaDelimiter = True
.Refresh False
n1 = .ResultRange.Rows.Count
.Parent.Names(.Name).Delete
.Delete
End With
'ファイル名をA列にセット
.Range("A" & n).Resize(n1).Value = MyFnm
'次のファイルへ
MyFnm = Dir()
Loop
End With
If i > 0 Then
MyStr = i & "個のファイルを処理しました。"
Else
'検索結果が0なら
MyStr = "検索条件を満たすファイルはありません。"
End If
Application.ScreenUpdating = True
MsgBox MyStr
End Sub
< 使用 Excel:Excel2010、使用 OS:Windows7 >
.TextFileColumnDataTypes = Array(〜)
で〜部分で各列のデータ型を指定してみては?
(ウッシ) 2014/12/08(月) 07:56
横から失礼します
> 使用しているのはexcel2010。
それだと、 > .TextFilePlatform = xlWindows のようにはならないと思います。
また、 > .TextFileCommaDelimiter = True は 区切り記号の指定のところで、カンマに☑を入れる動作になりますが、 それ以外の Tabや スペース を区切りとしない指示もマクロで記録されるように、明示的にFalseを 指定しておいた方がよいかと思います。
Excel2010 で どれか一つCSVファイルをテキストファイルウィザードからインポートする 操作のマクロ記録をとってみるとよいと思います。 そのとき、 > 001のような数値 の前ゼロを消さないためには (すでにコメントがありますが)ウィザードでその列の型を「文字列」に 指定すると、もとのテキストのままインポートできます。
> .Parent.Names(.Name).Delete > .Delete
も今のバージョンなら
.Delete
だけでOKですね . (kanabun) 2014/12/08(月) 09:13
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.