【问题标题】:Automatic reply with function Getsignature使用 Getsignature 功能自动回复
【发布时间】:2020-12-17 03:19:44
【问题描述】:

我不是 VBA 的粉丝,但我正在尝试构建一个简单的 VBA 代码来设置自动回复。

我 100% 确定,我在代码中有错误,但我找不到:

Option Explicit


Sub AutoReply(olItem As Outlook.MailItem)
Dim olOutMail As Outlook.MailItem
Dim Strsignature As String
Dim Spath As String

Strsignature = GetSignature(Spath)
Spath = "my_path" '->validpath

With olItem
    Set olOutMail = olItem.Reply
    With olOutMail
        .Subject = "my_subject"
        .HTMLBody = "my_text" & Strsignature
        .Display        'send
        End With
    Set olOutMail = Nothing
End With
End Sub

功能:

Function GetSignature(fPath As String) As String
Dim fso As Object
Dim TSet As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set TSet = fso.GetFile(fPath).OpenAsTextStream(1, -2)
GetSignature = TSet.ReadAll
TSet.Close
End Function

测试:

Sub Test()
Dim olMsg As MailItem
On Error Resume Next
Set olMsg = ActiveExplorer.Selection.Item(1)
AutoReply olMsg
End Sub

如果我运行“测试”代码,什么都不会发生。

【问题讨论】:

    标签: vba outlook automation


    【解决方案1】:
    1. 请将Spath = "my_path" 移到Strsignature = GetSignature(Spath) 行上方。

    否则,函数会使用空字符串(如参数)调用。 GetSignature函数必须先检查字符串是否存在。

    AutoReply代码也可以查看:

    If Strsignature = "" Then Stop 'or send a message
    
    1. htmlBody改成HTML字符串:
    .htmlBody = "<H3><B>My_text</B></H3>" & "<br>" & Strsignature
    

    您不得在代码开头使用On error Resume Next。为什么有必要,除了不让你看到问题出在哪里?

    【讨论】:

    • 我没有认出On error Resume Next。我删除了它,我的“有效”路径无效:) 谢谢!
    • 一般注意,您不能连接两个 HTML 字符串并期望返回一个有效的 HTML。 .两者必须合并。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 2022-08-15
    • 2020-08-29
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    相关资源
    最近更新 更多