価格改定のお知らせ資料を一括出力するマクロ【使い方と導入方法】
価格改定をお知らせする資料を効率よく作成したい!
こんな要望にお応えするマクロをご紹介します。
マクロを使うと、
資料に必要な情報を一覧表に入力するだけで「価格改定の挨拶文書」「見積書」「覚書」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スキルを身に付ける
VBAの勉強を始める前は上記の方法で効率化マクロを導入していました。
完成されたマクロを使ってエクセル業務を処理する
↓
作業効率が2倍以上アップ!!
↓
便利すぎて自分でもマクロを設定したいと考え始める
↓
参考書やネットの情報でVBAスキルを身に付ける
↓
マクロ開発を代行できる程のスキルを習得
VBAは
他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい
という特徴があります。
毎日のルーティーン作業にうんざりしている、だれでもできる単純作業に時間を費やしている、という方はあなたに合った方法でVBAを導入しちゃいましょう。
マクロの開発を外注に依頼する
マクロの開発を外注に依頼する導入方法は
VBAを全く扱えない方でもエクセル作業を自動化できる最も簡単な方法
です。
「こんなエクセル作業を自動化したい」「作った資料を自動的にPDFで保存したい」「決まった様式に写真を自動で貼り付けたい」
こんな感じで実現したい内容を依頼するだけで業務内容に合ったマクロを開発してくれます。

ガッツポーズの人
デメリットは、費用がかかることだけ。
開発内容、依頼先によってかかる費用は大きく異なります。
私が会社員の頃利用していた業者さんは1マクロあたり2万円~3万円の費用がかかりました。

疑問がある人
ちなみに、マメBlogでもエクセルマクロ開発代行サービスを承っています。
開発内容の確認、VBAコードの設定、動作確認後の調整、など全ての工程を私(マメ父ちゃん)が行っているので、
費用が安い!スピード納期!!
でやらせてもらっています。
ほとんど独学で身に付けたVBAスキルなので、内容によっては開発できないこともあるのでご了承ください。
ご相談、見積もり依頼は完全無料ですので気になる方は下記のリンクよりお問合せ下さい。
マクロが設定されたエクセルファイルをダウンロードする
VBA初心者でも『マクロが設定されたエクセルファイルをダウンロード』ですぐにエクセル作業を自動化することができます。
たとえば、
A4用紙に写真を貼り付けてコメントを入力する作業を自動化したい!という場合、
『写真を貼り付けるマクロ』が設定されたエクセルファイルをダウンロードすれば問題解決です。
実際に、『写真を貼り付けるマクロ』をダウンロードして使っている様子がこちら

ガッツポーズの人
『マクロが設定されたエクセルファイルをダウンロード』する導入方法は、
VBA初心者でもマクロを導入できる、費用が安い、
というメリットがあります。
しかし
VBAに関する情報が多く公開されているとはいえ、ネット上で想定するマクロは見つけることが難しい
というデメリットもあります。

ガッツポーズの人
個人ブログやファイルを販売できるサイト「note」や「Tips」ではいろんなマクロの情報が掲載されているので是非参考にしてみてください。
今までマメBlogで受注した効率化マクロを下記のnoteで掲載していますので併せてチェックしてみてください。
参考書やネットでVBAスキルを身に付ける
先程も紹介しましたが、
VBAは他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい
プログラミングです。
言い換えると、
情報量が豊富なので自分で勉強できちゃう
ということです。
私のVBAスキルはほとんど独学で身に付けたもので、
考えた処理のほとんどをVBAで表現できるレベルにまで到達した!
と思っています。
私の作ったマクロをプロのプログラマーが見れば、
お前の書くコードはインチキだ!「変数の宣言」とか「引数」を正しく使えよ!!
と感じるはずです。
でも、
私からすればどうでもいい!!!想定した内容を正しく処理できればよくないですか!?
独学であっても『写真を貼り付けるマクロ』『全てのシートをPDF出力するマクロ』『連番を振るマクロ』など、
業務内容に合ったマクロを開発できるようになれます。
独学でVBAスキルを身に付けるコツは、
エラーが発生してもいいからひたすらコードを書く、なんでもいいからエクセル作業をマクロ化してみる
です。
とは言っても、全くの知識0の方は何をすればいいかわからないですよね。
VBA知識0の初心者の方は、参考書『たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】』を読んでみてください。
VBAの知識0の方でもすいすい読み進められる内容になっています。
やさしい内容にも関わらず「え!!VBAを使えばこんなことできるの!?」と感動すると思います。
実際に私はこの参考書を読んでからVBAの勉強を始めました。

ひらめく人
VBAの魅力を発見した後は、
ひたすら自動化したい処理を実現するコードを書くだけ
です。
【VBA 写真を貼る】、【VBA PDF出力】、のようにネット検索すれば知りたいコードをすぐにゲットできます。
実現したい処理に向かって、「調べる→書いてみる→エラーを改善する→調べる」を繰り返していると
自然といろんなマクロが作れるようになっているはずです。
VBAに興味が湧いてきたという方は今からVBA学習をスタートさせちゃいましょう。
価格改定のお知らせ資料を一括出力するマクロのダウンロード
下記のサイトでは、この記事で紹介している「価格改定のお知らせ資料を一括出力するマクロ」をダウンロードしてお使いいただくことが可能です。
使い方は、
資料に必要な情報を記入後、出力したい番号を入力して実行ボタンを押下する
たったこれだけです。
めちゃくちゃシンプルで使いやすいマクロになっているので是非お試しください。
業務内容に合った様式に変更してマクロを使いたい!こんな機能を追加してより便利にしたい!
など質問、要望があればお気軽にお問合せください。
ディスカッション
コメント一覧
まだ、コメントがありません