【VBA】価格改定のお知らせ資料を一括出力するマクロの作り方

 

価格改定をお知らせする資料を効率よく作成したい!

 

こんな要望にお応えするマクロをご紹介します。

 

マクロを使うと、

資料に必要な情報を一覧表に入力するだけで「価格改定の挨拶文書」「見積書」「覚書」3種類の書類を一括で出力する

ことが可能です。

 

この価格改定のお知らせを一括出力するマクロはこのような業務を抱えている方におすすめ

  • 価格改定を知らせるお客さんが多い
  • 書類作成以外にも仕事がある
  • エクセルを使ったデスクワークが多い

 

この記事では価格改定のお知らせを一括出力するマクロの導入方法を図を使って詳しくご紹介しています。

 

書類の様式が決められない!関係書類を一つ一つ手作業で作成している!

このような方は是非参考にしてみてください。

 

広告

価格改定のお知らせ資料を一括出力するマクロとは

価格改定のお知らせ資料を一括出力するマクロとは、

価格改定のお知らせに関する資料を一瞬で出力することができる

プログラミングのことです。

 

価格改定のお知らせに関する資料の種類がこちら

  • 価格改定に至った簡単な経緯を説明文を記入した通知文書
  • 価格改定前(現行)の見積もり
  • 価格改定後の見積もり
  • 契約書又は覚書

 

一旦、「設定」シートに記載した情報はいつでも出力することができるので、過去に作成した価格改定のお知らせ資料をすぐに出力することができます

 

 

 

価格改定のお知らせを周知する相手先が多ければ多いほど効力を発揮するマクロになっています。

 

通知文の作成

価格改定に至った簡単な経緯を説明文を記入した通知文書の様式がこちら

 

今回は2023年10月から開始されるインボイス制度と昨今の物価高騰を理由とした通知文書を作成してみました。

 

通知文は、

相手方に失礼がないように、かつ価格改定の経緯をしっかりと伝える

必要があります。

 

「価格改定のお知らせ通知文 テンプレート」とネット検索すると、いろんな通知文書を閲覧することができます。ぜひ業務内容に合った通知文書を作成してみてください。

 

価格改定前と後の見積書作成

価格改定前後の見積書の様式がこちら

 

見積書は、パッと見ただけで内容が確認できるシンプルな様式がおすすめです。

 

価格改定前の見積書と価格改定後の見積書を見比べることで、どのように価格が変化したのかすぐに確認することができます

 

設定シートに「品目」「単価」「数量」を入力すると合計は自動計算するマクロになっているので、感覚的に見積書の作成が可能です。

 

 

契約書もしくは覚書の作成

覚書の様式がこちら

 

覚書とは、一般的には「覚書」とは、忘れないように書き留めておくこと、その文書、メモ、備忘録などを指します。

 

大したことのない書類と感じられるかもしれませんが、契約行為が成されるビジネスの場では契約書と同様の効力を持つほど重要な書類になります。

 

今回のように価格改定を行う場合、「価格変更したことをお互いが承認しましたよ!」という証拠になる書類です。

 

覚書には以下のような項目が必要となります。

  • 件名
  • 変更内容
  • 内容を確認したことを証拠づけるための押印

 

内容が不十分だと後にトラブルに発展する可能性があるので、しっかりとした様式で契約書、または覚書を作成しましょう。

 

私は仕事の関係上、50件以上のお客さんに価格改定のお知らせを周知しなければなりません。

書類の作成以外に打合せの日程調整や契約内容の確認といった準備が必要なのでめちゃくちゃ大変でしたが、マクロを作っていたおかげで効率よく仕事を進めることができました。

 

価格改定のお知らせ資料を一括出力するマクロのように、

ある情報を元にいろんな種類の書類を作成するマクロは仕事でめちゃくちゃ使えるので、

この記事で紹介しているマクロ導入方法を是非チェックしてみてください。

 

 

価格改定のお知らせ資料を一括出力するマクロの使い方

価格改定のお知らせ資料を一括出力するマクロの使い方はとってもシンプルです。

 

1.「設定」シートに必要な情報を記入する

 

自社名、住所、相手先会社名、連絡先など価格改定のお知らせ資料に必要な情報を右(列方向)に向かってどんどん記入していきます。

 

情報が蓄積されてくるとコピペできるので作業が楽になっていくはずです。

 

