从Excel发送带有pdf附件的Outlook电子邮件并禁用Outlook附件关联菜单
我有VBA代码来发送Outlook电子邮件,其中附有Excel中的pdf 我正在尝试禁用Outlook附件上下文菜单,该菜单允许保存、打印附件等 这在Excel VBA中是否可行 我希望附件以读取模式打开,而用户无法保存它从Excel发送带有pdf附件的Outlook电子邮件并禁用Outlook附件关联菜单,excel,vba,outlook,Excel,Vba,Outlook,我有VBA代码来发送Outlook电子邮件,其中附有Excel中的pdf 我正在尝试禁用Outlook附件上下文菜单,该菜单允许保存、打印附件等 这在Excel VBA中是否可行 我希望附件以读取模式打开,而用户无法保存它 Sub SendDMR() 'some code not added for simplicity Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateI
Sub SendDMR()
'some code not added for simplicity
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = ""
.SentOnBehalfOfName = "GasStorage@sse.com"
.CC = ""
.BCC = ""
.Subject = "Daily Management Report " & Format(Date - 1, "dd/mm/yyyy")
.Body = "Good morning," & vbCr & vbCr & "Please find the Daily Management Report attached for " & Format(Date - 1, "dd/mm/yyyy") & "." & vbCr & vbCr & "Kind regards," & vbCr & vbCr & "Shift Trading Team" & vbCr & "SSE Gas Storage" & vbCr & "Inveralmond House, Perth" & vbCr & "T: +44 (0)1738 453960" & vbCr & "E: gasstorage@sse.com"
.Attachments.Add strPath & strFName
.Permission = olDoNotForward
.PermissionService = olWindows
.Sensitivity = olConfidential
.Display
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End If
Exit Sub
MsgEnd:
MsgBox "Please set the print area before continuing", vbExclamation
End Sub
是的,不是。
我是说,是的,从技术上讲,这是可能的:一切都是一个窗口,喷涌和处理消息,只需要一些代码就可以劫持消息泵,截取说“打开上下文菜单”的消息,然后吃掉它
如果你真的想这样做,你可以。仔细阅读子类化,启动Spy++并开始嗅探窗口消息,然后一切都有可能
但这比API VBA代码通常处理的级别要低得多:Outlook的对象模型(AFAIK)中没有任何东西可以让您轻松/简单地通过编程访问该上下文菜单。我不认为这是不可能的,但您很可能不想这样做。@BigBen我认为您无法手动执行此操作。我猜禁用特定的菜单需要一些严重的Win32&COM篡改和子类化、消息泵劫持和WM注入。就像我说的,不是不可能,只是。。。哇,巨大的痛苦。@MathieuGuindon这是我的猜测-这就是为什么我删除了我的评论。在任何情况下,我相信最终用户访问PDF都会有一个解决方法。生活找到了一种方法,是的=)好的,谢谢大家这也是我所想的(不可能或巨大的痛苦…),但我想在放弃之前问你们所有人