フォルダ内に多くのExcelファイルがあります。
マクロで各ファイルを反復処理し、final costという名前のシートをコピーして、宛先ファイルにソースファイルの名前のシートを作成する必要がありました。
3つのファイルA、B、Cがあり、それぞれに「最終コスト」という名前のシートがあります。
新しいファイルには、3つのシートという名前が付けられます
- A、
- B、
- C
編集されたコードは次のようになります
Sub RunCodeOnAllXLSFiles()
Dim lCount As Long
Dim wbResults As Workbook
Dim wbCodeBook As Workbook
'Application.ScreenUpdating = False
'Application.DisplayAlerts = False
'Application.EnableEvents = False
'On Error Resume Next
'Set wbCodeBook = ThisWorkbook
Dim FilePath As String, fName As String
Dim aWB As Workbook, sWB As Workbook
Set aWB = ActiveWorkbook
FilePath = "D:\binny\" 'change to suit
fName = Dir(FilePath & "*.xls")
Do While fName <> ""
If fName <> aWB.Name Then
Set sWB = Workbooks.Open(FileName:=FilePath & fName, UpdateLinks:=0)
sWB.Worksheets("Final Cost").Range("A1:Z6666").Copy
sWB.Close False
Sheets.Add.Name = fName
Worksheets(fName).Range("D1").Select
ActiveSheet.PasteSpecial Format:= _
"Microsoft Word 8.0 Document Object"
End If
fName = Dir
Loop
Set sWB = Nothing: Set aWB = Nothing
'Application.ScreenUpdating = True
'Application.DisplayAlerts = True
'Application.EnableEvents = True
End Sub
今やるべきことは次のとおりです。
- フォーマットとセル幅を保持する
- PasteSpecialを動作させることができません
- 同じ名前のワークシートが存在する場合は削除します