dポイントプレゼントキャンペーン実施中!

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

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

A 回答 (4件)

#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 関数] を用いる方が簡単かと存じます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/05/08 09:40

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



自ブックと同じフォルダにある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/07 09:22
    • good
    • 0

 ご質問の タイトル


>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

この回答への補足

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

補足日時:2010/05/07 09:17
    • good
    • 0

>これを同時に行いたい



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

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
    • good
    • 0

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