前提・実現したいこと
あるフォルダの中に同じフォーマットでブック名が異なる日報のExcelが20個ぐらいあります。
それぞれのExcelから必要な部分のみ抽出して1つのExcelにまとめるプログラムを書いております。
その日報のExcelの特定のセルに"有り"と入力されていた時に、まとめているExcelの特定のシートに-500000と入力をさせたいのです。
発生している問題・エラーメッセージ
ファイル名を取得する際に以下のエラーが表示され止まってしまいます。
エラーメッセージ
実行時エラー '9'
インデックスが有効範囲にありません。
該当のソースコード
Sub test() Application.ScreenUpdating = False Dim file As String file = Dir(ThisWorkbook.Path & "*本体材料費*") Do While file <> "" Dim wb As Workbook Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & file) Sheets("本体材料費明細提出用(新仕切併用)").Select Dim i As Long For i = 22 To 36 If Not Cells(i, 2) = "" And Not Cells(i, 2) = HasFormula Then Range(Cells(i, 15), Cells(i, 45)).Select Selection.Copy Exit For End If Next i ThisWorkbook.Activate Dim x As Long For x = 22 To 123 If Cells(x, 2) = wb.Sheets("本体材料費明細提出用(新仕切併用)").Cells(i, 2) Then Cells(x, 15).PasteSpecial Paste:=xlPasteValues Exit For End If Next x ** '以下のコードでエラーが発生します。 If Workbooks(file).Sheets("商品名A").Range("AD28").Value = "有り" Then** Cells(x, 37).value = -500000 End If Workbooks(file).Close savechanges:=False file = Dir Loop Application.ScreenUpdating = True MsgBox "コピー完了しました。" End Sub
試したこと
If Workbooks(file).Sheets("商品名A").Range("AD28").Value = "有り" Then**
を
If Workbooks**(ThisWorkbook.Path & "" & file).Sheets("商品名A").Range("AD28").Value = "有り" Then
にしましたが、同様の現象でした。
解決方法を教えていただけないでしょうか。
よろしくお願いいたします。
回答4件
あなたの回答
tips
プレビュー