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

相关推荐
YJlio1 天前
OneDrive 如何共享文件并设置访问权限?手把手教你授权成员、复制链接与安全分享
安全·outlook·onedrive·windows部署·eixv3·pe装机·es5封装
Jacky-0084 天前
Python pywin32 outlook邮箱
开发语言·python·outlook
YJlio13 天前
2026年4月18日60秒读懂世界:从神舟二十号出舱到L2新国标公示,今天最值得关注的6个信号
windows·python·django·计算机外设·电脑·outlook·eixv3
yanlaifan14 天前
outlook设置新建邮件和回复邮件的默认文本字体格式
outlook
weitingfu18 天前
Excel VBA 入门到精通(十):实战项目——自动化报表系统开发
ai·信息可视化·自动化·excel·vba·office·报表系统
YJlio19 天前
Sysinternals实战教程专栏介绍:这不是一本到此为止的书,而是一套看穿 Windows 的排障方法
windows·python·电脑·outlook·windows部署·eixv3·pe装机
VBA633720 天前
如何学习VBA之1:初学VBA人员要重视程序文件
vba
VBA633723 天前
VBA高级应用30例应用6 第2部分:利用XML文件修改Excel单元格字符
vba
专注VB编程开发20年23 天前
WPS 2024 Windows版UI用QT5和自研DirectUI-vba,jsa
qt·vba·wps·jsa·directui
Access开发易登软件24 天前
在 Access 中实现 Web 风格 To Do List
前端·数据结构·microsoft·list·vba·access·access开发