• 公開日:

エクセルのマクロ活用事例を紹介

この記事では、エクセルでのマクロ活用事例をご紹介します。

マクロを使って自動化することで作業効率を向上したり、便利な機能を活用して日常業務を効率化したりできます。

データの集計方法や取引先ごとの請求書などを作成する方法、エクセルを開く度にバックアップファイルを作成する方法などをご紹介します。

Excelを使った日付選択のマクロを無料でダウンロード!

Excelでカレンダーから日付を入力できるマクロを無料でダウンロードできます。コードを変更すれば、カレンダーの背景色や、今日の日付の色を変更したりとカスタマイズすることも可能です。

エクセルのマクロ活用事例を紹介

エクセルでマクロを活用する例をご紹介します。

開発タブを表示する

マクロの設定は「開発タブ」から行います。

開発タブはデフォルトでは表示されていないので、以下の記事を参考に表示させましょう。

エクセルの開発タブを表示する方法

データの集計などで活用する

マクロを設定して、集計などで活用する方法をご紹介します。

データの集計を行う

データの集計を行って、別シートにレポートを作成するマクロをご紹介します。

月次報告レポートが作成できる

具体的には、「データ」シートに入力した売上を「月次売上報告レポート」に商品ごとの売上として集計し、「金額」「個数」の合計を出します。

商品ごとのデータをまとめるのに役立つマクロです。

方法の詳細は以下のとおりです。

表を作成する

まずは、データを入力するシートを作成します。

①新規シートを作成して、「データ」とシート名を入力します。

②A1セルから「日付」「商品名」「売上金額」「個数」の項目とデータを入力します。

シートを作成する

次に、レポートを出力するシートを作成しておきます。

新規シートを作成して、「月次売上報告レポート」というシート名を入力しておきます。

Visual Basicを選択する

次にマクロを設定します。

「開発」タブ、②「Visual Basic」の順に選択します。

標準モジュールを選択する

「Microsoft Visual Basic for Applications」というVBAの編集画面が表示されます。

「新しい標準モジュール」、②「標準モジュール」の順に選択します。

コードを貼り付ける

以下のコードをコピーして貼り付けます。

以下は「データシートに入力した売上を、月次売上報告レポートに商品ごとの売上としてまとめる」という意味のコードです。

複雑なコードなので一旦そのまま貼り付けて、試してみてください。

上記の画像の緑色の文字は、各コードが何の動作を指定しているかを説明しているコメントです。コピー用のコードではコメントを省いています。

Sub 月次売上報告()

    Dim wsData As Worksheet
    Dim wsReport As Worksheet
    Dim lastRow As Long
    Dim reportRow As Long
    Dim productName As String
    Dim salesAmount As Double
    Dim quantity As Long
    Dim found As Boolean
    
    Set wsData = ThisWorkbook.Sheets("データ")
    Set wsReport = ThisWorkbook.Sheets("月次売上報告レポート")
    
    wsReport.Range("A1").Value = "月次売上レポート"
    wsReport.Range("B1").Value = Format(Date, "yyyy年mm月dd日")
    wsReport.Range("A3:C3").Value = Array("商品名", "売上合計", "売上個数")
    
    lastRow = wsData.Cells(wsData.Rows.Count, "A").End(xlUp).Row
    
    reportRow = 4
    
    For i = 2 To lastRow
        productName = wsData.Cells(i, 2).Value
        salesAmount = wsData.Cells(i, 3).Value
        quantity = wsData.Cells(i, 4).Value
        found = False
        
        For j = 4 To reportRow - 1
            If wsReport.Cells(j, 1).Value = productName Then
                wsReport.Cells(j, 2).Value = wsReport.Cells(j, 2).Value + salesAmount
                wsReport.Cells(j, 3).Value = wsReport.Cells(j, 3).Value + quantity
                found = True
                Exit For
            End If
        Next j
        
        If Not found Then
            wsReport.Cells(reportRow, 1).Value = productName
            wsReport.Cells(reportRow, 2).Value = salesAmount
            wsReport.Cells(reportRow, 3).Value = quantity
            reportRow = reportRow + 1
        End If
    Next i

    wsReport.Columns("A:C").AutoFit

    MsgBox "月次売上報告が作成されました。"

