VBA Outlook中定长邮件内容

1. 定长内容编码

1-1. 在Outlook应用中按下Alt+F11,打开VBE编辑器,如下图:

1-2. 在ThisOutlookSession模块中添加如下代码:

vbscript 复制代码
Const TOOLBAR_NAME As String = "Daliy Report"

'-----------------------------------------
' 当Outlook启动时会自动运行此宏
'-----------------------------------------
Private Sub Application_Startup()
    ' 调用添加按钮的函数
    AddCustomButton
End Sub

'-----------------------------------------
' 当 Outlook 关闭时会自动运行此宏,用于清理
'-----------------------------------------
Private Sub Application_Quit()
    '调用移除按钮的函数
    RemoveCustomButton
End Sub

'-----------------------------------------
' 移除自定义按钮的函数
'-----------------------------------------
Sub RemoveCustomButton()
    On Error Resume Next
    '删除我们创建的工具栏
    Application.ActiveExplorer.CommandBars(TOOLBAR_NAME).Delete
    On Error GoTo 0
End Sub

'-----------------------------------------
' 添加自定义按钮的函数
'-----------------------------------------
Sub AddCustomButton()
    Dim cb As Office.CommandBar
    Dim btn As Office.CommandBarButton
    Dim customToolbarName As String

    '自定义的工具栏名称
    customToolbarName = TOOLBAR_NAME

    On Error Resume Next
    '先尝试删除旧的,防止重复添加
    Application.ActiveExplorer.CommandBars(customToolbarName).Delete
    On Error GoTo 0

    '在主窗口(Explorer)的 CommandBars 集合中添加一个新的工具栏
    Set cb = Application.ActiveExplorer.CommandBars.Add(Name:=customToolbarName, Position:=msoBarBottom, Temporary:=True)
    '在新的工具栏上添加一个按钮
    Set btn = cb.Controls.Add(Type:=msoControlButton)
    With btn
        '设置按钮上显示的文字
        .Caption = "業務開始"
        '设置按钮图标
        .FaceId = 351 '71
        '显示图标和文字
        .Style = msoButtonIconAndCaption
        '指定点击按钮时要运行的宏的名称
        .OnAction = "OnBench.DailyReport.StartWorkAction"
    End With
    Set btn = cb.Controls.Add(Type:=msoControlButton)
    With btn
        .Caption = "休憩開始"
        .FaceId = 352 '72
        .Style = msoButtonIconAndCaption
        .OnAction = "OnBench.DailyReport.StartBreakAction"
    End With
    Set btn = cb.Controls.Add(Type:=msoControlButton)
    With btn
        .Caption = "休憩終了"
        .FaceId = 341 '73
        .Style = msoButtonIconAndCaption
        .OnAction = "OnBench.DailyReport.EndBreakAction"
    End With
    Set btn = cb.Controls.Add(Type:=msoControlButton)
    With btn
        .Caption = "業務終了"
        .FaceId = 342 '74
        .Style = msoButtonIconAndCaption
        .OnAction = "OnBench.DailyReport.EndWorkAction"
    End With

    '使工具栏可见
    cb.Visible = True
    '释放对象变量
    Set btn = Nothing
    Set cb = Nothing
End Sub

1-3. 在DailyReport模块中添加如下代码:

vbscript 复制代码
Const MAIL_SALUTATION As String = "○○さん"                             '宛名
Const MAIL_GREETING As String = "お疲れ様です。○○○です。"               '挨拶
Const MAIL_SIGNOFF As String = "以上です、よろしくお願いいたします。"  '結び
Const MAIL_FONT_NAME As String = "Meiryo UI"
Const MAIL_FONT_SIZE As Integer = 10

'---------------------------------------
'①業務開始
'---------------------------------------
Public Sub StartWorkAction()
    Dim mail As Outlook.MailItem
    Dim mailBody As String
    
    mailBody = MAIL_SALUTATION & "<br><br>"
    mailBody = mailBody & MAIL_GREETING & "<br><br>"
    mailBody = mailBody & "業務開始" & "<br>"
    mailBody = mailBody & MAIL_SIGNOFF & "<br>"
    
    Set mail = Application.CreateItem(olMailItem)
    With mail
       .Subject = "【勤怠報告】○○○_" & Format(Now(), "MM/DD")
       .To = "abc@test.com"
       .HTMLBody = "<html lang='ja'><body>" & _
                   "<p style='font-family:" & MAIL_FONT_NAME & "; font-size:" & MAIL_FONT_SIZE & "pt;'>" & _
                   mailBody & _
                   "</p>" & _
                   "</body></html>"
       .Display
    End With
    
    Set mail = Nothing

