広告

電帳法対応!Excelで作成した請求書をOutlookのメールに一瞬で添付できる(サンプルあり〼)|Excel活用術

2025年8月25日

メールってめんどくさい

突然ですけど、メールを打つのってめんどくさくないですか。
特にExcelで作った請求書を保存して⇒メールに添付して⇒文章打って…
毎日やる作業だったらめんどくさいし、たまにやる作業でもめんどくさい。やりたくない。
だから私はボタン一つでなんとかさせます。任せてください!!
テンプレは↓↓↓からダウンロード

電子帳簿保存法対応!
請求書を作成~メールに添付するまでを一発でやっちゃうか

弊社では電子帳簿保存法に対応するため、システムを入れ……ません!
とのことだったので、請求書をExcelで作成してメールにつけて送ることになりまーす!えー!!!めんどくさい!!!
で、作ってみたのが↑上に貼ってあるテンプレです。経理部でめちゃ感謝されました。

シートの説明

Master シート

請求書のMasterのシートです。
このシートを使いますので、右側を自社の情報に替えておいてください。

メール文面 シート

送付メールの設定シートです。
こちらに入力した内容がまるまるメールになります。
相手先名/請求書No.はMasterの内容が自動で入るようになっています。

使い方

請求書を作る

請求書の内容を変更する

①請求書かどうか
 ここに入っている文字がメールの件名とPDFの名前に入ります。
 実は見積書にすれば見積書ができます(笑)
 (その場合、文面と「請求金額」を「見積金額」に変更してくださいね)
②相手の会社名などを入力する
 会社名がPDFの名前に入ります。
③請求書No.と請求日を入力する
 請求書No.はメールの件名に入ります。
 請求日はPDFの名前に入ります。
④請求書の内容を入力する
 請求金額がPDFの名前に入ります。

メール文面を変更する

デフォルトのメールから文章を変更する場合は変更してください。
宛先・CC・BCCのメールアドレスも確認してください。

メールを作成ボタンを押す

ポチっとな

Outlookでメールができます。
請求書はPDFで添付されています。

VBAのコード

Sub 請求書をメールにつけて送る()

    Dim thiswb As Workbook, thatwb As Workbook
    Dim wsActive As Worksheet, mailws As Worksheet
    Dim olApp As Object
    Dim olMail As Object
    Dim mailTo As String, mailCC As String, mailBCC As String, mailsbjct As String
    Dim mailBody As String
    Dim lastRow As Long, i As Long
    Dim tempFol As String, Pt As String

    Set thiswb = ThisWorkbook

    ' シートの設定 ==========================================
    Set mailws = thiswb.Worksheets("メール文面")
    Set wsActive = thiswb.ActiveSheet

    ' メールの設定 ==========================================
    With mailws
        mailTo = .Cells(1, 2).Value ' 送付先メアド
        mailCC = .Cells(2, 2).Value ' CCメアド
        mailBCC = .Cells(3, 2).Value ' BCCメアド
        mailsbjct = .Cells(4, 2).Value ' 件名

        ' 本文を結合
        lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
        mailBody = ""
        For i = 5 To lastRow
            mailBody = mailBody & .Cells(i, 2).Value & vbCrLf
        Next i
    End With

    ' 一時保存パスを取得してPDFとして保存 =====================
    tempFol = Environ("TEMP") & "\"
      '↑保存したいフォルダに変更してもよい
    Pt = tempFol & Format(wsActive.Cells(2, 7).Value, "yyyymmdd") & "_" & wsActive.Cells(4, 1).Value & "御中_" & wsActive.Cells(10, 3).Value & "_" & wsActive.Cells(1, 1).Value & ".pdf"
      'ファイル名(年月日_会社名_金額_書類の種類)
    wsActive.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Pt, Quality:=xlQualityStandard

    ' メールを作成 ==========================================
    Set olApp = CreateObject("Outlook.Application")
    Set olMail = olApp.CreateItem(0)

    With olMail
        .To = mailTo
        .CC = mailCC
        .BCC = mailBCC
        .Subject = mailsbjct
        .Body = mailBody
        .Attachments.Add Pt
        .Display ' メールを表示
    End With

    ' 解放 ==================================================
    Set olMail = Nothing
    Set olApp = Nothing

End Sub

こんな感じとなっております。
PDFを特定のフォルダに保存したい場合は

tempFol = Environ("TEMP") & "\"

部分のEnviron(“TEMP")を保管場所のパスに変更してください~

まとめ:請求書作成+メール作成をセットにして効率アップ!

時間も手間も削減!

請求書を作ってメールに貼り付けて送付するなんてシステムでやりたいところですが…(笑)
対応してない中小企業さんも多いと思い作ってみました。
他にもこんな機能があったらいいな~なんてご意見いただければ幸いです~

VBAを体系的に学びたい方は、以下の教材もおすすめです。

効率化を目指すも何していいかわからない方!!VBAを勉強すると普段使っているExcelがめちゃくちゃ便利になります。

・独学で圧倒的効率化めざしてるならこれ

・Udemyの講座なら気軽に受講できていいですよ!!

【マクロで自動化】大量の Excel シート、ファイルを作成&集計する VBA マスターコース