情報の記入作業を少しでも楽にするために「記入欄表示マクロ」を導入しています。

 

通知文の情報を記入する場合、「通知文記入欄表示」というボタンを押下、

見積書の情報を記入する場合、「見積書記入欄表示」というボタンを押下、

することで記入欄を限定することが可能です。

 

「記入欄表示マクロ」を上手に利用すれば情報の入力作業がとても楽になるので是非有効活用してみてください。

 

 

2.テキストボックスに番号を入力し「実行」ボタンを押下

 

出力したい書類の番号をテキストボックスに入力し、「実行」ボタンを押下するだけでマクロを利用することが可能です。

めちゃくちゃ簡単に4種類の資料を一括出力できるようになります。

 

記事の最後では、紹介している価格改定のお知らせ資料を一括出力するマクロが設定されたエクセルファイルをダウンロードできるサイトを紹介しています。

 

価格改定のお知らせ資料を一括出力するマクロを使ってみたいという方は是非ダウンロードしてみてください。

 

 

価格改定のお知らせ資料を一括出力するマクロの導入方法

価格改定のお知らせ資料を一括出力するマクロの導入方法をご紹介していきます。

 

設定しているマクロにはさほど難しいコードは使われていないのですが、

様式の設定が結構めんどうな作業になります。

 

業務内容に合わせてマクロを導入しようと考えている方は根気よく頑張ってみてください。

 

1.各種書類の様式設定

マクロのコードを設定する前に各種資料の様式を作り込む必要があります。

 

コードの作成後に様式の変更が生じるとかなりめんどうな作業になるので、後々様式の変更がないようしっかり作り込んでください

 

通知文の様式は下記のように作り込んでいってください。

 

まずは書類全体の作り込みを行います。

次に編集が必要な項目の場所(セル番地)を決定していきます。

最終的に編集が必要な項目が設定シートから転記される情報になりるので、セルの場所と大きさに注意してください。

 

 

同じように見積書と覚書の様式を作り込んでいきます。

 

 

様式の設定はこれで完了です。

様式はテキストの配置、全体のバランスがとても重要です。時間をかけて作り込んでください。

 

2.「設定」シートを作成

各種資料の様式を作り込んだ後に「設定」シートを作り込んでいきます。

 

価格改定のお知らせ資料を一括出力するマクロの「設定」シートの構造はこんな感じです。

 

各種資料にどのような情報を転記するかで「設定」シートに必要な情報が決定します。

 

項目は右方向(列方向)に追加してください。

 

一覧表が右方向(列方向)に長くなって編集しづらい!と感じる方は「記入欄表示マクロ」を導入することでストレスを解決することが可能です。

 

下記の記事では、列幅を自動調整するマクロについてご紹介しています。

 

 

列幅を自動調整するAutoFit機能を導入すれば使いやすい一覧表に仕上げることができます。

是非使い方をマスターしてみてください。

 

3.マクロの設定

 

VBAを開き、標準モジュールを作成

 

Module1にコードを記入する

 

 

Module1に記入するサンプルコード(転記マクロ)


