アフィリエイト広告を利用しています
G-B2H5YFC4DJ
メール下書き作成
ファイルの名前を一括変更
プログレスバー
文字取り消し線の削除(制限あり)
キーでスクショを連続取得
シート名を一括変更
プロフィール
Dr.ワークさんの画像
Dr.ワーク
主に開発に関するブログです
プロフィール

広告

posted by fanblog

2022年02月20日

メール下書き

01_title.jpg

会社で使うExcel。いつの間にかExcelのために仕事をさせられていませんか?

Excelを使い倒して、仕事を楽にするツールにしちゃいましょう

この記事は、VBAを駆使して、ExcelとOutlookを連携した自動化ツールの紹介です

目次
VBAのマクロで効率化したい作業
02_before.jpg
Outlookメールの業務報告をエクセルで自動化したい

定期的な業務報告をメールで送信することは多いかと思います。

業務報告はある程度定型的な形があって、あるパーツのみ更新すれば良いのですが、

メール送信の段階で、前日と同じメールの宛先、日付だけ変わる件名、不用意にいじれない型の部分など、

業務報告とは別の部分で時間を取られてしまうことがあります。

ここで紹介するマクロは、変わらない部分はマクロで処理する、というものです。

なお、OutlookのVBAを使って定型化する方法もありますが、エクセルのほうが、

前日の業務報告と比較しやすい、進捗度合いなどの際、計算式が使えるなどのメリットがあります

どんな効果?
03_merit.jpg
  • 前日のメールを全返信して下書きメールを作成する(★ここを改善)
  • 下書きメールのタイトルを本日に修正する(★ここを改善)
  • 下書きメールの全文を削除して、また前日のメール本文をコピペして、本日変わったところを修正(★少し改善)
マクロ

'---------------------------------------------------------------------------------------------------
'
' マクロ: 業務報告のメールを作成します
'
'---------------------------------------------------------------------------------------------------
Option Explicit

'---------------------------------------------------------------------------------------------------
' 初期設定
'          ★mailHeadTemp、mailTo、mailCcを適時修正してください
'          ★YYYY/MM/DDはそのままで
'---------------------------------------------------------------------------------------------------

'--- メールタイトル
Public Const mailHeadTemp As String = "[●●部]業務報告書(△△氏名)YYYY/MM/DD"

'--- メール宛先(To)
Public Const mailTo As String = "aaa@ xxx.co.jp; bbb@ xxx.co.jp; ccc@ xxx.co.jp"

'--- メール宛先(Cc)
Public Const mailCc As String = "ddd@xxx.co.jp; eee@xxx.co.jp; fff@xxx.co.jp"

'---------------------------------------------------------------------------------------------------
' 概要: メールを作成します
'
' 前提: 初期設定は修正済み
' 入力: makeMailマクロを実行
' 出力: Outlookのメール下書きが表示されます
'
' 制限: 下書きメールを送信するときに、次の制限があります
'       Outlookは起動しておいてください。Outlookのメール下書きのみを送信しても、
'       Outlook自体を起動するまでは送信されません
'---------------------------------------------------------------------------------------------------
Sub makeMail()
    '★★★コンパイルエラー:ユーザ定義型は定義されていません。
    '★★★が表示されたら、参照設定してください
    Dim dmyOutlook As Outlook.Application
    '★VBEを表示して、[ツール]メニュー−[参照設定]をクリックします。
    '★表示された[参照設定 - VBAProject]の[参照可能なライブラリ ファイル]の一覧より、
    '★[Microsoft Outlook 1x.0 Object Library]のチェック ボックスをオンにします。


    'メールタイトルを設定します
    Dim mailTitle As String
    Dim todayStr As String
    
    todayStr = Format(Date, "yyyy/mm/dd")
    mailTitle = Replace(mailHeadTemp, "YYYY/MM/DD", todayStr)


    'メール宛先を設定します
    Dim mailToStr As String
    Dim mailCcStr As String
    
    mailToStr = mailTo
    mailCcStr = mailCc


    'A列からメール本文を取得します
    Dim mailBody As String
    Dim i As Long
    
    mailBody = ""
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).row
        mailBody = mailBody & Cells(i, 1) & vbCrLf
    Next i


    'メール下書きを作成します
    Dim appOutlook As Outlook.Application
    Dim itemApp As Outlook.MailItem
    
    Set appOutlook = New Outlook.Application
    Set itemApp = appOutlook.CreateItem(olMailItem)

    With itemApp
        .Subject = mailTitle
        .To = mailToStr
        .Cc = mailCcStr
        .Body = mailBody
    End With

End Sub
マクロの使い方
05_useful.jpg

マクロは、コード内の初期設定の部分を修正して、エクセルに組み込んでください マクロはエクセルのA列に記載している文字列を、メールの本文として出力します メールタイトルと宛先は、マクロの初期設定で指定した文字列が記載されます
※マクロの組み込み方について
@メニューの[開発]から[Visual Basic]を選択します。もし[開発]がない場合は、Alt+F11を押してください
20220220_IconEdit.JPG
AMicrosoft Visual Basic for Applicationsの画面が出ますので、メニューの[挿入]から[標準モジュール]を選択してください
20220220_MenuInsert.jpg
左側のプロジェクトに標準モジュールと下のほうにModule1が出来たかと思います
20220220_SideWindow.JPG
Bマクロをコピペで貼り付けてください
20220220_Code.JPG
Cエクセルをマクロ実行形式で保存します。名前を付けて保存を選択して、
下のほうに出る「ファイルの種類」で[Excelマクロ有効ブック(*.xlsm)]を選択してください
20220220_SelectXlsm.JPG

※マクロの実行方法について
@業務報告をA列に記載してください。
Aメニューの[開発]から[マクロ]を選択します。[開発]がない場合は、Alt+F8を押してください
20220220_IconMacro.JPG
Bマクロ名が出ますので、[makeMail]を選択して、[実行]ボタンを押してください
20220220_ExeMacro.JPG

サンプル
06_sample.jpg

想定している使い方のサンプルです

@マクロを組み込んだエクセルのA列に業務報告を書きます(最初は全部必要です。2回目以降が楽)

例えば、A列に次のような日報を書きます。例ではありますが、何となく「ここは修正しないでいい箇所かな」と思う点はあるかと思います。


●●課長

お疲れさまです。△△氏名です。

本日の業務内容を、下記のとおり報告いたします。

【本日目標と成果】
  〇〇要求定義書の開発(基本設計書〜コーディング) → 完了

【問題点】
  特にありません

【作業結果】
  09:00 朝礼、本日の作業計画確認
  09:30 メールチェック、作業準備、手順確認
  10:00 基本設計書作成
  11:00 レビュー、指摘の修正、承認依頼
  12:00 休憩
  13:00 詳細設計書作成
  14:00 レビュー、指摘の修正、承認依頼
  15:00 コーディング
  16:00 レビュー、指摘の修正、承認依頼
  17:00 テストケース作成
  18:00 退社

以上、よろしくお願いします。

A[makeMail]のマクロを実行します

BOutlookのメール下書きが表示されるので、メールを送信します

以上となります。
posted by Dr.ワーク at 13:51 | Comment(0) | TrackBack(0) | VBA
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/11269783
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
×

この広告は30日以上新しい記事の更新がないブログに表示されております。