End Sub
保存する

コードを貼り付けたら、「保存」を選択します。

保存する

「名前を付けて保存」ダイアログボックスが表示されます。

任意の保存場所(例:デスクトップ)を選択します。

②ファイルの種類で「Excel マクロ有効ブック」を選択し、③「保存」ボタンを押します。

ボタンを選択する

マクロが作成できました。次にマクロボタンを作成します。

「開発」タブを選択します。

「挿入」、③フォームコントロールの「ボタン(フォーム コントロール)」の順に選択します。

ボタンを描画する

マウスポインターが十字マークになったら、任意の位置でドラッグしてボタンを描画します。

マクロを設定する

描画が終わると、「マクロの登録」ダイアログボックスが自動的に表示されます。

作成したマクロ(例:月次売上報告)を選択し、②「OK」ボタンを押します。

ボタンの名前を変更する

マクロボタンが作成できました。

ボタンの名前を変更する場合は、①マクロボタンを右クリックして、②「テキストの編集」を選択します。

名前を入力する

任意の名前(例:月次報告レポート)を入力します。

ボタンを押す

ボタンの作成が終わったら、「月次報告レポート」ボタンを押します。

OKボタンを押す

「月次売上報告が作成されました。」というメッセージが表示されたら、「OK」ボタンを押します。

レポートが作成される

「月次売上報告レポート」シートを確認すると、商品名ごとに全体の売上合計と売上個数が計算されていることが確認できます。

マクロで在庫管理を簡単にする

マクロを使って在庫管理の手順を自動化できます。

入出庫の履歴を記録する

例えば、上記の画像は在庫管理表とマクロを組み合わせて、入出庫の履歴を記録できるようにした例です。

在庫管理をマクロを使って簡単にする方法については、以下の記事でご紹介しています。

在庫の検索等ができるマクロについてもご紹介しています。

エクセルで在庫管理をマクロで簡単にする方法

請求書を作成

以下ではマクロを設定して、「取引データ一覧」から同じ会社との取引分をまとめて「請求書」を作成する方法をご紹介します。

請求書をA4のPDFとして保存することも、マクロによって自動化できます。

請求書テンプレートを作る

まずはシートを作成します。

新規シートを作って「請求書テンプレート」というシート名を入力します。

②上記の画像のような請求書テンプレートを作成しておきます。

どんなレイアウトの請求書でも構いませんが、後ほどマクロの設定で利用するため以下の項目のセル番地をメモしておきましょう。

  • 取引先名
  • 請求先(住所)
  • 商品名
  • 金額
データ一覧シートを作る

次に取引データを入力するシートを作成します。

「取引データ一覧」というシート名を入力します。

②上記のようにA1セルから「ID(請求書番号)」「取引先名」「住所」「商品名」「請求額」「請求日」の項目とデータを入力しておきます。

先ほどメモした「請求書テンプレート」シートの「取引先名」などの項目に、「取引データ一覧」の同じ項目のデータが表示されます。

Visual Basicを選択する

次にマクロを設定します。

「開発」タブ、②「Visual Basic」の順に選択します。

標準モジュールを選択する

「Microsoft Visual Basic for Applications」というVBAの編集画面が表示されます。

「新しい標準モジュール」、②「標準モジュール」の順に選択します。

コードを貼り付ける

以下のコードをコピーして貼り付けます。

以下は「取引データ一覧シートの情報をもとに取引先ごとの請求書を作り、PDFとしてデスクトップに保存する」という意味のコードです。