Sub 転記()
''''''''''''''''''''''''''Sheetの区別""""""""""""""""""""""""""""
Dim Ash As Worksheet
Dim Bsh As Worksheet
Dim Csh As Worksheet
Dim Dsh As Worksheet
Dim Esh As Worksheet
Set Ash = ThisWorkbook.Worksheets("設定")
Set Bsh = ThisWorkbook.Worksheets("通知文")
Set Csh = ThisWorkbook.Worksheets("価格改定前見積もり")
Set Dsh = ThisWorkbook.Worksheets("価格改定後見積もり")
Set Esh = ThisWorkbook.Worksheets("覚書")
''''''''''''''''''''''''''ユーザーフォームで入力した値を変数iで取得""""""""""""""""""""""""""""
    i = UserForm1.TextBox1.Value
    ''''''''''''''''''''''''''一覧表から各書類へ情報を転記する""""""""""""""""""""""""""""
    '日付け
    Bsh.Cells(2, 14) = Date
    Bsh.Cells(2, 14).NumberFormatLocal = "ggge年m月d日"
    '自社名①
    Bsh.Cells(4, 17) = Ash.Cells(i + 6, 3)
    Bsh.Cells(4, 17).HorizontalAlignment = xlRight
    Csh.Cells(4, 17) = Ash.Cells(i + 6, 3)
    Csh.Cells(4, 17).HorizontalAlignment = xlRight
    Dsh.Cells(4, 17) = Ash.Cells(i + 6, 3)
    Dsh.Cells(4, 17).HorizontalAlignment = xlRight
    Esh.Cells(37, 11) = Ash.Cells(i + 6, 3)
    Esh.Cells(37, 11).HorizontalAlignment = xlLeft
    '自社名②
    Bsh.Cells(5, 17) = Ash.Cells(i + 6, 4)
    Bsh.Cells(5, 17).HorizontalAlignment = xlRight
    Csh.Cells(5, 17) = Ash.Cells(i + 6, 4)
    Csh.Cells(5, 1).HorizontalAlignment = xlRight
    Dsh.Cells(5, 17) = Ash.Cells(i + 6, 4)
    Dsh.Cells(5, 17).HorizontalAlignment = xlRight
    '郵便番号と住所①
    Bsh.Cells(6, 17) = "住所 〒" & Space(1) & Ash.Cells(i + 6, 5) & Space(2) & Ash.Cells(i + 6, 6)
    Bsh.Cells(6, 17).HorizontalAlignment = xlRight
    Csh.Cells(6, 17) = "住所 〒" & Space(1) & Ash.Cells(i + 6, 5) & Space(2) & Ash.Cells(i + 6, 6)
    Csh.Cells(6, 17).HorizontalAlignment = xlRight
    Dsh.Cells(6, 17) = "住所 〒" & Space(1) & Ash.Cells(i + 6, 5) & Space(2) & Ash.Cells(i + 6, 6)
    Dsh.Cells(6, 17).HorizontalAlignment = xlRight
    Esh.Cells(36, 11) = "〒" & Space(1) & Ash.Cells(i + 6, 5) & Space(2) & Ash.Cells(i + 6, 6) & Ash.Cells(i + 6, 7)
    Esh.Cells(36, 11).HorizontalAlignment = xlLeft
     '住所②
    Bsh.Cells(7, 17) = Ash.Cells(i + 6, 7)
    Bsh.Cells(7, 17).HorizontalAlignment = xlRight
    Csh.Cells(7, 17) = Ash.Cells(i + 6, 7)
    Csh.Cells(7, 17).HorizontalAlignment = xlRight
    Dsh.Cells(7, 17) = Ash.Cells(i + 6, 7)
    Dsh.Cells(7, 17).HorizontalAlignment = xlRight
    '連絡先①
    Bsh.Cells(8, 17) = "連絡先" & Space(2) & Ash.Cells(i + 6, 8)
    Bsh.Cells(8, 17).HorizontalAlignment = xlRight
    Csh.Cells(8, 17) = "連絡先" & Space(2) & Ash.Cells(i + 6, 8)
    Csh.Cells(8, 17).HorizontalAlignment = xlRight
    Dsh.Cells(8, 17) = "連絡先" & Space(2) & Ash.Cells(i + 6, 8)
    Dsh.Cells(8, 17).HorizontalAlignment = xlRight
    '連絡先②
    Bsh.Cells(9, 17) = "FAX" & Space(2) & Ash.Cells(i + 6, 9)
    Bsh.Cells(9, 17).HorizontalAlignment = xlRight
    Csh.Cells(9, 17) = "FAX" & Space(2) & Ash.Cells(i + 6, 9)
    Csh.Cells(9, 17).HorizontalAlignment = xlRight
    Dsh.Cells(9, 17) = "FAX" & Space(2) & Ash.Cells(i + 6, 9)
    Dsh.Cells(9, 17).HorizontalAlignment = xlRight
    If Ash.Cells(i + 6, 11) = "" Then
    '相手会社名①
    Bsh.Cells(4, 1) = Ash.Cells(i + 6, 10) & Space(2) & "御中"
    Bsh.Cells(4, 1).HorizontalAlignment = xlLeft
    Csh.Cells(4, 1) = Ash.Cells(i + 6, 10) & Space(2) & "御中"
    Csh.Cells(4, 1).HorizontalAlignment = xlLeft
    Dsh.Cells(4, 1) = Ash.Cells(i + 6, 10) & Space(2) & "御中"
    Dsh.Cells(4, 1).HorizontalAlignment = xlLeft
    Esh.Cells(32, 11) = Ash.Cells(i + 6, 10)
    Esh.Cells(32, 11).HorizontalAlignment = xlLeft
    Else
    Bsh.Cells(4, 1) = Ash.Cells(i + 6, 10)
    Bsh.Cells(4, 1).HorizontalAlignment = xlLeft
    Bsh.Cells(5, 1) = Ash.Cells(i + 6, 11) & Space(2) & "御中"
    Bsh.Cells(5, 1).HorizontalAlignment = xlLeft
    Csh.Cells(4, 1) = Ash.Cells(i + 6, 10)
    Csh.Cells(4, 1).HorizontalAlignment = xlLeft
    Csh.Cells(5, 1) = Ash.Cells(i + 6, 11) & Space(2) & "御中"
    Csh.Cells(5, 1).HorizontalAlignment = xlLeft
    Dsh.Cells(4, 1) = Ash.Cells(i + 6, 10)
    Dsh.Cells(4, 1).HorizontalAlignment = xlLeft
    Dsh.Cells(5, 1) = Ash.Cells(i + 6, 11) & Space(2) & "御中"
    Dsh.Cells(5, 1).HorizontalAlignment = xlLeft
    Esh.Cells(32, 11) = Ash.Cells(i + 6, 10) & Ash.Cells(i + 6, 11)
    Esh.Cells(32, 11).HorizontalAlignment = xlLeft
    End If
     '相手先郵便番号と住所①
    Bsh.Cells(6, 1) = "住所 〒" & Space(1) & Ash.Cells(i + 6, 12) & Space(2) & Ash.Cells(i + 6, 14)
    Bsh.Cells(6, 1).HorizontalAlignment = xlLeft
    Csh.Cells(6, 1) = "住所 〒" & Space(1) & Ash.Cells(i + 6, 12) & Space(2) & Ash.Cells(i + 6, 14)
    Csh.Cells(6, 1).HorizontalAlignment = xlLeft
    Dsh.Cells(6, 1) = "住所 〒" & Space(1) & Ash.Cells(i + 6, 12) & Space(2) & Ash.Cells(i + 6, 14)
    Dsh.Cells(6, 1).HorizontalAlignment = xlLeft
    Esh.Cells(31, 11) = "〒" & Space(1) & Ash.Cells(i + 6, 12) & Space(2) & Ash.Cells(i + 6, 14) & Ash.Cells(i + 6, 15)
    Esh.Cells(31, 11).HorizontalAlignment = xlLeft
    Bsh.Cells(7, 1) = Ash.Cells(i + 6, 15)
    Bsh.Cells(7, 1).HorizontalAlignment = xlLeft
    Csh.Cells(7, 1) = Ash.Cells(i + 6, 15)
    Csh.Cells(7, 1).HorizontalAlignment = xlLeft
    Dsh.Cells(7, 1) = Ash.Cells(i + 6, 15)
    Dsh.Cells(7, 1).HorizontalAlignment = xlLeft
     '件名
    Bsh.Cells(12, 1) = Ash.Cells(i + 6, 13)
    Bsh.Cells(12, 1).HorizontalAlignment = xlCenter
    Csh.Cells(16, 3) = Ash.Cells(i + 6, 13)
    Csh.Cells(16, 3).HorizontalAlignment = xlLeft
    Dsh.Cells(16, 3) = Ash.Cells(i + 6, 13)
    Dsh.Cells(16, 3).HorizontalAlignment = xlLeft
    Esh.Cells(5, 4) = Ash.Cells(i + 6, 13)
    Esh.Cells(5, 4).HorizontalAlignment = xlLeft
    '添付資料①
    Bsh.Cells(30, 1) = Ash.Cells(i + 6, 16)
    Bsh.Cells(30, 1).HorizontalAlignment = xlCenter
    Esh.Cells(17, 5) = Ash.Cells(i + 6, 16)
    Esh.Cells(17, 5).HorizontalAlignment = xlLeft
    If Esh.Cells(17, 5) <> "" Then
    Esh.Cells(17, 3) = "1"
    Else
    End If
    '添付資料②
    Bsh.Cells(31, 1) = Ash.Cells(i + 6, 17)
    Bsh.Cells(31, 1).HorizontalAlignment = xlCenter
    Esh.Cells(19, 5) = Ash.Cells(i + 6, 17)
    Esh.Cells(19, 5).HorizontalAlignment = xlLeft
    If Esh.Cells(19, 5) <> "" Then
    Esh.Cells(19, 3) = "2"
    Else
    End If
    '添付資料③
    Bsh.Cells(32, 1) = Ash.Cells(i + 6, 18)
    Bsh.Cells(32, 1).HorizontalAlignment = xlCenter
    Esh.Cells(21, 5) = Ash.Cells(i + 6, 18)
    Esh.Cells(21, 5).HorizontalAlignment = xlLeft
    If Esh.Cells(21, 5) <> "" Then
    Esh.Cells(21, 3) = "3"
    Else
    End If
    '請求日
    Csh.Cells(11, 15) = Ash.Cells(i + 6, 19)
    Csh.Cells(11, 15).HorizontalAlignment = xlRight
    Csh.Cells(11, 15).NumberFormatLocal = "ggge年m月d日"
    Dsh.Cells(11, 15) = Ash.Cells(i + 6, 40)
    Dsh.Cells(11, 15).HorizontalAlignment = xlRight
    Dsh.Cells(11, 15).NumberFormatLocal = "ggge年m月d日"
    '品目
    Csh.Cells(22, 1) = Ash.Cells(i + 6, 20)
    Csh.Cells(22, 1).HorizontalAlignment = xlLeft
    Dsh.Cells(22, 1) = Ash.Cells(i + 6, 41)
    Dsh.Cells(22, 1).HorizontalAlignment = xlLeft
    Csh.Cells(23, 1) = Ash.Cells(i + 6, 24)
    Csh.Cells(23, 1).HorizontalAlignment = xlLeft
    Dsh.Cells(23, 1) = Ash.Cells(i + 6, 45)
    Dsh.Cells(23, 1).HorizontalAlignment = xlLeft
    Csh.Cells(24, 1) = Ash.Cells(i + 6, 28)
    Csh.Cells(24, 1).HorizontalAlignment = xlLeft
    Dsh.Cells(24, 1) = Ash.Cells(i + 6, 49)
    Dsh.Cells(24, 1).HorizontalAlignment = xlLeft
    Csh.Cells(25, 1) = Ash.Cells(i + 6, 32)
    Csh.Cells(25, 1).HorizontalAlignment = xlLeft
    Dsh.Cells(25, 1) = Ash.Cells(i + 6, 53)
    Dsh.Cells(25, 1).HorizontalAlignment = xlLeft
    Csh.Cells(26, 1) = Ash.Cells(i + 6, 36)
    Csh.Cells(26, 1).HorizontalAlignment = xlLeft
    Dsh.Cells(26, 1) = Ash.Cells(i + 6, 57)
    Dsh.Cells(26, 1).HorizontalAlignment = xlLeft
    '単価
    Csh.Cells(22, 9) = Ash.Cells(i + 6, 21)
    Csh.Cells(22, 9).HorizontalAlignment = xlLeft
    Csh.Cells(22, 9).NumberFormatLocal = "#,###"
    Dsh.Cells(22, 9) = Ash.Cells(i + 6, 42)
    Dsh.Cells(22, 9).HorizontalAlignment = xlLeft
    Dsh.Cells(22, 9).NumberFormatLocal = "#,###"
    Csh.Cells(23, 9) = Ash.Cells(i + 6, 25)
    Csh.Cells(23, 9).HorizontalAlignment = xlLeft
    Csh.Cells(23, 9).NumberFormatLocal = "#,###"
    Dsh.Cells(23, 9) = Ash.Cells(i + 6, 46)
    Dsh.Cells(23, 9).HorizontalAlignment = xlLeft
    Dsh.Cells(23, 9).NumberFormatLocal = "#,###"
    Csh.Cells(24, 9) = Ash.Cells(i + 6, 29)
    Csh.Cells(24, 9).HorizontalAlignment = xlLeft
    Csh.Cells(24, 9).NumberFormatLocal = "#,###"
    Dsh.Cells(24, 9) = Ash.Cells(i + 6, 50)
    Dsh.Cells(24, 9).HorizontalAlignment = xlLeft
    Dsh.Cells(24, 9).NumberFormatLocal = "#,###"
    Csh.Cells(25, 9) = Ash.Cells(i + 6, 33)
    Csh.Cells(25, 9).HorizontalAlignment = xlLeft
    Csh.Cells(25, 9).NumberFormatLocal = "#,###"
    Dsh.Cells(25, 9) = Ash.Cells(i + 6, 54)
    Dsh.Cells(25, 9).HorizontalAlignment = xlLeft
    Dsh.Cells(25, 9).NumberFormatLocal = "#,###"
    Csh.Cells(26, 9) = Ash.Cells(i + 6, 37)
    Csh.Cells(26, 9).HorizontalAlignment = xlLeft
    Csh.Cells(26, 9).NumberFormatLocal = "#,###"
    Dsh.Cells(26, 9) = Ash.Cells(i + 6, 58)
    Dsh.Cells(26, 9).HorizontalAlignment = xlLeft
    Dsh.Cells(26, 9).NumberFormatLocal = "#,###"
    '数量
    Csh.Cells(22, 12) = Ash.Cells(i + 6, 22)
    Csh.Cells(22, 12).HorizontalAlignment = xlLeft
    Dsh.Cells(22, 12) = Ash.Cells(i + 6, 43)
    Dsh.Cells(22, 12).HorizontalAlignment = xlLeft
    Csh.Cells(23, 12) = Ash.Cells(i + 6, 26)
    Csh.Cells(23, 12).HorizontalAlignment = xlLeft
    Dsh.Cells(23, 12) = Ash.Cells(i + 6, 47)
    Dsh.Cells(23, 12).HorizontalAlignment = xlLeft
    Csh.Cells(24, 12) = Ash.Cells(i + 6, 30)
    Csh.Cells(24, 12).HorizontalAlignment = xlLeft
    Dsh.Cells(24, 12) = Ash.Cells(i + 6, 51)
    Dsh.Cells(24, 12).HorizontalAlignment = xlLeft
    Csh.Cells(25, 12) = Ash.Cells(i + 6, 34)
    Csh.Cells(25, 12).HorizontalAlignment = xlLeft
    Dsh.Cells(25, 12) = Ash.Cells(i + 6, 55)
    Dsh.Cells(25, 12).HorizontalAlignment = xlLeft
    Csh.Cells(26, 12) = Ash.Cells(i + 6, 38)
    Csh.Cells(26, 12).HorizontalAlignment = xlLeft
    Dsh.Cells(26, 12) = Ash.Cells(i + 6, 59)
    Dsh.Cells(26, 12).HorizontalAlignment = xlLeft
    '価格
    Csh.Cells(22, 15) = Csh.Cells(22, 9) * Csh.Cells(22, 12)
    Csh.Cells(22, 15).HorizontalAlignment = xlLeft
    Csh.Cells(22, 15).NumberFormatLocal = "#,###"
    Dsh.Cells(22, 15) = Dsh.Cells(22, 9) * Dsh.Cells(22, 12)
    Dsh.Cells(22, 15).HorizontalAlignment = xlLeft
    Dsh.Cells(22, 15).NumberFormatLocal = "#,###"
    Csh.Cells(23, 15) = Csh.Cells(23, 9) * Csh.Cells(23, 12)
    Csh.Cells(23, 15).HorizontalAlignment = xlLeft
    Csh.Cells(23, 15).NumberFormatLocal = "#,###"
    Dsh.Cells(23, 15) = Dsh.Cells(23, 9) * Dsh.Cells(23, 12)
    Dsh.Cells(23, 15).HorizontalAlignment = xlLeft
    Dsh.Cells(23, 15).NumberFormatLocal = "#,###"
    Csh.Cells(24, 15) = Csh.Cells(24, 9) * Csh.Cells(24, 12)
    Csh.Cells(24, 15).HorizontalAlignment = xlLeft
    Csh.Cells(24, 15).NumberFormatLocal = "#,###"
    Dsh.Cells(24, 15) = Dsh.Cells(24, 9) * Dsh.Cells(24, 12)
    Dsh.Cells(24, 15).HorizontalAlignment = xlLeft
    Dsh.Cells(24, 15).NumberFormatLocal = "#,###"
    Csh.Cells(25, 15) = Csh.Cells(25, 9) * Csh.Cells(25, 12)
    Csh.Cells(25, 15).HorizontalAlignment = xlLeft
    Csh.Cells(25, 15).NumberFormatLocal = "#,###"
    Dsh.Cells(25, 15) = Dsh.Cells(25, 9) * Dsh.Cells(25, 12)
    Dsh.Cells(25, 15).HorizontalAlignment = xlLeft
    Dsh.Cells(25, 15).NumberFormatLocal = "#,###"
    Csh.Cells(26, 15) = Csh.Cells(26, 9) * Csh.Cells(26, 12)
    Csh.Cells(26, 15).HorizontalAlignment = xlLeft
    Csh.Cells(26, 15).NumberFormatLocal = "#,###"
    Dsh.Cells(26, 15) = Dsh.Cells(26, 9) * Dsh.Cells(26, 12)
    Dsh.Cells(26, 15).HorizontalAlignment = xlLeft
    Dsh.Cells(26, 15).NumberFormatLocal = "#,###"
    '小計
    Csh.Cells(28, 12) = Csh.Cells(22, 15) + Csh.Cells(23, 15) + Csh.Cells(24, 15) + Csh.Cells(25, 15) + Csh.Cells(26, 15)
    Csh.Cells(28, 12).HorizontalAlignment = xlLeft
    Csh.Cells(28, 12).NumberFormatLocal = "#,###"
    Dsh.Cells(28, 12) = Dsh.Cells(22, 15) + Dsh.Cells(23, 15) + Dsh.Cells(24, 15) + Dsh.Cells(25, 15) + Dsh.Cells(26, 15)
    Dsh.Cells(28, 12).HorizontalAlignment = xlLeft
    Dsh.Cells(28, 12).NumberFormatLocal = "#,###"
    '消費税
    Csh.Cells(29, 12) = Csh.Cells(28, 12) / 10
    Csh.Cells(29, 12).HorizontalAlignment = xlLeft
    Csh.Cells(29, 12).NumberFormatLocal = "#,###"
    Dsh.Cells(29, 12) = Dsh.Cells(28, 12) / 10
    Dsh.Cells(29, 12).HorizontalAlignment = xlLeft
    Dsh.Cells(29, 12).NumberFormatLocal = "#,###"
    '合計
    Csh.Cells(30, 12) = Csh.Cells(28, 12) + Csh.Cells(29, 12)
    Csh.Cells(30, 12).HorizontalAlignment = xlLeft
    Csh.Cells(30, 12).NumberFormatLocal = "#,###"
    Dsh.Cells(30, 12) = Dsh.Cells(28, 12) + Dsh.Cells(29, 12)
    Dsh.Cells(30, 12).HorizontalAlignment = xlLeft
    Dsh.Cells(30, 12).NumberFormatLocal = "#,###"
    '覚書内容
    Esh.Cells(9, 2) = "表記の件に関しまして、" & Ash.Cells(i + 6, 10) & "(以下「甲」という)と、" & Ash.Cells(i + 6, 3) & "(以下「乙」という)は、以下に記載の事項において合意した。"
    Esh.Cells(9, 2).WrapText = True
    Esh.Cells(9, 2).HorizontalAlignment = xlLeft
    Esh.Cells(27, 13) = Date
    Esh.Cells(27, 13).NumberFormatLocal = "ggge年m月d日"
    Bsh.Select
End Sub

 

 

Module1に記入するサンプルコード(リセットマクロ)


Sub リセット()
''''''''''''''''''''''''''Sheetの区別""""""""""""""""""""""""""""
    Dim Ash As Worksheet
    Dim Bsh As Worksheet
    Dim Csh As Worksheet
    Dim Dsh As Worksheet
    Dim Esh As Worksheet
    Set Ash = ThisWorkbook.Worksheets("設定")
    Set Bsh = ThisWorkbook.Worksheets("通知文")
    Set Csh = ThisWorkbook.Worksheets("価格改定前見積もり")
    Set Dsh = ThisWorkbook.Worksheets("価格改定後見積もり")
    Set Esh = ThisWorkbook.Worksheets("覚書")
 Bsh.Range(Bsh.Cells(2, 14), Bsh.Cells(2, 17)).ClearContents
 For i = 4 To 9
 Bsh.Cells(i, 1).ClearContents
 Bsh.Cells(i, 17).ClearContents
 Csh.Cells(i, 1).ClearContents
 Csh.Cells(i, 17).ClearContents
 Dsh.Cells(i, 1).ClearContents
 Dsh.Cells(i, 17).ClearContents
 Next
