エクセルVBAでつくる物品購入稟議書テンプレート

buppinringieyecatch

今回は物品購入の稟議書をエクセルVBAで作成します。
作成するのに十分な検討が必要な書類でも、ササッと書ける部分はVBAを使って手早く仕上げてしまいましょう。

こんにちは じゅんぱ店長 (@junpa33) です。

業務の中で非常によく使うものに「書類作成のテンプレート」があります。

今回は、物品購入の稟議書をエクセルVBAを使った「書類のテンプレート」として作ります。

別記事では物品購入申請書を作成していますので、その上の上級長への提出バージョンの書類になります。

物品購入稟議書のVBAテンプレート

buppinringisyop002

テンプレートとしては、主にWordとExcelで作成されたものが多いですが、今回はExcelで作成をします。

エクセルで作成する場合でも、ほとんどがエクセルシート上に作られたものが多いです。

そして、ほとんどの方々が「エクセルのテンプレート」なら問題なく説明いらずで使用できると思います。

ここまでは、今までからの普通のことです。

buppinringisyo001

今回作成するエクセルのテンプレートは、エクセルシート上には何も手を加えません。全くデフォルトのシート状態のままです。

エクセルのVBAコードを使って、コード上でテンプレートを作成しています。

そのコードを実行することで初めてエクセルシート上にテンプレートが出現します。

これはつまり、エクセルファイルに埋め込まれたVBAコードが壊れない限りは、

同じテンプレートが何回でも作成できるということです。

出現したテンプレートをどのように加工しても、次にテンプレートを作成したときには、元のテンプレートには何の影響もあたえていません。

テンプレートをエクセルVBAで作るメリットとデメリット

テンプレートをエクセルVBAで作る時には、やはりメリットとデメリットがあります。

使い方にもよりますが、利用頻度の多いテンプレートの場合は、メリットの方が大きくなるでしょう。

メリット

  1. テンプレートを入手するために、掲示サイトからダウンロードする必要がない。A4用紙1枚ほどのテンプレートなら掲示サイトのVBAコードをコピーペーストで入手可能。
  2. 何回でも原紙を生成できるので、作成されたテンプレートを最初に原紙としてそのまま保存する必要がない。
  3. 原紙保存を気にせず、作成されたテンプレートに直接記入加工修正して使用することが出来る。
  4. テンプレートのエクセルファイルとして保管できるだけではなく、エクセルのデータファイルの中にテンプレート作成VBAを埋め込むことで、データとテンプレートの一括ファイル管理が可能になる。
  5. VBAプログラムコードだけなら、軽量のテキストファイルで保存可能。
  6. さらにVBAを利用すればテンプレート作成だけでなく、データリンク(別エクセルファイルからも)入力も行える。

デメリット

  1. プログラム言語アレルギーのある人には多少なりとも厳しいかも(?)
  2.  最初のVBAコードのコピーペーストが出来れば、後は放置で利用できますが、名称や見出し項目変更をデフォルトで行いたい時は、ごく簡単ですがVBAコードをいじる必要がある。
  3. エクセルVBA入門程度の知識はあった方が良い。

エクセルVBAのテンプレートコード

テンプレートの全コードはこちらです。

このコードを、エクセルのVBE(ビジュアルベーシックエディタ)で標準モジュールに張り付けてください。

vbacopipeeyecatch Webで見つけたマクロをコピペで使う

貼り付け後、「Alt+F8」で「マクロの表示」から「物品購入稟議Temp」を選択して実行します。

HTML
Option Explicit
Sub 物品購入稟議Temp()
    Dim s As Long
    Dim MbBn As Long
        For s = 1 To Worksheets.Count
            If Worksheets(s).Name = "物品購入稟議書" Then
                MbBn = MsgBox("テンプレートシートは存在します。" & vbCrLf & _
                "今あるテンプレートシートをリネームしてください。" & vbCrLf & _
                "リネームするなら「YES」、上書きするなら「NO」を選択してください。" _
                , vbYesNo + vbExclamation, "入力問合せ")
                Exit For
            End If
        Next s
        If MbBn = vbYes Then
            Exit Sub
        ElseIf MbBn = vbNo Then
            Call シートクリア
        Else
            Call テンプレシート挿入
        End If
        Call ページ設定
        Call セルサイズ
        Call セルの書式設定
        Call セル入力項目
        Call 罫線A
        Range("A1").Select
        MsgBox "テンプレートを作成しました。"
End Sub

Sub シートクリア()
        With Worksheets("物品購入稟議書").Cells
            .Clear
            .UseStandardHeight = True
            .UseStandardWidth = True
        '    .DrawingObjects.Delete  'データ印等をクリアするときに
        End With
