Solved

Outlook folders export: how to pick the fields (properties) name with VBA.

Posted on 2009-04-08
7
397 Views
Last Modified: 2013-11-27
I am looking for a VBA code that allows me to list every field name of my Outlook messages.
In other words, I want to know the name of the mapped fields I usually can get with the Outlook export action to .xls file; I would then use them in MS Access functions like below.
Thank you.
Dim olkItems As Object, olkItem As Object
....
For Each olkItem In olkItems
...=olkItem.Field1 (es. Name)
...=olkItem.Field2 (es. Subject)
...=....
Next olkItem

Open in new window

0
Comment
Question by:Sar1973
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
7 Comments
 
LVL 28

Expert Comment

by:TextReport
ID: 24101351
Once you have your outlook message variable you can use the code below to loop through all the properties, either as a count or directly as objects
Cheers, Andrew
Dim cnt As Long
For cnt = 0 To outMessage.ItemProperties.Count - 1
    Debug.Print outMessage.ItemProperties(cnt).Name
Next cnt
 
Dim oip As Outlook.ItemProperty
Dim oips As Outlook.ItemProperties
Set oips = outMessage.ItemProperties
For Each oip In oips
    Debug.Print oip.Name
Next oip

Open in new window

0
 
LVL 9

Author Comment

by:Sar1973
ID: 24105779
If I launch this code, I get some errors: outMessage is not delcared, so I get "an object is necessary"
If I declare it as object, I get "With variabloe not set"
0
 
LVL 28

Expert Comment

by:TextReport
ID: 24105805
outMessage is my variable that is either an Object or Outlook.MailItem
I think with late binding, dimming the variable as Object, then you will need to use the For cnt looping
Cheers, Andrew
0
Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

 
LVL 9

Author Comment

by:Sar1973
ID: 24107357
Then, could you please provide a code that works and gives me every field name?
0
 
LVL 28

Expert Comment

by:TextReport
ID: 24107385
Have you got the code that give you an Outlook message, either the message you have created or the message you have found. If so can you please provide what you have.
Cheers, Andrew
0
 
LVL 9

Author Comment

by:Sar1973
ID: 24107523
I got it: if you use this code you get a string with every property and field name.
I gues it would work also if you pick a single item of an Outlook folder instead of creating a new item/message and looking what it's made of.
Dim olkName As String
Dim oip As Outlook.ItemProperty
Dim oips As Outlook.ItemProperties
Dim olApp As Object
Dim oItem As Object
 
Set olApp = CreateObject("Outlook.application")
Set oItem = olApp.CreateItem(0)
Set oips = oItem.ItemProperties
 
For Each oip In oips
    olkName = olkName & ", " & oip.Name
Next
 
Me.Pinco = olkName

Open in new window

0
 
LVL 28

Accepted Solution

by:
TextReport earned 250 total points
ID: 24108419
Sounds right to me.
With message items you may want to investigate the FIND method to find the messages in your folderthat match certain criteria.
Cheers, Andrew
0

Featured Post

On Demand Webinar: Networking for the Cloud Era

Did you know SD-WANs can improve network connectivity? Check out this webinar to learn how an SD-WAN simplified, one-click tool can help you migrate and manage data in the cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Describes a method of obtaining an object variable to an already running instance of Microsoft Access so that it can be controlled via automation.
You need to know the location of the Office templates folder, so that when you create new templates, they are saved to that location, and thus are available for selection when creating new documents.  The steps to find the Templates folder path are …
Learn how to number pages in an Access report over each group. Activate two pass printing by referencing the pages property: Add code to the Page Footers OnFormat event to capture the pages as there occur for each group. Use the pages property to …
In Microsoft Access, when working with VBA, learn some techniques for writing readable and easily maintained code.

729 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question