Excel VBAで請求書を複数ページにわたって作成する方法

Visual Basic

Excel VBAを使って請求書を作成しているとき、1ページに収まりきらないデータを2ページ目に自動で追加したいというニーズが出てきます。この記事では、請求書のデータを自動的に複数ページにわたって追加する方法について解説します。特に、VBAを使って2ページ目以降の処理を追加する方法を紹介します。

請求書作成の基本的な流れ

まず、基本的な請求書作成の流れを確認しましょう。以下は、ユーザーが選択した顧客名をもとに請求書を生成するためのコードの概要です。

Dim i As Long
Dim Cnt As Long
Dim Kokyaku As String
Cnt = 12
Kokyaku = myForm.myComboBox.Value
Worksheets("請求書雛形").Copy After:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = Kokyaku

このコードでは、顧客名に基づいて「請求書雛形」をコピーし、新しいシートを作成しています。次に、顧客の販売データをそのシートに入力していきます。

複数ページにわたる請求書の作成方法

1ページ目のデータが埋まったときに、2ページ目を自動で追加するためには、次のような処理を行います。

1ページ目が埋まった時点で、VBAで新しいシートを追加し、そこに残りのデータを挿入する処理を作成します。具体的には、Cnt変数が設定した最大値を超えた場合に、新しいシートを作成してデータをコピーする方法です。

コードの変更例

以下は、請求書が1ページに収まりきらない場合に2ページ目を自動で作成するためのコードです。

If Cnt > 50 Then
    Worksheets("請求書雛形").Copy After:=Worksheets(Worksheets.Count)
    Worksheets(Worksheets.Count).Name = Kokyaku & "_2"
    Cnt = 12 '新しいシートの先頭行を設定
End If

このコードでは、Cntが50を超えた時に新しい請求書シートを作成し、行数をリセットしています。これにより、データが1ページに収まりきらない場合でも、2ページ目以降に自動的に追加されます。

データを新しいシートに追加する

新しいページにデータを追加するためには、既存のデータを適切な位置にコピーする必要があります。以下は、2ページ目以降のデータを新しいシートにコピーするコード例です。

For i = 4 To 10000
    If Worksheets("売上").Cells(i, 3).Value = Kokyaku Then
        Worksheets(Kokyaku).Cells(Cnt, 1).Value = Worksheets("売上").Cells(i, 2).Value '日付
        Worksheets(Kokyaku).Cells(Cnt, 2).Value = Worksheets("売上").Cells(i, 5).Value '商品
        Worksheets(Kokyaku).Cells(Cnt, 3).Value = Worksheets("売上").Cells(i, 6).Value '単価
        Worksheets(Kokyaku).Cells(Cnt, 4).Value = Worksheets("売上").Cells(i, 7).Value '数量
        Worksheets(Kokyaku).Cells(Cnt, 5).Value = Worksheets("売上").Cells(i, 8).Value '金額
        Cnt = Cnt + 1
    End If
Next

これにより、1ページ目が埋まった段階で新しいシートにデータがコピーされ、請求書が複数ページにわたって作成されます。

まとめ

Excel VBAを使って請求書を作成する際、データが1ページに収まりきらない場合には、新しいページを自動で作成して追加する方法を実装できます。上記のコード例を参考に、複数ページにわたる請求書の作成を効率的に行いましょう。このような自動化を行うことで、手作業での請求書作成にかかる時間を大幅に削減できます。

コメント

タイトルとURLをコピーしました