2013-02-01 59 views
1

我正在构建一个宏,当我移动到电子邮件正文中时,它会自动运行以检查收件人的电子邮件地址。收件人的回复电子邮件地址

我无法获得收件人的地址加载到变量。

Sub BuildTable() 
Dim myItem As Outlook.MailItem 
Dim myRecipient As String 
Set myItem = Application.CreateItem(olMailItem) 
Set myRecipient = myItem.Recipient.Address 
.... 

回答

0

看来你在MS Outlook和在Active督察运行,因此可能:

Sub CheckAddresses() 
Dim oEmail As Outlook.MailItem 
Dim r As Recipient 
Dim rList As Recipients 

Set oEmail = Application.ActiveInspector.CurrentItem 

Set rList = oEmail.Recipients 
rList.ResolveAll 
For Each r In rList 
    Debug.Print r.Address 
Next 
End Sub 
+0

非常感谢,也。我得到了这个方法,以及轻微的重新调整。 – GZL

0

我不知道你使用的是什么版本的Outlook,但据微软(http://msdn.microsoft.com/en-us/library/office/aa211006(v=office.11).aspx),你需要使用.Recipients(指数)来获取收件人。从那里你可能可以得到地址。我还看到提到某种ResolveAll方法附加到.Recipients,但引用了Outlook 2000(eww)。

尝试做

Dim myItem As Outlook.MailItem 
Dim myRecipient as String 
Set myItem = Application.CreateItem(olMailItem) 
Set myRecipient = myItem.Recipients.Item(0).Address 

这会给你第一个收件人(请注意我不记得,如果VBA开始于指数0或1,如果你得到IndexOutOfRange,更改为1)的地址。如果你需要别人,你将需要做一个循环。这样的事情:

For Each Recipient in myItem.Recipients 
// do some stuff here 
Next Recipient 

希望这会有所帮助。

+0

感谢您的快速回复。我正在使用2010. 我认为引起我的是他们指示我创建一个新项目,而不是简单地访问mailitem中的值。我只是在这一点上失去了如何获得这些值(对不起,我真的只涉足Coldfusion/SQL Server)。 我很感激帮助。 -ZL – GZL

+0

我不使用Outlook for VBA,只使用Excel。坚持下去,我会尽力为你解决。 –

+0

非常感谢您的帮助,我将其付诸实施。我感谢你的时间和关注。 – GZL

0

这就是这个代码段结束看起来像:

Sub BuildTable1() 

Dim oEmail As Outlook.MailItem 

Set oEmail = Application.ActiveInspector.currentItem 

Set xlApp = CreateObject("Excel.Application") 
xlApp.Application.Visible = True 
xlApp.workbooks.Open FileName:= file location 

xlApp.WorkSheets("Contacts").Activate 
xlApp.Range("A6").Value = oEmail.To 


//filtering by value, copying, pasting, etc. 
End Sub 

-ZL

相关问题