|
あるBookからデータの範囲だけを抜き出して別のBookのシートに
まとめるプログラムをExcelのVBA(マクロ)で作成しています。
For文一周目はコピーできないとか言われますが普通に実行できるんですが
For文が二週目に入ると「オブジェクト変数またはWithブロック変数が設定されていません」
というエラーメッセージが出ます。
どうしたら出なくなるのでしょうか。
Dim tgtFolder As String
Dim outFolder As String
Dim outBook As String
Dim tmpBook As Workbook
Dim i As Integer
Dim Ans As String
'フォルダの指定
tgtFolder = ThisWorkbook.Path & "\フォルダ名"
outFolder = ThisWorkbook.Path
'ワークの削除
Ans = outFolder & "*.*"
buf = Dir(Ans)
'フォルダ内のブックを転記
With Application.FileSearch
.LookIn = tgtFolder
.Filename = "*.xls"
.Execute
'見つかった*.xlsファイルの数だけ処理を繰り返す
For i = 1 To .FoundFiles.Count
'ブックを開く
Set tmpBook = Workbooks.Open(.FoundFiles(i))
ThisWorkbook.Activate
Sheets("テンプレート").Copy Before:=tmpBook.Sheets(i)
Sheets("テンプレート").Select
Cells(3, 2).Value = i
buf = ActiveWorkbook.Name
buf = Mid(buf, 1, 40)
buf = Replace(buf, ".xls", "")
Cells(3, 3).Value = buf
Range("D3:D3").Select
ActiveCell.FormulaR1C1 = "='集計したいシート'!R[8]C[-2]"
Selection.Copy
Range("D3:AU33").Select
Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
''選択したシートだけを別ブックに保存する
outBook = outFolder & buf & "_c.xls"
Worksheets("テンプレート").Copy
ActiveWorkbook.SaveAs Filename:=outBook
ActiveWindow.Close
tmpBook.Close False
Next
End With
|
|