プロが教えるわが家の防犯対策術!

すみませんが、教えてください。

特定のフォルダ内に入っているcsvのA1列目のみ抽出して別ファイルにしたく、検索したところ
同じように困っていた方がいたようで、参考にさせていただいたのですが、

以下を実行しても
インデックスが有効範囲にありませんと出ます。

各csvファイルのシート名は
1000近くあるファイル全て違い、別々の名前(コード00-000とか)になっています。
(エクセルで開いたとき)

お手数ですが、教えていただきたくお願いいたします。

参考にしたマクロです。

Sub macro1()
Dim myPath As String
Dim myFile As String

myPath = "ファイルの場所\"
myFile = Dir(myPath & "*.xls")

Do Until myFile = ""
Workbooks.Open myPath & myFile
With Workbooks("集約.xls").Worksheets("Sheet1").Range("A65536").End(xlUp)
.Offset(1, 0).Value = myFile
.Offset(1, 1).Value = Workbooks(myFile).Worksheets("概要").Range("C3").Value
End With
Workbooks(myFile).Close savechanges:=False
myFile = Dir()
Loop
End Sub

宜しくお願いいたします。

A 回答 (1件)

タイトルと質問文と記述されているマクロとで微妙にズレがあるので、


やろうとされている内容の条件が今ひとつはっきりわからないのですが。
仮に、
・あるフォルダ内に入っている複数のcsvファイルのA1セルの内容のみを抽出して別ファイルにリスト作成したい。
・リストを作成する別ファイルは「集約」.xlsで、リストの作成先シート名は「概要」
(マクロはこのファイルに記述)
・各csvファイルのシート名はファイルごとに異なる
として、少し直してみました。

Sub macro1()
Dim myPath As String
Dim myFile As String

myPath = "ファイルの場所\"
myFile = Dir(myPath & "*.csv")

Do Until myFile = ""
Workbooks.Open myPath & myFile
With Workbooks("集約.xls").Worksheets("概要").Range("A65536").End(xlUp)
.Offset(1, 0).Value = myFile
mys = Workbooks(myFile).Sheets(1).Name
.Offset(1, 1).Value = Workbooks(myFile).Worksheets(mys).Range("C3").Value
End With
Workbooks(myFile).Close savechanges:=False
myFile = Dir()
Loop
End Sub
    • good
    • 0

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