【実務で使える】前月の請求書シートをコピーして翌月分を自動生成するVBAコード

ExcelVBA

・Excelでの請求書作成が面倒だと感じていませんか

毎月の請求書作成で、
「前月のExcelシートをコピーして日付や月だけ手作業で直している…」
という作業に時間を取られていませんか?

本記事では、前月の請求書シートをコピーし、翌月分を自動生成するVBAを、実務経験にもとづいて分かりやすく解説します。
Excelだけで運用している企業や、クラウド請求書システムを導入できない環境でもすぐに使える内容です。
(この記事は約5分ぐらいで読めます)

・この記事でできること

  • 前月の請求書シートを自動コピー
  • 翌月の日付・品名・請求月を自動更新
  • シート名も自動で「2024年1月分」のように変更
  • 手作業のミス削減・作業時間の短縮

・この記事がおすすめの人

  • 毎月同じ形式の請求書をExcelで作成している
  • 日付や月の修正を毎回手作業で行っている
  • VBAで業務を自動化したいが、難しいコードは避けたい
  • 小規模事業・人手不足で効率化したい

・VBAコードのポイント解説

①シートをコピーする基本構文(シートのコピー)
Worksheets(”コピー元シート名”).Copy after:=Worksheets(”コピー元シート名”)

  • 「Copy」でシートを複製
  • 「after」でコピー後の配置場所を指定
  • 「ActiveSheet」が新しいシートになる


上記の「Worksheets(”コピー元シート名”).Copy」ではコピー元のシートを指定しコピーします。原本のような固定のしたシートではなく、選択中のシート選択したい場合は「ActiveSheet.Name」を入力します。
after:=Worksheets(”コピー元シート名”)ではコピーしたシートをどこに配置するか指定します。
引数「after」を指定すれば”コピー元シート名”の後ろにコピーしたシートが配置されます。「before」を指定すれば”コピー元シート名”の前に配置をします。
※Copyメゾットでシートをコピーすると、コピーして作成されたシート選択中(ActiveSheet)になります

②新しいシート名を変更する(新しく作成されたシート名の変更)
ActiveSheet.Name = ”新しいシート名”

・請求書シートを用意(使用例用のサンプルシートです)

コピー元の請求書シート(前月分)のエクセルシートを用意します。

・VBA実行後

新しくシートが作成(翌月分)され下記図の赤く囲んだ部分が翌月の日付になり毎回手作業で行っていたものが自動で反映されます。

・実務で使える完成コード(解説付き、標準モジュールに入力)

Sub 翌月請求書発行()
    
    '発行日が入力されているか確認
    If ActiveSheet.Range("G4").Value = "" Then
        MsgBox "セルG4に発行日付が入力されていません。", vbInformation, "確認"
        Exit Sub
    End If
    
    '発行日が日付であるか確認
    If Not IsDate(ActiveSheet.Range("G4").Value) Then
        MsgBox "セルG4に日付を入力してください"
        Exit Sub
    End If
    
    'シートをコピーし当月分として利用するシートを追加
    Worksheets(ActiveSheet.Name).Copy after:=Worksheets(ActiveSheet.Name)
    
    '追加したシートの内容を変更
    ' 日付を加算(コピー元の日付に1ヵ月加算)
    ActiveSheet.Range("G4").Value = DateAdd("m", 1, ActiveSheet.Range("G4").Value)
    ' 日付を変更
    ActiveSheet.Range("B15").Value = ActiveSheet.Range("G4").Value
    ' 品名を変更
    ActiveSheet.Range("C15").Value = Month(ActiveSheet.Range("G4").Value) & "月分 利用料"
    ' 請求月を変更
    ActiveSheet.Range("B10").Value = Month(ActiveSheet.Range("G4").Value) & "月分"
    
    'シート名を追加
    ActiveSheet.Name = Year(ActiveSheet.Range("G4")) & "年" & Month(ActiveSheet.Range("G4")) & "月分"
    
End Sub

・実行手順

表示/開発タブからマクロをクリック。マクロ名「翌月請求書発行」を実行ボタンクリックでマクロが実行されます。

・実務で使うときの注意点

  • VBAコードは自己責任で利用する
  • バックアップを必ず取る
  • Excelのバージョンによって動作が異なる場合がある
  • セル位置(G4、B15など)は自社の請求書に合わせて調整する

・まとめ

この記事では、前月の請求書シートをコピーし、翌月分を自動生成するVBAを解説しました。
Excelだけで請求書を管理している企業にとって、作業時間の短縮・ミス削減に大きく貢献します。
VBAを使った自動化は、少しの工夫で業務効率を大きく改善できます。
ぜひ、実際の環境に合わせてカスタマイズしてみてください。
ここまでご覧いただき、誠にありがとうございます。

・ご注意

・掲載されている内容には細心の注意をしてるつもりですが、
間違いやご指摘等がありましたら、「お問い合わせ」からご連絡をいただけますと幸いです。
・掲載されている入力VBAコード等は動作を保証するものではなく、あくまでサンプルとして掲載しております。
・掲載されている入力VBAコード等は自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
・対応バージョン
 Excel2021、2019、2016

・サンプルファイル(自己責任でご使用ください)


※サンプルファイルはコードが入力されておりませんので、上記のコードをコピーし貼付して下さい。

コメント