VBAで指定したシートを新しいブックにコピーする方法

こんにちは!大阪市を拠点に活動している『縁紡ぐ』の稲垣です。
SWELLを使ったホームページ制作や、Excel、ACCESS、RPAなどのシステム開発を行っています。
また、Excel、Word、Outlookの研修や、情報セキュリティ研修も行っています。身近なITの相談相手になりたいと思っています。
お気軽にお問い合わせください。
目次
コード
VBAを使った新規ブックを作成して、名前で指定したシートをコピーしていくコードです。
Sub CopySheetsToNewWorkbook()
Dim sheetNames As Variant
Dim wbNew As Workbook
Dim i As Integer
' コピーしたいシート名を配列で指定
sheetNames = Array("Sheet1", "Sheet2", "Sheet3") ' シート名を適宜変更
' 新しいブックを作成
Set wbNew = Workbooks.Add
' 指定したシートをコピー
For i = LBound(sheetNames) To UBound(sheetNames)
On Error Resume Next ' エラーが発生した場合は無視
ThisWorkbook.Sheets(sheetNames(i)).Copy After:=wbNew.Sheets(wbNew.Sheets.Count)
On Error GoTo 0 ' エラーハンドリングを元に戻す
Next i
' 新しいブックを表示
wbNew.Activate
End Sub
コードの解説
シート名の指定
sheetNames = Array("Sheet1", "Sheet2", "Sheet3")
ここでは、コピーしたいシート名を配列で指定しています。必要に応じて、シート名を変更してくださいね。
新しいブックの作成
Set wbNew = Workbooks.Add
新しいブックを作成する部分です。これで、コピー先のブックが準備されます。
シートのコピー
For i = LBound(sheetNames) To UBound(sheetNames)
ThisWorkbook.Sheets(sheetNames(i)).Copy After:=wbNew.Sheets(wbNew.Sheets.Count)
Next i
指定したシートを新しいブックにコピーするループ処理です。エラーが発生した場合は無視するので、安心して使えます。
実行してみる
実行前の状態

実行後

新規ブックに同一の名前のシートがあった場合は、Excelが自動で番号を追加します。画像では、Sheet1は、新規ブックを作成した段階で作成されているので、コピーされてきたシートは、(2)が付けられています。
まとめと次のステップ
VBAを使ったシートコピーの方法を紹介しました。このテクニックを使えば、各部署や支店など必要なシートだけを新規ブックにするといった業務を効率化することができます。VBAの使い方やカスタマイズ方法を学びたい方、相談したい方、リクエストがあればお問合せからご連絡いただければ幸いです
記事を書いた人

稲垣
- Excel、ACCESSでのシステム開発が得意
- ITスキルを共有し実践的に学びながら成長する人を見るのが幸せ
- 自家焙煎するほどのコーヒー好き
- 使用言語 VBA、Python、Javascript、Java、HTML、CSS etc.
- 保有資格 Kintoneアソシエイト、日商簿記検定2級、マンション管理士、管理業務主任者、情報セキュリティマネジメント、ExcelVBA etc.
- 業務フロー図の作成や業務時間分析を通して、効率化ポイントを探る人
- お客様にとって本当に良いことかを第一に考える人
コメント