Copyメソッドだけで実行
コピーする時に、Before、After(コピーを作成する場所)を省略します。
すると、新しいエクセルファイルが自動で作成され、その新しいエクセルファイルにシートがコピーされます
コード
1 2 3 4 |
'新しいエクセルファイルにシートをコピーする ThisWorkbook.Worksheets("見積ひな型").Copy |
解説
新しいエクセルファイルが作成され、シート「見積ひな型」がコピーされます。
ワンランク上のコード
実際にはシートをコピーした後に、その新しいシートに編集を行うと思います。
その場合、新しいエクセルファイルとシートはActiveWorkbookを使って操作できます。でも、ActiveWorkbookは何らかの原因で、他のエクセルファイルに変化する可能性があります。
なので、次のコードのように新しいエクセルファイルを作成したら変数に格納し、以降の処理では変数に対して処理を行います。そうすることで、処理中にActiveWorkbookが変化しても影響を受けません。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
'新しいエクセルファイルにシートをコピーする ThisWorkbook.Worksheets("見積ひな型").Copy '新しいエクセルファイルを管理する変数 Dim newExcelFile As Workbook '変数に新しいエクセルファイルをセット Set newExcelFile = ActiveWorkbook '新しいエクセルファイルの編集は、変数newExcelFileで行う newExcelFile.Worksheets("見積ひな型").Range("A1").Value = "テスト" |
プログラムを見て、ちょっとむつかしく感じたかもしれません。
最初のうちは、「新しいエクセルファイルは、変数に格納する」と機械的にプログラミングして問題ありません。だんだんと理解できていきます。
その他テクニックは、次の記事を参考にしてください。
【VBA】ワークシートのコピーとテクニック
Copyメソッド
ワークシートをコピーするには、WorksheetsのCopyメソッドを使います。
コピーしたシートは、新しいブックに作成されます。
コード
'「住所一覧」シートをコピーする
Worksheets("住...