![Excel - あるワークブックから別のワークブックにすべてのシートをコピーする方法](https://rvso.com/image/1476422/Excel%20-%20%E3%81%82%E3%82%8B%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%96%E3%83%83%E3%82%AF%E3%81%8B%E3%82%89%E5%88%A5%E3%81%AE%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%96%E3%83%83%E3%82%AF%E3%81%AB%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%82%B7%E3%83%BC%E3%83%88%E3%82%92%E3%82%B3%E3%83%94%E3%83%BC%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.png)
「test」というワークブックがあります。「estimate」というワークブックのすべてのシートを「test」にコピーしたいのですが、「estimate」から「test」にコピーできるシートのリストを作成する方法がわかりません。VBA でそれを行う方法はありますか?
答え1
考慮する:
Sub dural()
Dim b1 As Workbook, b2 As Workbook
Dim sh As Worksheet
Workbooks.Open Filename:="C:\TestFolder\test.xls"
Set b1 = ActiveWorkbook
Workbooks.Open Filename:="C:\TestFolder\estimate.xls"
Set b2 = ActiveWorkbook
For Each sh In b2.Sheets
sh.Copy after:=b1.Sheets(b1.Sheets.Count)
Next sh
End Sub
答え2
こうするとリストされます
Sub list()
Dim wbEstimate As Workbook
Set wbEstimate = ThisWorkbook
Dim wsList As Worksheet
Dim numSheets As Integer
numSheets = wbEstimate.Sheets.Count
Worksheets.Add(After:=Worksheets(numSheets)).Name = "list"
Set wsList = Worksheets("list")
Dim i As Integer
i = 1
For Each Sheet In wbEstimate.Worksheets
wsList.Cells(i, 1) = Sheet.Name
i = i + 1
Next
End Sub
そしてこれは彼らを模倣するべきである両方開いている場合
Sub list()
Dim wbEstimate As Workbook
Set wbEstimate = ThisWorkbook
Dim wbTest As Workbook
Set wbTest = Workbooks("test.xlsx")
For Each Sheet In wbEstimate.Sheets
Sheet.Copy after:=wbTest.Sheets(wbTest.Sheets.Count)
Next
End Sub
シートをコピーする前にテスト用のシートを開く必要がある場合は、次のようにします。
Sub list()
Dim wbEstimate As Workbook
Set wbEstimate = ThisWorkbook
Dim wbTest As Workbook
Set wbTest = Workbooks.Open("C:\Users\path\to\test.xlsx")
For Each Sheet In wbEstimate.Sheets
Sheet.Copy after:=wbTest.Sheets(wbTest.Sheets.Count)
Next
End Sub