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加载插件

相关推荐
专注VB编程开发20年1 天前
VBA 宏录制的独特优势及替代方案
自动化·vba
怣疯knight2 天前
微软outlook邮箱被封后如何解决和原因
windows·outlook
林月明5 天前
【VBA】点击一个按钮实现自动更新excel文件列数据
excel·vba·宏文件·一键数据更新
Access开发易登软件12 天前
Access 数据可视化:如何制作箱形图
前端·数据库·vba·access·access开发
課代表16 天前
Excel VBA 为数据赋予随机浅色标记
excel·vba·可视化·条件格式·标记·对比·随机
亚历山大海17 天前
PHP发送outlook(微软)OAuth 2.0企业版邮箱验证码
开发语言·php·outlook
无敌的黑星星18 天前
office 批量word转pdf
pdf·word·vba
Ankie Wan19 天前
outlook:增加键盘快捷键 alt-3 在任务 或者 其他文件夹 查找相关邮件
outlook·键盘·快捷键·右键·邮件
Access开发易登软件24 天前
Access开发实战:绘制漏斗图实现业务转化分析
数据库·信息可视化·html·vba·图表·access
取啥都被占用1 个月前
VBA的excel逐行替换到word模板及打印还原
excel·vba