Do While LoopとFor Nextの組み合わせのループ処理の不具合です。
マクロで、フォルダ①内にあるExcelファイル(数千個)の必要項目(ファイルによってどの行までデータがあるか異なる)をExcelファイル②(雛形)へ転記し、名前をつけてコピーを保存。その後Excelファイル②のデータをクリ
アし、次のフォルダ①内のExcelファイルの必要項目を転記、、、というループ処理をマクロで組んでいるのですが、名前をつけて保存する部分がうまく行きません。
はじめの5個くらいのファイルが「計算シート_.xls」となってしまい、該当のセル(F7)からファイル名を引用せずコピーして保存してしまいます。
その結果、最初の何個が保存先で上書き保存されてしまい、ファイルがうまく作れません。
間違っている箇所がわからないため、正しく動くにはどうすればいいか教えてください。。。
Sub tenki()
Dim folder As String
Dim file As String
Dim book As Workbook
Dim i As Integer
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then
folder = .SelectedItems(1)
End If
End With
file = Dir(folder &"*.xls")
Do While file <>""
Set book = Workbooks.Open(folder &""&file)
ThisWorkbook.Worksheets("sheet1").Range("F7").Value = book.Worksheets("sheet1").Range("F7").Value
ThisWorkbook.Worksheets("sheet1").Range("G7").Value = book.Worksheets("sheet1").Range("G7").Value
For i = 13 To Cells(Rows.Count, 1).End(xlUp).Row
ThisWorkbook.Worksheets("sheet1").Range("F"&CStr(i)).Value = book.Worksheets("sheet1").Range("F"&CStr(i)).Value
ThisWorkbook.Worksheets("sheet1").Range("G"&CStr(i)).Value = book.Worksheets("sheet1").Range("G"&CStr(i)).Value
ThisWorkbook.Worksheets("sheet1").Range("H"&CStr(i)).Value = book.Worksheets("sheet1").Range("H"&CStr(i)).Value
Next
Dim Filename As String
Filename = "C:\保存先フォルダ\計算シート_"&Format(Range("F7")) &".xls"ThisWorkbook.SaveCopyAs Filename
Application.DisplayAlerts = False
file = Dir()
book.Close SaveChanges:=False
Application.DisplayAlerts = False
ThisWorkbook.Worksheets("sheet1").Range("F7").ClearContents
ThisWorkbook.Worksheets("sheet1").Range("G7").ClearContents
ThisWorkbook.Worksheets("sheet1").Range("F13:H200").ClearContents
Loop
End Sub
回答1件
あなたの回答
tips
プレビュー