Bsh.Range(Bsh.Cells(12, 1), Bsh.Cells(12, 17)).ClearContents
Bsh.Range(Bsh.Cells(30, 1), Bsh.Cells(30, 17)).ClearContents
Bsh.Range(Bsh.Cells(31, 1), Bsh.Cells(31, 17)).ClearContents
Bsh.Range(Bsh.Cells(32, 1), Bsh.Cells(32, 17)).ClearContents
Csh.Range(Csh.Cells(11, 15), Csh.Cells(11, 17)).ClearContents
Dsh.Range(Dsh.Cells(11, 15), Dsh.Cells(11, 17)).ClearContents
Csh.Cells(16, 3).ClearContents
Dsh.Cells(16, 3).ClearContents
For i = 22 To 26
Csh.Cells(i, 1).ClearContents
Dsh.Cells(i, 1).ClearContents
Csh.Range(Csh.Cells(i, 9), Csh.Cells(i, 11)).ClearContents
Dsh.Range(Dsh.Cells(i, 9), Dsh.Cells(i, 11)).ClearContents
Csh.Cells(i, 12).ClearContents
Dsh.Cells(i, 12).ClearContents
Csh.Range(Csh.Cells(i, 15), Csh.Cells(i, 17)).ClearContents
Dsh.Range(Dsh.Cells(i, 15), Dsh.Cells(i, 17)).ClearContents
Next
For i = 28 To 30
Csh.Range(Csh.Cells(i, 12), Csh.Cells(i, 17)).ClearContents
Dsh.Range(Dsh.Cells(i, 12), Dsh.Cells(i, 17)).ClearContents
Next
Esh.Range(Esh.Cells(5, 4), Esh.Cells(6, 16)).ClearContents
Esh.Range(Esh.Cells(9, 2), Esh.Cells(11, 16)).ClearContents
For i = 17 To 21 Step 2
Esh.Cells(i, 3).ClearContents
Esh.Cells(i, 5).ClearContents
Next
Esh.Range(Esh.Cells(27, 13), Esh.Cells(27, 16)).ClearContents
For i = 31 To 38
Esh.Cells(i, 11).ClearContents
Next
End Sub

 

