だから、私がやりたいことは、一般的に、ワークブックのコピーを作成することです。ただし、ソースブックはマクロを実行しているため、マクロを使用せずに同一のコピーを作成する必要があります。 VBAでこれを行う簡単な方法があるはずですが、まだ見つけていません。シートを1つずつ新しいワークブックにコピーして、これを作成することを検討しています。どうすればいいですか?もっと良い方法はありますか?
Ozgrid の誰かが同様の質問に答えました。基本的に、Workbook1からWorkbook2に各シートを1つずつコピーします。
Sub CopyWorkbook()
Dim currentSheet as Worksheet
Dim sheetIndex as Integer
sheetIndex = 1
For Each currentSheet in Worksheets
Windows("SOURCE WORKBOOK").Activate
currentSheet.Select
currentSheet.Copy Before:=Workbooks("TARGET WORKBOOK").Sheets(sheetIndex)
sheetIndex = sheetIndex + 1
Next currentSheet
End Sub
免責事項:私はこのコードを試していませんが、代わりにあなたの問題にリンクされた例を採用しました。他に何もなければ、それはあなたが意図した解決策に導くはずです。
Keytarheroの応答を少し書き直したいと思います。
Sub CopyWorkbook()
Dim sh as Worksheet, wb as workbook
Set wb = workbooks("Target workbook")
For Each sh in workbooks("source workbook").Worksheets
sh.Copy After:=wb.Sheets(wb.sheets.count)
Next sh
End Sub
編集:シート名の配列を作成して、一度にコピーすることもできます。
Workbooks("source workbook").Worksheets(Array("sheet1","sheet2")).Copy _
After:=wb.Sheets(wb.sheets.count)
注:XLSからシートをコピーしますか? XLSに対してエラーが発生します。反対にうまく機能します(XLSからXLSX)
Xlsxとして保存できます。次に、マクロを失い、少し少ない作業で新しいブックを生成します。
ThisWorkbook.saveas Filename:=NewFileNameWithPath, Format:=xlOpenXMLWorkbook
Vbaアプリを実行しているワークブック内のすべてのシートを、アプリマクロなしの新しいワークブックにコピーできました。
ActiveWorkbook.Sheets.Copy
すべてのマクロがモジュール内にあると仮定すると、おそらく このリンク が役立ちます。ブックをコピーしたら、各モジュールを繰り返して削除します
簡単に書くことができます
Worksheets.Copy
サイクルを実行する代わりに。デフォルトでは、ワークシートコレクションは新しいブックに複製されます。
2010バージョンのXLで機能することが実証されています。
代わりにこれを試してください。
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Copy
Next
Workbooks.Open Filename:="Path(Ex: C:\Reports\ClientWiseReport.xls)"ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy After:=ThisWorkbook.Sheets(1)
Next Sheet