
はじめまして、こんにちは。
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
No.2ベストアンサー
- 回答日時:
On Error Resume Next
にして、エラーが起きても無視して次の処理を行うようにするとか。

No.1
- 回答日時:
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が無いと出ます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のエクセルファイルとシー...
-
Excel2003のVBAでデータリンク...
-
複数ブックを新しいブックのShe...
-
ブック内に特定名のシートがあ...
-
EXCELのブック間の抽出方法を教...
-
Excel にて、 リストボックスの...
-
エクセルVBAでテキストボックス...
-
Excel VBAを使って他ブックのデ...
-
ボタン入力で他ブックのセルへ...
-
vba で全てのエクセルファイル...
-
Excel VBAで検索結果を新規ブッ...
-
ワイルドカード「*」を使うとう...
-
マクロに組み込んだファイル名...
-
ブックの切り替えをする方法
-
別ブックをダイアログボックス...
-
Excelのブック間でのデータのや...
-
エクセルのマクロであるフォル...
-
助けてください! この処理を別...
-
シートにあるキーワードを別の...
-
元データ(ピボッド)を開かずマ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
VBA 別ブックからコピペしたい...
-
別ブックをダイアログボックス...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
【Excel VBA】書き込み先ブック...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBAで別のブックにシートをコピ...
-
VBA コードを実行すると画面が...
-
Excel2007VBAファイルの表示に...
-
VBAで複数のブックを開かずに処...
-
[Excel]ADODBでNull変換されて...
-
Excelファイルを開くとき、読み...
-
VBA 実行時エラー 2147024893
-
Excelマクロ 該当する値の行番...
-
Excel にて、 リストボックスの...
-
VBS Bookを閉じるコード
-
複数のエクセルファイルとシー...
-
【ExcelVBA】インデックスが有...
おすすめ情報