Excel

【Excel】VBAマクロで書式コピー(そのまま、シートやブックなど)する方法【Copy, PasteSpecial, Worksheets】

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

この記事では、ExcelのVBAマクロを使用して、書式をそのまま別の場所にコピーする方法について解説していきます。

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

なお、下記の解説では完全な初心者でもわかりやすいようにあえて変数名(あなた自身が名付けていい場所)を少々変わった名称にしております。

そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。

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

VBAマクロでシート全体の書式コピー(そのまま別シートに)する方法【Copy】

それではまず、シート全体の書式コピーについて解説していきます。

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


Sub SheetFormatCopyToSheet()
    ' 元のシートを指定
    Dim motoSheet As Worksheet
    Set motoSheet = ThisWorkbook.Worksheets("Sheet1")

    ' コピー先のシートを指定
    Dim sakiSheet As Worksheet
    Set sakiSheet = ThisWorkbook.Worksheets("Sheet2")

    ' シート全体の書式をコピー
    motoSheet.Cells.Copy
    sakiSheet.Cells.PasteSpecial Paste:=xlPasteFormats

    ' クリップボードをクリア
    Application.CutCopyMode = False
End Sub

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

このコードは、”Sheet1″の全体の書式を、”Sheet2″にコピーするものです。`Cells`を使用してシート全体を指定し、`Copy`と`PasteSpecial`を使用して書式をコピーしています。

VBAマクロでシート全体の書式コピー(そのまま別ブックの別シートに)する方法【Worksheets】

続いては、別ブックの別シートに書式コピーする方法について解説していきます。

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


Sub SheetFormatCopyToOtherBook()
    ' 元のシートを指定
    Dim motoSheet As Worksheet
    Set motoSheet = ThisWorkbook.Worksheets("Sheet1")

    ' コピー先のブックとシートを指定
    Dim sakiBook As Workbook
    Set sakiBook = Workbooks("Book2.xlsx")
    Dim sakiSheet As Worksheet
    Set sakiSheet = sakiBook.Worksheets("Sheet1")

    ' シート全体の書式をコピー
    motoSheet.Cells.Copy
    sakiSheet.Cells.PasteSpecial Paste:=xlPasteFormats

    ' クリップボードをクリア
    Application.CutCopyMode = False
End Sub

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

このコードは、現在のブックの”Sheet1″から、”Book2.xlsx”の”Sheet1″に書式をコピーするものです。`Workbooks`を使用して、別のブックを指定しています。

VBAマクロで列の書式コピー(a列書式をb列にそのままコピー)する方法【PasteSpecial】

続いては、列の書式コピーの方法について解説していきます。

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


Sub ColumnFormatCopy()
    ' 元の列を指定
    Dim motoRetsu As Range
    Set motoRetsu = ThisWorkbook.Worksheets("Sheet1").Columns("A")

    ' コピー先の列を指定
    Dim sakiRetsu As Range
    Set sakiRetsu = ThisWorkbook.Worksheets("Sheet1").Columns("B")

    ' 列の書式をコピー
    motoRetsu.Copy
    sakiRetsu.PasteSpecial Paste:=xlPasteFormats

    ' クリップボードをクリア
    Application.CutCopyMode = False
End Sub

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

このコードは、”Sheet1″のA列の書式を、B列にそのままコピーするものです。`Columns`を使用して、特定の列を指定しています。

以上、VBAマクロを利用してExcelの書式を効率よくコピーする方法を3つ紹介しました。

これらのコードを使えば、手動での操作を大幅に減少させることができ、作業効率を向上させることができます。是非、あなたの業務に活用してみてください!