Retrieve a specific folder in outlook
5 次查看(过去 30 天)
显示 更早的评论
Hi,
First time using outlook COM in Matlab. No id where I did wrong in the following code. Basically I'd like to get a specific email from a sub-folder in the inbox called 'Important Infor’.
outlook.GetNamespace('mapi').GetDefaultFolder('olFolderInbox')
Folders is null so I cannot retrieve the folder 'Important Infor’.
>> outlook = actxserver('Outlook.Application');
>> MyFolder = outlook.GetNamespace('mapi').GetDefaultFolder('olFolderInbox').Folders('Important Infor')
Index exceeds matrix dimensions.
Thanks a lot in advance!
0 个评论
采纳的回答
Eric
2012-7-31
You need to be aware of two things:
1. olFolderInbox should be the integer 6.
2. Indexing into VBA collections such as Folders() using a string is not supported via COM. You'll have to loop through the items and find the one with the right name. Loop through using the Items property of the collection.
Here's how I got the body for a particular email in Outlook. This gets the oldest email in my inbox. I'll show this in stages to see how the tree structure is built up.
First start with
outlook = actxserver('Outlook.Application');
Then
outlook.GetNamespace('mapi').Folders(1).Item(2) %returns my Mailbox
outlook.GetNamespace('mapi').Folders(1).Item(2).Folders(1).Item(2); %returns my Inbox
outlook.GetNamespace('mapi').Folders(1).Item(2).Folders(1).Item(2).Item(1).Item(1); %returns the oldest email in my Inbox
outlook.GetNamespace('mapi').Folders(1).Item(2).Folders(1).Item(2).Item(1).Item(1).Body; %Returns the body of this message
This is by no means straightforward and the hierarchy will depend upon how you have configured Outlook. The code here should provide a good starting point, though.
Good luck,
Eric
2 个评论
Eric
2012-7-31
编辑:Eric
2012-7-31
I think you meant to say that Inbox is 2. You're right, though, you could use
olFolderInbox = 6;
outlook.GetNamespace('mapi').GetDefaultFolder(olFolderInbox).Item(1).Item(1).Body
to do the same thing. I think then we have
outlook.GetNamespace('mapi').GetDefaultFolder(olFolderInbox).Item(1)
returns the root 'Inbox' directory and
outlook.GetNamespace('mapi').GetDefaultFolder(olFolderInbox).Item(1).Item(1)
returns the oldest item in that directory. That is a bit more concise than what I had written.
Other than that, though, I don't know of a simple way of finding items in VBA collections. I run into the same problem with some Excel code I have. To write data to a particular worksheet in an Excel workbook you first need to loop through the worksheets to find the one with the name you're looking for.
-Eric
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Spreadsheets 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!