ユーザーフォームの作成

 

コマンドボタンとテキストボックスを作成

 

 

「実行」以外のコマンドボタンは「記入欄表示マクロ」に関するものなので、この記事での説明は省略させていただきます。

 

コマンドボタンにコードを設定

 

 

UserForm1のコマンドボタンに記入するサンプルコード

Private Sub CommandButton1_Click()
Call リセット
Call 転記
End Sub

 

UserForm1を表示させるコード

「設定」シートにユーザーフォームを表示させる方法をご紹介します。

 

Sheet1(設定)にユーザーフォームを表示させるコードを記入

 

 

 

Sheet1(設定)のに記入するサンプルコード

Private Sub WorkSheet_Activate()
UserForm1.Show vbModeless
End Sub

 

以上で「価格改定のお知らせ資料を一括出力するマクロ」の導入が完了です。

手順が少し多くなってしまいましたが、コードはコピペで使い回すことができるので是非挑戦してみてください。

 

関連記事「価格改定書類一括印刷マクロ」では、サンプルとして紹介している価格改定書類作成マクロをダウンロードすることができます。

 

 

実際にマクロを動かして便利さを体感してみてください。

 

まとめ~価格改定書を何枚も作成するならVBAでの自動作成がおすすめ~

宛先、住所、金額だけを変更して同じ書類を何枚も印刷する。

このような作業にはVBAを自動化が必須です。

 

価格改定書マクロには、「お客様情報を一覧管理できる」「過去に出力した価格改定書をすぐに出力できる」「編集ミスが発生しないという大きなメリットがあります。

 

使われているVBAは、「別シートにテキストを転記するマクロ」「セルの表示形式を指定するマクロ」です。

上記で掲載されているサンプルコード業務内容に合わせてアレンジしてみてください。

 

もし「自分の業務に合わせた複雑なチェック処理を実装したい」「既存のマクロを改良したい」といったご要望がありましたら、マメBlogのエクセルマクロ開発依頼にご相談ください。

 

 

業務内容に合わせたオーダーメイドマクロを設定させていただきます。

 

最後まで読んでいただきありがとうございました。