【问题标题】:How to insert an Outlook Signature into an email after attaching the ActiveWorkbook?附加 ActiveWorkbook 后如何在电子邮件中插入 Outlook 签名?
【发布时间】:2020-09-18 15:44:37
【问题描述】:

我有一个以 Excel 表格开头的宏,将通过 Outlook 电子邮件发送给同事。

我一直在尝试使用 Ron de Bruin 链接将已保存的签名添加到 Outlook 电子邮件,但它显示“未找到文件”。 https://www.rondebruin.nl/win/s1/outlook/signature.htm

-签名未设置为默认值,因为我保存了多个签名。

-当我执行 Debug.Print 时,路径匹配它应该是什么

C:\Users\cday\AppData\Roaming\Microsoft\Signatures\Inventory Report.htm

Sub Setup_Email()
    
    Dim OutApp As Outlook.Application
    Dim OutMail As Outlook.MailItem
    
    Set OutApp = CreateObject("Outlook.application")
    Set OutMail = OutApp.CreateItem(olMailItem)
        
    Dim StrSignature As String
    Dim SPath As String
    
    SPath = Environ("appdata") & "\Microsoft\Signatures\Inventory Report.htm"
    Debug.Print SPath
    
    StrSignature = Getsignature(SPath)
    
    With OutMail
        .Display
        .to = "People"
        .CC = "More People"
        .Subject = ThisWorkbook.Name
        .Attachments.Add ActiveWorkbook.FullName
        .HTMLBody = StrSignature
    End With
        
    On Error GoTo 0
        
    Set OutMail = Nothing
    Set OutApp = Nothing
    
End Sub
    
Function Getsignature(ByVal sFile As String) As String
    
    Dim fso As Object
    Dim ts As Object
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2) **"File Not Found"**
    
    Getsignature = ts.readall
    
    ts.Close
    
End Function

【问题讨论】:

    标签: excel vba outlook


    【解决方案1】:

    您是否真的在 Windows 资源管理器中看到了具有该名称的签名文件? 请记住,“Signatures”文件夹名称已本地化。实际文件夹名称存储在Signatures 值中

    HKEY_CURRENT_USER\Software\Microsoft\Office\<version>\Common\General
    

    【讨论】:

    • 在:C:\Users\cday\AppData\Roaming\Microsoft\Signatures 下,我看到了Inventory Report.htmInventory Report.rtfInventory Report.txt
    【解决方案2】:

    我重新查看了我的宏,因为缺少调用 - GetBroiler 函数: 子设置_Email()

    Dim OutApp As Outlook.Application
    Dim OutMail As Outlook.MailItem
    Dim SigString As String
    Dim Signature As String
    
    Set OutApp = CreateObject("Outlook.application")
    Set OutMail = OutApp.CreateItem(olMailItem)
    
    SigString = Environ("appdata") & "\Microsoft\Signatures\Inventory Report.htm"
    
    If Dir(SigString) <> "" Then
        Signature = GetBoiler(SigString)
    Else
        Signature = ""
    End If
    
    On Error Resume Next
    
    With OutMail
        .Display
        .to = "People"
        .CC = "More People"
        .Subject = ThisWorkbook.Name
        .Attachments.Add ActiveWorkbook.FullName
        .HTMLBody = Signature
    End With
    
    
    Set OutMail = Nothing
    Set OutApp = Nothing
    

    结束子

    函数 GetBoiler(ByVal sFile As String) As String 将 fso 调暗为对象 调暗为对象 设置 fso = CreateObject("Scripting.FileSystemObject") 设置 ts = fso.GetFile(sFile).OpenAsTextStream(1, -2) GetBoiler = ts.readall ts.关闭 结束函数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2011-09-14
      • 1970-01-01
      相关资源
      最近更新 更多