こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBAで同じフォルダのCSVを同じシートに読み込みたいです。

VBAで同じフォルダのCSVを同じシートに読み込みたいです。
VBAで同じシートに開くのは以下でできます。
Sub UCsvGet2()
cnstr = _
"text;C:\Documents and Settings\kazu\My Documents\test2.txt"
With ActiveSheet.QueryTables.Add(Connection:=cnstr, _
Destination:=Range("A1"))
.TextFileCommaDelimiter = True
.TextFilePlatform = 932
.Refresh
End With
End Sub
VBAでファイルを選択してOPENすることは以下でできます。
 Sub GetPathName()
ffname = ActiveWorkbook.FullName ' ブックのフル名称を得る
pos = InStrRev(ffname, "\") ' うしろから \ を探す
curpath = Mid(ffname, 1, pos) ' 先頭から \ の位置までを取り出す
MsgBox pos & " " & curpath
Workbooks.OpenText Filename:= curpath & "test2.txt" , _
DataType:=xlDelimited, Comma:=True
End Sub

これを同時に行いたいのですが、どうすればよいでしょうか?
お知恵をお貸しください。

投稿日時 - 2010-05-06 11:17:15

QNo.5875211

すぐに回答ほしいです

質問者が選んだベストアンサー

#2 DOUGLAS_ です。
>自動でファイル見つけて読み込む形にしたい
>CSVを開くことなく取り込みがしたい
ということでしたら、別の Q&A で、そのままのご質問がありますので、ご参考にどうぞ。。。

●VBAでCSVファイルを読み込もうとしていますが
http://okwave.jp/qa/q5863691.html

 なお、ご質問者さんは
Set fso = CreateObject("Scripting.FileSystemObject")
Set fileList = fso.GetFolder(targetFolder).Files
For Each file In fileList
として、指定 フォルダ 内の CSVファイル を拾おうとしていらっしゃいますが、[Dir 関数] を用いる方が簡単かと存じます。

投稿日時 - 2010-05-07 23:06:41

お礼

できました?ありがとうございます

投稿日時 - 2010-05-08 09:40:51

このQ&Aは役に立ちましたか?

16人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

もう少し、具体的に書いてあると変な推測をしなくてすむのですが……

自ブックと同じフォルダにあるTest2.txtをアクティブなシートに読み込んで見ました。これでいいのかなぁ?

Sub Sample()
 With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & ThisWorkbook.Path & "\test2.txt", Destination:=Range("A1"))
  .TextFileCommaDelimiter = True
  .TextFilePlatform = 932
  .Refresh
Sub Sample()

投稿日時 - 2010-05-06 18:31:32

補足

言葉足らずですみません。やりたいことは、前解答に細くしました。

投稿日時 - 2010-05-07 09:22:12

ANo.2

 ご質問の タイトル
>VBAで同じフォルダのCSVを同じシートに読み込みたいです。
からすると、
>VBAで同じシートに開く
>VBAでファイルを選択してOPENする
>これを同時に行いたい
というのと内容が異なるような気がしますが。。。

 ひょっとしてこういうことですか?

Sub UCsvGet2()
 ffname = ActiveWorkbook.FullName ' ブックのフル名称を得る
 pos = InStrRev(ffname, "\") ' うしろから \ を探す
 curpath = Mid(ffname, 1, pos) ' 先頭から \ の位置までを取り出す
 MsgBox pos & " " & curpath
 cnstr = _
 "text;" & curpath & "test2.txt"
 With ActiveSheet.QueryTables.Add(Connection:=cnstr, _
  Destination:=Range("A1"))
  .TextFileCommaDelimiter = True
  .TextFilePlatform = 932
  .Refresh
 End With
 Workbooks.OpenText Filename:=curpath & "test2.txt", _
 DataType:=xlDelimited, Comma:=True
End Sub

投稿日時 - 2010-05-06 14:57:51

補足

言葉足らずですみません。やりたいことは、test1.xlsmにtest2.csvを取り込みたいということです。できれば、自動でファイル見つけて読み込む形にしたいのですが、取り込むファイルを選択する形でもかまいません。要するに、CSVを開くことなく取り込みがしたいです。

投稿日時 - 2010-05-07 09:17:47

ANo.1

>これを同時に行いたい

ごく簡単に,マクロを一つにすればつるつるっと一続きに出来ます。
あまり手を入れて失敗するより,既に出来ている事でやっつけた方が遙かに安全です。

Sub UCsvGet2()
 cnstr = _
 "text;C:\Documents and Settings\kazu\My Documents\test2.txt"
 With ActiveSheet.QueryTables.Add(Connection:=cnstr, _
  Destination:=Range("A1"))
  .TextFileCommaDelimiter = True
  .TextFilePlatform = 932
  .Refresh
 End With


 ffname = ActiveWorkbook.FullName ' ブックのフル名称を得る
 pos = InStrRev(ffname, "\") ' うしろから \ を探す
 curpath = Mid(ffname, 1, pos) ' 先頭から \ の位置までを取り出す
 MsgBox pos & " " & curpath
 Workbooks.OpenText Filename:= curpath & "test2.txt" , _
  DataType:=xlDelimited, Comma:=True
End Sub

投稿日時 - 2010-05-06 11:23:11

あなたにオススメの質問