Sub 請求書作成マクロ()
    Dim wsData As Worksheet
    Dim wsTemplate As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim clientName As String
    Dim clientAddress As String
    Dim productName As String
    Dim invoiceAmount As Double
    Dim rowCounter As Integer
    Dim invoiceSheet As Worksheet
    Dim invoiceFileName As String
    Dim desktopPath As String

    Set wsData = ThisWorkbook.Sheets("取引データ一覧")
    Set wsTemplate = ThisWorkbook.Sheets("請求書テンプレート")

    desktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"

    lastRow = wsData.Cells(wsData.Rows.Count, "A").End(xlUp).Row

    For i = 2 To lastRow

        If wsData.Cells(i, 2).Value <> clientName Then

            clientName = wsData.Cells(i, 2).Value
            clientAddress = wsData.Cells(i, 3).Value

            Set invoiceSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
            invoiceSheet.Name = clientName & "_請求書"
            wsTemplate.Cells.Copy Destination:=invoiceSheet.Cells

            invoiceSheet.Range("D4").Value = clientName
            invoiceSheet.Range("D6").Value = clientAddress

            rowCounter = 11
        End If

        productName = wsData.Cells(i, 4).Value
        invoiceAmount = wsData.Cells(i, 5).Value

        invoiceSheet.Cells(rowCounter, 2).Value = productName
        invoiceSheet.Cells(rowCounter, 4).Value = invoiceAmount

        rowCounter = rowCounter + 1
    Next i

    For Each invoiceSheet In ThisWorkbook.Sheets
        If invoiceSheet.Name <> wsData.Name And invoiceSheet.Name <> wsTemplate.Name Then

            With invoiceSheet.PageSetup
                .PaperSize = xlPaperA4
                .Orientation = xlPortrait
                .Zoom = False
                .FitToPagesWide = 1
                .FitToPagesTall = 1
            End With
            
            invoiceFileName = desktopPath & invoiceSheet.Name & "_" & Format(Now, "yyyymmdd_hhnnss") & ".pdf"
            invoiceSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=invoiceFileName, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
        End If
    Next invoiceSheet

    MsgBox "すべてのシートのPDFの作成が完了しました。", vbInformation
End Sub

「取引データ一覧」シートの抽出セルを変更したい場合は参考に行いましょう。

項目コードと編集例
取引先名26行目clientName = wsData.Cells(i, 2).Value
例:(i, 3)にするとC列
請求先(住所)27行目clientAddress = wsData.Cells(i, 3).Value
例:(i, 4)にするとD列
商品名39行目productName = wsData.Cells(i, 4).Value
例:(i, 5)にするとE列
金額40行目invoiceAmount = wsData.Cells(i, 5).Value
例:(i, 6)にするとF列

「請求書テンプレート」シートに表示する取引先名などのセル番地を変更したい場合は、以下を参考に行いましょう。

項目コードと編集例
取引先名33行目invoiceSheet.Range("D4").Value = clientName
請求先(住所)34行目invoiceSheet.Range("D6").Value = clientAddress
商品名42行目invoiceSheet.Cells(rowCounter, 2).Value = productName
例:3にすればC列
金額43行目invoiceSheet.Cells(rowCounter, 4).Value = invoiceAmount
例:5にすればE列
保存する

コードを貼り付けたら、「保存」を選択します。

保存する

「名前を付けて保存」ダイアログボックスが表示されます。

任意の保存場所(例:デスクトップ)を選択します。

ファイルの種類で「Excel マクロ有効ブック」を選択し、③「保存」ボタンを押します。

ボタンを選択する

マクロが作成できました。次にマクロボタンを作成します。

「開発」タブを選択します。

「挿入」、③フォームコントロールの「ボタン(フォーム コントロール)」の順に選択します。

ボタンを描画する

マウスポインターが十字マークになったら、任意の位置でドラッグしてボタンを描画します。

マクロを登録する

描画が終わると、「マクロの登録」ダイアログボックスが自動的に表示されます。

作成したマクロを選択し、②「OK」ボタンを押します。

テキストの編集を選択する

マクロボタンが作成できました。

ボタンの名前を変更する場合は、①マクロボタンを右クリックして、②「テキストの編集」を選択します。

名前を変更する

任意の名前(例:請求書作成)を入力します。

ボタンを押す

ボタンの作成が終わったら、ボタンを押します。

OKボタンを押す

「すべてのシートのPDFの作成が完了しました。」というメッセージが表示されたら、「OK」ボタンを押します。

請求書を開く

請求書PDFが取引先ごとに保存されました。

試しにPDFをダブルクリックして開いてみます。

請求書PDFが作成できた

請求書PDFが正しく作成されていることが確認できました。

取引先名や金額などが正しく反映されています。

エクセルファイルを開いたときの動作

マクロではエクセルファイルを開いたときの動作も設定できます。

バックアップファイルを作成する

以下ではエクセルファイルを開く度に、バックアップファイルを作成するマクロをご紹介します。

