Excel 如何查找用户Outlook默认签名的文件名?
如果这是一个愚蠢的学生问题,我道歉。我第一次把脚趾浸在水里,所以请温柔一点 我编写了一个excel加载项,用于使用Outlook发送电子邮件。我设法想出了一种添加用户签名的方法,效果很好。不过美中不足的是,他们更改了签名的名称 如何从outlook获取用户的默认签名Excel 如何查找用户Outlook默认签名的文件名?,excel,vba,outlook,Excel,Vba,Outlook,如果这是一个愚蠢的学生问题,我道歉。我第一次把脚趾浸在水里,所以请温柔一点 我编写了一个excel加载项,用于使用Outlook发送电子邮件。我设法想出了一种添加用户签名的方法,效果很好。不过美中不足的是,他们更改了签名的名称 如何从outlook获取用户的默认签名 Dim salutation As String, ourRef As String, amount As String, customerName As String, yourRef As String Dim totalAmo
Dim salutation As String, ourRef As String, amount As String, customerName As String, yourRef As String
Dim totalAmount As Double
' salutation
salutation = IIf(Time < 0.5, "Good morning", "Good afternoon")
' opening text
totalAmount = 0
For i = 0 To UBound(Table, 1)
totalAmount = totalAmount + Table(i, 3)
Next i
body = "<!DOCTYPE html><html><body>"
body = body & "<div style=""font-family:'Segoe UI', Calibri, Arial, Helvetica; font-size: 14px; max-width: 768px;"">"
If bulk = True Then
body = body & salutation & "<br /><br />We have sent you a bulk payment totaling " _
& Format(totalAmount, "£##,##0.00") & ", to be credited to the following accounts: <br /><br />"
Else
body = body & salutation & "<br /><br />We have sent you the following payments: <br /><br />"
End If
' table header
body = body & "<style type='text/css'>.tftable {font-size:12px;color:#333333;width:100%;" _
& "border-width: 1px;border-color: #9dcc7a;border-collapse: collapse;}.tftable th {font-size:12px;" _
& "background-color:#A99D36;border-width: 1px;padding: 8px;border-style: solid;border-color: " _
& "#9dcc7a;text-align:left;}.tftable tr {background-color:#F0EDCF;}.tftable td {font-size:12px;" _
& "border-width: 1px;padding: 8px;border-style: solid;border-color: #9dcc7a;}"
body = body & "</style><table class='tftable' border='1'><tr><th>Our ref</th><th>Amount</th>" _
& "<th>Client name</th><th>Your ref</th></tr>"
' table body
For i = LBound(Table, 1) To UBound(Table, 1)
ourRef = Table(i, 1)
amount = Table(i, 3)
customerName = Table(i, 2)
yourRef = Table(i, 4)
body = body & "<tr>"
body = body & "<td>" & ourRef & "</td>"
body = body & "<td>" & Format(amount, "£##,##0.00") & "</td>"
body = body & "<td>" & customerName & "</td>"
body = body & "<td>" & yourRef & "</td>"
body = body & "</tr>"
Next i
body = body & "</tbody></table>"
' signature
enviro = CStr(Environ("appdata"))
Debug.Print enviro
Set objfso = CreateObject("Scripting.FileSystemObject")
strSigFilePath = enviro & "\Microsoft\Signatures\"
Debug.Print strSigFilePath
Set objSignatureFile = objfso.opentextfile(strSigFilePath & "Standard.htm")
strbuffer = objSignatureFile.ReadAll
body = body & "<br/><br/>" & strbuffer
objSignatureFile.Close
Dim称呼为String,ourRef为String,amount为String,customerName为String,yourRef为String
总金额为双倍
"敬礼!
称呼=IIf(时间<0.5,“早上好”,“下午好”)
“开场白
总额=0
对于i=0到uBond(表1)
合计金额=合计金额+表(i,3)
接下来我
body=“”
body=body&“
如果bulk=True,则
body=body&saltation&“
我们已向您发送了总额为的批量付款”_
&格式(总金额,£0.00“&”,记入以下账户:
其他的
body=body&saltation&“
我们已向您发送以下付款:
”
如果结束
'表格标题
body=body&“.tftable{字体大小:12px;颜色:333333;宽度:100%;”_
&“边框宽度:1px;边框颜色:#9dcc7a;边框折叠:折叠;}.t表格{字体大小:12px;”_
&“背景色:#A99D36;边框宽度:1px;填充:8px;边框样式:纯色;边框颜色:”_
&“#9dcc7a;文本对齐:左;}.tftable tr{背景色:#F0EDCF;}.tftable td{字体大小:12px;”_
&“边框宽度:1px;填充:8px;边框样式:纯色;边框颜色:#9dcc7a;}”
body=body和“我们的重新装载”_
&“客户名称您的参考”
"表体,
对于i=LBound(表1)到UBound(表1)
ourRef=表(i,1)
金额=表(i,3)
客户名称=表(i,2)
yourRef=表(i,4)
body=body&“
body=body&&ourRef&&
正文=正文和格式(金额、0.00英镑)和
body=body&&customerName&“
body=body&&yourRef&&
body=body&“
接下来我
body=body&“
“签名
enviro=CStr(环境(“应用数据”))
调试打印环境
设置objfso=CreateObject(“Scripting.FileSystemObject”)
strSigFilePath=enviro&“\Microsoft\Signatures\”
调试.打印strSigFilePath
设置objSignatureFile=objfso.opentextfile(strSigFilePath&“Standard.htm”)
strbuffer=objSignatureFile.ReadAll
body=body&“
”和strbuffer
对象签名文件。关闭
结束函数史蒂维,如果我可以大胆地回答这个问题
C:\Users\username\AppData\Roaming\Microsoft\Signatures
C:\Users\username\AppData\Roaming\Microsoft\Signatures\[singatureName]\u文件
NameSpace.GetDefaultFolder
获取用户的默认电子邮件帐户,从而获取该帐户的签名名称空间.GetDefaultFolder
时,可以查看签名名称,然后可以执行[name]\u文件
以获取其中可能包含的任何图像。请注意,如果您使用HTMLBody,因为这是我的公司的问题,用户将无法访问Outlook中的编程访问信任中心设置。这会提示用户一个允许/拒绝框,用户可以在其中选择允许最多10分钟。。。仅供参考
希望这能有所帮助。
丹尼,
您可以从注册表中读取“新签名”和“回复转发签名”二进制值:
HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles[profileName]\9375CFF041311D3B88A00104B2A6676[accountNO]\请回答您的问题并添加相关的代码部分或a。不要让代码创建签名,创建邮件对象时,是否尝试在
.Send
之前添加.Display
?这将在发送前将用户签名添加到电子邮件中。否不起作用,因为签名不仅仅是文本,还需要将图像拉过来。@Stevie D Outlook对象模型根本不公开签名。一般来说,签名的名称存储在可通过IOLKAAccountManager Extended
MAPI接口访问的帐户配置文件数据中。由于该接口扩展了MAPI,所以只能使用C++或Delphi访问。如果单击IOlkAccountManager
按钮,您可以在OutlookSpy中看到该界面及其数据。如果使用赎回是一种选择<代码>赎回
还公开了RDOSignature
。这只是为了分享知识,我的工作范围仅限于ExcelVBA
。感谢skkakkar,看来这会有点棘手。