| 
    
     |  | 素人の質問に付き合っていただきありがとうございます。 ファイルを開けない件は修正できました。
 
 引き続きご教授いただきたいことがありますがまず目的を整理します。
 
 ・目的
 folder1に生データのブックがたくさん入っている。ファイル名は昇順。
 一方でソルバーを実行するためにテンプレートになるブック、ファイル名はtemplateを用意している。
 生データのB列をテンプレートの同じくB列にコピペしたうえでソルバーを実行し、
 このブックを生データと同じ名前でfolder2に保存する。
 以上の操作を全ファイル分繰り返す。
 
 ・今できていないこと
 計算後のファイルを生データと同じ名前を付けて保存することができていません。
 下にコードを示しますが、エラーが出る行は、
 
 wbT.Close True, folder2 & "\" & strWorkBookName 'テンプレートの結果を元のファイル名でフォルダ2に保存して閉じる
 
 のところです。
 ソルバー終了までは動いていることが確認できています。
 
 お手数ですがよろしくお願いします。
 
 
 Sub macro()
 Dim folder1 As String
 Dim folder2 As String
 Dim template As String
 Dim f As String
 Dim wbT As Workbook
 Dim wb As Workbook
 Dim strWorkBookName As String
 
 folder1 = "C:\Users\tsuruta\Documents\macro\folder1" 'フォルダ1
 folder2 = "C:\Users\tsuruta\Documents\macro\folder2" 'フォルダ2
 template = "C:\Users\tsuruta\Documents\macro\template.xlsm" 'テンプレートBook
 f = Dir(folder1 & "\" & "1.xlsx") 'フォルダ1内の最初のBook名
 Do While f <> "" 'Book名がある間
 
 Set wbT = Workbooks.Open(template) 'テンプレートを開く
 Set wb = Workbooks.Open(folder1 & "\" & "1.xlsx") '生データを開く
 wb.Worksheets("Sheet1").Range("B:B").Copy '生データのBookのSheet1のB列の値をコピー
 wbT.Worksheets("Sheet1").Range("B:B").PasteSpecial 'コピーした値をテンプレートのSheet1のB列にペースト
 strWorkBookName = ActiveWorkbook.Name '生データのファイル名をコピー
 wb.Close False '生データを保存せずに閉じる
 
 '以下ソルバー実行
 SolverReset
 SolverOk SetCell:="$G$5", MaxMinVal:=2, ValueOf:=0, ByChange:="$J$3:$J$6", _
 Engine:=1, EngineDesc:="GRG Nonlinear"
 Application.DisplayAlerts = False
 SolverSolve True
 Application.DisplayAlerts = True
 'ソルバー終了
 
 
 wbT.Close True, folder2 & "\" & strWorkBookName 'テンプレートの結果を元のファイル名でフォルダ2に保存して閉じる
 f = Dir 'フォルダ1内の次のBook名
 Loop '繰り返す
 
 
 End Sub
 
 |  |