Excel

【Excel】VBAマクロでシートコピーを別ブックへ(から)し(複数も)保存や(末尾、最後)名前変更する方法【Copy, SaveAs】

当サイトでは記事内に広告を含みます

この記事では、VBAマクロを使用して、Excelシートを別のブックへコピーし、ファイル名を変更して保存する方法について解説していきます。

ポイントとしては、`Copy`、`SaveAs`を使用することです。

なお、下記の解説では完全な初心者でもわかりやすいようにあえて変数名(あなた自身が名付けていい場所)を少々変わった名称にしております。そのため、あなた自身がご活用の際には、ここを適切なものに変更してご活用くださいね。

それでは詳しく見ていきましょう!

1. VBAマクロでシートを別ブックへコピーしファイルの名前変更して保存する方法【Copy, SaveAs】

それではまず、VBAマクロでシートを別ブックへコピーしファイルの名前変更して保存する方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub SheetKopiToBetsuBukku()
    Dim MotoSheet As Worksheet
    Dim KopiBukku As Workbook
    Dim HozonName As String

    ' 元となるシートを選択
    Set MotoSheet = ThisWorkbook.Sheets("Sheet1")

    ' 新しいブックを作成してコピー
    MotoSheet.Copy
    Set KopiBukku = ActiveWorkbook

    ' 保存名の指定
    HozonName = KopiBukku.Path & "\Kopi.xlsx"
    KopiBukku.SaveAs Filename:=HozonName
    KopiBukku.Close
End Sub

コードのAlt+F8を押し、マクロ選択画面でSheetKopiToBetsuBukku関数を実行します。

このコードでは、`Sheet1`という名前のシートを新しいブックにコピーし、「Kopi.xlsx」という名前で保存しています。

2. VBAマクロで複数のシートを別ブックへコピーしファイルの名前変更して保存する方法【Copy, SaveAs】

続いては、VBAマクロで複数のシートを別ブックへコピーしファイルの名前変更して保存する方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub TakusanSheetKopi()
    Dim MotoSheets() As String
    Dim KopiBukku As Workbook
    Dim HozonName As String

    ' コピーしたいシート名を配列に格納
    MotoSheets = Array("Sheet1", "Sheet2", "Sheet3")

    ' シートを新しいブックにコピー
    ThisWorkbook.Sheets(MotoSheets).Copy
    Set KopiBukku = ActiveWorkbook

    ' 保存名の指定
    HozonName = KopiBukku.Path & "\TakusanKopi.xlsx"
    KopiBukku.SaveAs Filename:=HozonName
    KopiBukku.Close
End Sub

コードのAlt+F8を押し、マクロ選択画面でTakusanSheetKopi関数を実行します。

このコードでは、`Sheet1`, `Sheet2`, `Sheet3`という3つのシートを新しいブックにコピーして「TakusanKopi.xlsx」という名前で保存しています。

3. VBAマクロで複数の別ブックからシートをコピーし一つのファイルにまとめ名前変更して保存する方法【Copy, SaveAs, Add】

続いては、VBAマクロで複数の別ブックからシートをコピーし一つのファイルにまとめ名前変更して保存する方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub TakusanBukkuKopi()
    Dim MatomeruBukku As Workbook
    Dim BetsuBukku As Workbook
    Dim BetsuBukkuPath As String
    Dim HozonName As String

    ' まとめるブックを新規作成
    Set MatomeruBukku = Workbooks.Add

    ' 別ブックからシートをコピー
    BetsuBukkuPath = "C:\path\to\your\file.xlsx"
    Set BetsuBukku = Workbooks.Open(BetsuBukkuPath)
    BetsuBukku.Sheets("Sheet1").Copy After:=MatomeruBukku.Sheets(MatomeruBukku.Sheets.Count)
    BetsuBukku.Close

    ' 保存名の指定
    HozonName = MatomeruBukku.Path & "\MatomeruKopi.xlsx"
    MatomeruBukku.SaveAs Filename:=HozonName
    MatomeruBukku.Close
End Sub

コードのAlt+F8を押し、マクロ選択画面でTakusanBukkuKopi関数を実行します。

このコードでは、指定されたパスの別ブックから`Sheet1`を新しいブックにコピーし、「MatomeruKopi.xlsx」という名前で保存しています。

シートのコピーは非常に便利な操作であり、特に大量のデータを持つブック間でデータの移動や統合を行う場面でその真価を発揮します。今回紹介したマクロは、初心者の方でも簡単に操作できるように変数名を一部日本語風の名前にしてありますが、実際の業務で使用する際には、変数名をもう少し短縮したり、英語名にするなどして可読性や効率を上げることが可能です。

VBAは非常に強力なツールですが、初心者の方にとっては少しハードルが高いと感じるかもしれません。しかし、少しずつ学びながら実践していくことで、Excel作業の効率化や自動化が可能となります。是非とも、今回の記事をきっかけにVBAの学習を深めていただければと思います。

それでは、次回の記事もお楽しみに!