我正在尝试从Excel工作簿调用存储在Outlook“'ThisOutlookSession'中的过程。遗憾的是,较新的Outlook 2010应用程序与MS office产品之间的application.run *SubName*
不兼容。
由于'.send'上的安全消息需要有人值守站,因此无法完成代表Outlook发送电子邮件的Excel脚本。 (&无法更改公司政策中的安全设置)
目前的工作流程......
- 用户在主题&中发送了一封带有“命令”的电子邮件。附件
-Event侦听器在附件中查找并成功运行Excel例程,并在Outlook中收听以下标题
Private WithEvents Items As Outlook.Items
&
Private Sub Items_ItemAdd(ByVal Item As Object)
- 一旦在Excel中处理,我试图将此数据自动返回给发件人。 (这就是问题所在)
我在Excel中使用后期绑定来创建并准备好回复电子邮件。这是'。''之前的一步。理想情况下,我希望避免使用SendKeys语句,因为如果同时处理其他工作簿,它并不完全可靠。
在Excel中......
Sub test()
Dim aOutlook As Object
Dim aEmail As Object
Set aOutlook = CreateObject("Outlook.Application")
Set aEmail = aOutlook.CreateItem(0)
aEmail.To = "My email address"
aEmail.Subject = "Testing"
aEmail.Body = "Testing"
aEmail.display
End Sub
我一直在无休止地尝试让Outlook识别Excel创建这个包含MSDN页面中列出的事件的新电子邮件。我认为类似下面的代码是识别新mailitem所需要的,但使用Outlook.mailItem下的大多数预设声明都没有成功。
Private WithEvents NewItem As Outlook.mailItem
如果您有解决方案或我想要的其他想法,请告诉我
答案 0 :(得分:1)
解决了,如果有人在将来需要这个。它绕过安全警告并且不依赖于发送密钥。
Excel准备一封电子邮件并显示它 - 在准备好后,即可开启' On'从Outlook认识到'到'加载mailitem时的地址,然后可以从那里接管:完成.send语句。
注意,需要添加更多参数,例如item.subject中的特定代码,以确保发送正确的电子邮件。
在Excel中:
Sub test()
Dim aOutlook As Object
Dim aEmail As Object
Set aOutlook = CreateObject("Outlook.Application")
Set aEmail = aOutlook.CreateItem(0)
aEmail.To = "abs@123.com"
aEmail.Subject = "Testing"
aEmail.Body = "testing"
aEmail.Display
End Sub
在Outlook中:
Public WithEvents myItem As Outlook.mailItem
Private Sub Application_ItemLoad(ByVal Item As Object)
If (TypeOf Item Is mailItem) Then
Set myItem = Item
End If
End Sub
Private Sub myItem_Open(Cancel As Boolean)
If myItem.To = "abs@123.com" Then
MsgBox "Detected"
myItem.Send
End If
End Sub