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

解決済みの質問

VBA フォルダ内にあるブックをすべて開く

いつもお世話になります。
デスクトップ上にフォルダ「新しいフォルダ」があり、その中に6つエクセルブックがあります。
Book1.xls Book2.xls Book3.xls Book4.xls Book5.xls と test.xls です。

test.xlsに、Book1~Book5を開く というマクロを作り実行したところ、実行時エラー1004
『Book1.xlsがみつかりません』と表示されます。

Sub test()
Dim buf As String, i As Long

buf = Dir("C:\Documents and Settings\tsasaki\デスクトップ\新しいフォルダ\*.xls")

Do While buf <> ""
i = i + 1
Workbooks.Open Filename:=buf
'Cells(i, 1) = buf
buf = Dir()
Loop
End Sub

どのが間違っているか教えてもらえますか。

投稿日時 - 2012-11-29 14:15:15

QNo.7821412

暇なときに回答ください

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

Const DefaultPath = "D:\tmp\tmp\"
ここは自分の環境に合わせる。

Option Explicit
Sub DirSearch()
Const DefaultPath = "D:\tmp\tmp\"
Const Selector = "*.xls*"
Dim xSheet As Worksheet
Dim FilePath As String
Dim buf As String, i As Long
Application.ScreenUpdating = False
Set xSheet = ActiveSheet
buf = Dir(DefaultPath & Selector)
Do While buf <> ""
i = i + 1
'Workbooks.Open Filename:=buf
With Workbooks.Open(Filename:=(DefaultPath & buf))
xSheet.Cells(i, "A").Value = buf
xSheet.Cells(i, "B").Value = Cells(1, "A").Value
Application.CutCopyMode = False
.Close False
End With
buf = Dir()
Loop
xSheet.Columns("A:B").AutoFit
Application.ScreenUpdating = True
End Sub

投稿日時 - 2012-11-29 17:53:50

お礼

お礼が遅くなりごめんなさい。
ご回答頂きありがとうございます。
とても勉強になりました。Dir関数はブック名を引いてくるので見つからないのですね。
もっと勉強しなきゃです。ありがとうございました。

投稿日時 - 2012-12-19 13:07:45

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

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

回答(3)

ANo.2

自ブックが「C:\Documents and Settings\tsasaki\デスクトップ\新しいフォルダ」に居ないのでは?

buf = Dir("C:\Documents and Settings\tsasaki\デスクトップ\新しいフォルダ\*.xls")

buf = Dir(ThisWorkbook.Path & "\*.xls")

こう変更するとどうなります?

投稿日時 - 2012-11-29 16:45:51

お礼

お礼が遅くなりごめんなさい。
自ブックtest.xlsも同じフォルダ内にあります。
変更してみましたがダメでした。

投稿日時 - 2012-12-19 12:48:56

ANo.1

「\デスクトップ\新しいフォルダ」

「\desktop\新しいフォルダー」
にするとか。

それから、質問のコードを実行しても、
『Book1.xlsがみつかりません』
なんて表示しないと思うが。

投稿日時 - 2012-11-29 14:59:26

お礼

okormazdさん
早速お返事いただきありがとうございます。

フォルダ名が「新しいフォルダ」ですので、「新しいフォルダー」にしてもダメでした。

投稿日時 - 2012-11-29 15:34:30

あなたにオススメの質問