フォルダやファイルを作成する

フォルダやファイルを作成しておきます。

ファイルと同じフォルダ内に「Backup」という名前のフォルダも作成しておきましょう。

Visual Basicを選択する

マクロを設定します。

「開発」タブ、②「Visual Basic」の順に選択します。

プロジェクトエクスプローラーを開く

「Microsoft Visual Basic for Applications」というVBAの編集画面が表示されます。

「表示」、②「プロジェクト エクスプローラー」の順に選択します。

ThisWorkBook

「ThisWorkBook」をダブルクリックします。

コードを貼り付ける

以下のコードをコピーして貼り付けます。

以下は、「エクセルファイルを開く度に同じ階層のフォルダにバックアップファイルを作成する」という意味のコードです。

バックアップファイルのファイル名に、バックアップが作成された日時を追加するように設定しています。

Private Sub Workbook_Open()
    Dim backupFolder As String
    Dim backupFileName As String
    Dim currentWorkbook As Workbook
    Dim currentPath As String
    Dim currentFileName As String
    
    Set currentWorkbook = ThisWorkbook
    
    currentPath = currentWorkbook.Path
    currentFileName = currentWorkbook.Name
    
    backupFolder = currentPath & "\Backup"
    
    If Dir(backupFolder, vbDirectory) = "" Then
        MkDir backupFolder
    End If
    
    backupFileName = backupFolder & "\" & _
                     Left(currentFileName, InStrRev(currentFileName, ".") - 1) & "_" & _
                     Format(Now, "yyyy-mm-dd_hh-nn-ss") & ".xlsm"
    
    currentWorkbook.SaveCopyAs backupFileName
    
    MsgBox "バックアップが作成されました: " & backupFileName, vbInformation
End Sub
ファイルタブを選択する

「Microsoft Visual Basic for Applications」を閉じて、「ファイル」タブを選択します。

参照を選択する

「名前を付けて保存」、②「参照」の順に選択します。

マクロ有効ブックで保存する

「名前を付けて保存」ダイアログボックスが表示されます。

①ファイルの保存場所を選択します。

必ず「Backup」フォルダと同じ場所に保存しましょう。

②ファイルの種類で「Excel マクロ有効ブック」を選択し、③「保存」ボタンを押します。

エクセルファイルを開く

マクロの設定が完了しました。

保存したファイルをダブルクリックで開きます。

OKボタンを押す

ファイルが開くと同時に「バックアップが作成されました」というメッセージが表示されます。

「OK」ボタンを押します。

Backupフォルダを確認する

バックアップファイルが正しく作成されたか確認してみます。

「Backup」フォルダをダブルクリックで開きます。

バックアップファイルが作られる

赤矢印で示したように、Backupフォルダの中にバックアップファイルが確認できれば、正しく設定できています。

ダイアログボックスでメッセージを表示する

マクロを設定すれば、エクセルファイルを開く時にダイアログボックスでメッセージを表示することができます。

今回はエクセルファイルを開くと毎回「編集が終了したら、必ず上書き保存すること」というメッセージが表示されるように設定します。

Visual Basicを選択する

マクロを設定します。

「開発」タブ、②「Visual Basic」の順に選択します。

プロジェクトエクスプローラーを開く

「Microsoft Visual Basic for Applications」というVBAの編集画面が表示されます。

「表示」、②「プロジェクト エクスプローラー」の順に選択します。

ThisWorkBook

「ThisWorkBook」をダブルクリックします。

コードを貼り付ける

以下のコードをコピーして貼り付けます。

Private Sub Workbook_Open()
    MsgBox "編集が終了したら、必ず上書き保存すること", vbInformation, "注意"
End Sub
ファイルタブを選択する

「Microsoft Visual Basic for Applications」を閉じて、「ファイル」タブを選択します。

参照を選択する

「名前を付けて保存」、②「参照」の順に選択します。

マクロ有効ブックで保存する

「名前を付けて保存」ダイアログボックスが表示されます。

ファイルの保存場所を選択します。

②ファイルの種類で「Excel マクロ有効ブック」を選択し、③「保存」ボタンを押します。

メッセージが表示される

再度エクセルファイルを開いて、上記のようにメッセージが表示されたら正しく設定できています。