重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

はじめまして、こんにちは。
VBAを最近はじめたばかりの者です。質問が初歩的なもので申し訳ないのですが是非教えてください。

以下を使って、複数ブックの○○というシートから指定セルの内容を抜き出したいと思っています。
ところが、ブックによっては○○というシートが存在しない場合があり、その場合には「インデックスが有効でない」というエラーで動作が止まってしまいます。

ブック内に○○というシートがある場合にのみ動作させるようにするにはどのようにすれば良いのでしょうか。
よろしくお願いします。


Dim wb As Workbook, myRow As Long
Dim e As Integer

myRow = ThisWorkbook.Worksheets(1).Rows.Count

With Application.FileSearch
.NewSearch
.LookIn = ThisWorkbook.Path
.SearchSubFolders = True
.FileType = msoFileTypeExcelWorkbooks
If .Execute() > 0 Then

For i = 1 To .FoundFiles.Count
If .FoundFiles(i) <> ThisWorkbook.FullName Then

Set wb = Workbooks.Open(.FoundFiles(i), UpdateLinks:=0)
Application.ScreenUpdating = False


ThisWorkbook.Worksheets(1).Range("A" & myRow).End(xlUp).Offset(1, 0).Value = _
wb.Worksheets("○○").Range("F6").Value
ThisWorkbook.Worksheets(1).Range("B" & myRow).End(xlUp).Offset(1, 0).Value = _
wb.Worksheets("○○").Range("F7").Value
ThisWorkbook.Worksheets(1).Range("C" & myRow).End(xlUp).Offset(1, 0).Value = _
wb.Worksheets("○○").Range("F8").Value
ThisWorkbook.Worksheets(1).Range("D" & myRow).End(xlUp).Offset(1, 0).Value = _
wb.Worksheets("○○").Range("Y6").Value


wb.Close False

End If

Next i

Else
MsgBox "ファイルがありません。"
End If

End With

End Sub

A 回答 (2件)

On Error Resume Next


にして、エラーが起きても無視して次の処理を行うようにするとか。
    • good
    • 0
この回答へのお礼

ありがとうございます、これは目からウロコでした!!

お礼日時:2010/01/07 13:49

Dim ws As Worksheet


For Each ws In wb.Worksheets
If ws.Name = "○○" Then
' 処理ごにょごにょ
End If
Next
とか?

この回答への補足

質問する前に一度その方法を試してみたのですが、うまく動作しないのです。入れる所が間違っているのでしょうか?

Dim wb As Workbook, myRow As Long
Dim e As Integer
Dim ws As Worksheet

myRow = ThisWorkbook.Worksheets(1).Rows.Count

With Application.FileSearch
.NewSearch
.LookIn = ThisWorkbook.Path
.SearchSubFolders = True
.FileType = msoFileTypeExcelWorkbooks
If .Execute() > 0 Then

For Each ws In wb.Worksheets
If ws.Name = "○○" Then
For i = 1 To .FoundFiles.Count
If .FoundFiles(i) <> ThisWorkbook.FullName Then

Set wb = Workbooks.Open(.FoundFiles(i), UpdateLinks:=0)
Application.ScreenUpdating = False

'動作中略

wb.Close False

End If
End If

Next
Next i

Else
MsgBox "ファイルがありません。"
End If

End With

End Sub

この状態だと、Forに対するiが無いと出ます。

補足日時:2010/01/07 13:30
    • good
    • 0

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