End Sub

Sub テンプレシート挿入()
        ThisWorkbook.Worksheets.Add(before:=Worksheets(1)).Name = "物品購入稟議書"
End Sub

Sub ページ設定()
'余白
        With ActiveSheet.PageSetup
            .PaperSize = xlPaperA4
            .Orientation = xlPortrait
            .LeftMargin = Application.CentimetersToPoints(2)
            .RightMargin = Application.CentimetersToPoints(1.5)
            .TopMargin = Application.CentimetersToPoints(2)
            .BottomMargin = Application.CentimetersToPoints(1.5)
        End With
'フォント
        With Cells.Font
                .Name = "メイリオ"
                .Size = 12
        End With
End Sub


Sub セルサイズ()
    Dim i As Integer
        With Cells
            .RowHeight = 18.75
            .Columns(1).ColumnWidth = 12.5
            .Columns(9).ColumnWidth = 12.75
        End With
        
        With Range("A1:I43")
            Union(.Rows(8), .Rows("11:13"), .Rows(15)).Merge
        End With
        
        For i = 1 To 42
            If i = 1 Then
                Range(Cells(i, 8), Cells(i, 9)).Merge
            ElseIf i > 17 And i < 30 Then
                Range(Cells(i, 2), Cells(i, 4)).Merge
                Range(Cells(i, 6), Cells(i, 7)).Merge
                Range(Cells(i, 8), Cells(i, 9)).Merge
                If i = 18 Then Range("B18:H18").Interior.ColorIndex = 15
            ElseIf i = 31 Then
                Range(Cells(i, 2), Cells(i + 1, 9)).Merge
            ElseIf i = 34 Then
                Range(Cells(i, 2), Cells(i + 3, 9)).Merge
            ElseIf i > 38 Then
                Range(Cells(i, 2), Cells(i, 9)).Merge
            End If
        Next i
End Sub


Sub セルの書式設定()
        Range("H1").NumberFormatLocal = "ggge年mm月dd日"
        With Range("A8")
            .HorizontalAlignment = xlCenter
            .Font.Bold = True
            .Font.Size = 15
        End With
        Union(Range("A15"), Range("B18"), Range("E18"), Range("F18"), _
        Range("H18"), Range("B29")).Select
        With Selection
            .HorizontalAlignment = xlCenter
            .Font.Bold = True
        End With
End Sub

Sub セル入力項目()
        Range("H1") = Date
        Range("A4") = "■■部長 ○○ ○○ 様"
        Range("G5") = "外商部販売2課  ○○ ○○"
        Range("A8") = "×××            取り替え購入について"
        Range("A11") = "受注業務の効率改善を図るためにも下記事項のご検討をよろしくお願いいたします。"
        Range("A15") = "記"
        Range("A17") = "購入希望物品"
        Range("B18") = "品番・品名"
        Range("E18") = "数量"
        Range("F18") = "単価"
        Range("H18") = "予定金額"
        Range("B29") = "合計"
        Range("H29") = "=Sum(H19:H28)"
        Range("A31") = "予定購入先"
        Range("A34") = "申請理由と"
        Range("A35") = "予測効果"
        Range("A39") = "添付資料"
        Range("B39") = "申請理由を補強するデータ資料"
        Range("B40") = "購入見積書"
        Range("B41") = "商品カタログ"
        Range("I43") = "以上"
End Sub

Sub 罫線A()
        With Range("B18:I29")
            .Borders.LineStyle = xlContinuous
            .BorderAround LineStyle:=xlContinuous, Weight:=xlMedium
        End With
        With Range("E29")
            .Borders(xlEdgeLeft).LineStyle = False
            .Borders(xlEdgeRight).LineStyle = False
        End With
End Sub

個別の部品プロシージャー機能説明については、

buppinsinseieyecatch エクセルVBAでつくる物品購入申請書テンプレート

を参考にしてください。

フローティングボタンを設置すれば、1クリックでプログラム実行をすることも出来ます。

commandbuttoneyecatch マクロの実行を1クリックで!フローティングボタンをユーザーフォームで作る

物品購入稟議書をVBAテンプレートで作る まとめ

buppinringisyop003

稟議書は、申請書以上に言葉を厳選して書かなければいけない書類です。

審議に通らなければ、自分がやろうとしているテーマ・プロジェクトにも少なからず影響が出ることは必定です。

ですので、書類作成にあまり頭を使わなくてよい部分は「ササッと」作れる方法を考えておきたいです。

エクセルVBAテンプレートでササッとやっておきましょう。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。