End Sub

'---------------------------------------
'②休憩開始
'---------------------------------------
Public Sub StartBreakAction()
    Dim mail As Outlook.MailItem
    Dim mailBody As String
    
    mailBody = MAIL_SALUTATION & "<br><br>"
    mailBody = mailBody & MAIL_GREETING & "<br><br>"
    mailBody = mailBody & "休憩開始" & "<br><br>"
    mailBody = mailBody & MAIL_SIGNOFF & "<br>"
    
    Set mail = Application.CreateItem(olMailItem)
    With mail
       .Subject = "【勤怠報告】○○○_" & Format(Now(), "MM/DD")
       .To = "abc@test.com"
       .HTMLBody = "<html lang='ja'><body>" & _
                   "<p style='font-family:" & MAIL_FONT_NAME & "; font-size:" & MAIL_FONT_SIZE & "pt;'>" & _
                   mailBody & _
                   "</p>" & _
                   "</body></html>"
       .Display
    End With
    
    Set mail = Nothing

End Sub

'---------------------------------------
'③休憩終了
'---------------------------------------
Public Sub EndBreakAction()
    Dim mail As Outlook.MailItem
    Dim mailBody As String
    
    mailBody = MAIL_SALUTATION & "<br><br>"
    mailBody = mailBody & MAIL_GREETING & "<br><br>"
    mailBody = mailBody & "休憩終了" & "<br><br>"
    mailBody = mailBody & MAIL_SIGNOFF & "<br>"
    
    Set mail = Application.CreateItem(olMailItem)
    With mail
       .Subject = "【勤怠報告】○○○_" & Format(Now(), "MM/DD")
       .To = "abc@test.com"
       .HTMLBody = "<html lang='ja'><body>" & _
                   "<p style='font-family:" & MAIL_FONT_NAME & "; font-size:" & MAIL_FONT_SIZE & "pt;'>" & _
                   mailBody & _
                   "</p>" & _
                   "</body></html>"
       .Display
    End With
    
    Set mail = Nothing

End Sub

'---------------------------------------
'④業務終了
'---------------------------------------
Public Sub EndWorkAction()
    Dim mail As Outlook.MailItem
    Dim mailBody As String
    
    mailBody = MAIL_SALUTATION & "<br><br>"
    mailBody = mailBody & MAIL_GREETING & "<br><br>"
    mailBody = mailBody & "業務終了" & "<br>"
    mailBody = mailBody & MAIL_SIGNOFF & "<br>"
    
    Set mail = Application.CreateItem(olMailItem)
    With mail
       .Subject = "【勤怠報告】○○○_" & Format(Now(), "MM/DD")
       .To = "abc@test.com"
       .HTMLBody = "<html lang='ja'><body>" & _
                   "<p style='font-family:" & MAIL_FONT_NAME & "; font-size:" & MAIL_FONT_SIZE & "pt;'>" & _
                   mailBody & _
                   "</p>" & _
                   "</body></html>"
       .Display
    End With
    
    Set mail = Nothing

End Sub

2. 重新打开Outlook加载插件

相关推荐
Access开发易登软件9 小时前
Access 中实现 Web 风格的顶部加载进度条
前端·数据库·vba·access·access开发
LAM LAB4 天前
【VBA/ppt】设置选中字体为红色
powerpoint·vba·wps
零零发聊技术4 天前
Excel实现数字与列标之间的转换
excel·vba·office
Access开发易登软件6 天前
Access 连接 SQL Server:直通查询 vs 链接表 vs ADO,如何选择?
前端·数据库·vba·access·access开发
零零发聊技术7 天前
深度详解VBA+SQL从基础融合到实战应用
sql·vba
零零发聊技术9 天前
聊聊怎样有效学习VBA+SQL?
sql·vba
零零发聊技术10 天前
VBA调用sql语句时不要显示密码
sql·vba
Access开发易登软件13 天前
数据处理中的两大基石:何时选择Excel,何时考虑Access
数据库·信息可视化·excel·vba·access
专注VB编程开发20年18 天前
EDGE估计没有switch到frame的做法
前端·edge·vba
Access开发易登软件19 天前
Access自动生成PPT报告完全指南
数据库·powerpoint·vba·vb·access·access开发