One of the advantages to using Microsoft Exchange or Microsoft Outlook is the ability to use information from the Address Book in Microsoft Word documents. Exactly how to do it, though, isn't obvious. The key is an AutoText entry called AddressLayout in English (see Non-English Word for the correct name in other languages). This article shows you how to change this entry and how to add an Insert Address button to the Word toolbar. See More Information at the end of this article for alternative methods of putting addresses into Word documents.
Adding an Insert Address button | Changing the Address Layout
Non-English Word | Notes | More Information
Adding an Insert Address button
Word 7.0 includes an Insert Address button on its Standard toolbar, but newer versions of Word don't add the button to the Toolbar or ribbon. If you're going to add address information to documents frequently, having a button available will make it easier. Here's how to add it to a toolbar:
- In Word, choose View | Toolbars | Customize, then switch to the Commands tab..
- Under Categories, choose Insert.
- Near the bottom of the Commands list, you'll find Address Book. Drag that command to any toolbar currently displayed in Word.
The Insert Address button makes it easy to add an address to any document.
Changing the Address Layout
Word includes a default AddressLayout entry that you can't see or edit directly. Test it by using the Insert Address button to insert an address from your Address Book.
To add, remove or rearrange fields, create a new layout in a Word document, then save it as a new AutoText entry named AddressLayout. (If you have a non-English version of Word, see Non-English Word below.)
The following table lists each field you can use, indicates whether it applies to addresses from the Personal Address Book (PAB) or Outlook Contacts (OAB) and lists the corresponding field name in the OAB and PAB.
Fields marked with an asterisk (*) may work only in Word 2000.
AddressLayout Field | Contacts (OAB) or Personal Address Book (PAB) Field Name | OAB | PAB |
---|---|---|---|
Name Fields | |||
<PR_DISPLAY_NAME> | Subject (by default, First Last Middle Suffix) (OAB) First Last or Last, First (PAB, depending on setting) | X | X |
<PR_GIVEN_NAME> | First | X | X |
<PR_SURNAME> | Last | X | X |
<PR_TITLE> | Job Title (OAB) Title (PAB) | X | X |
<PR_DISPLAY_NAME_PREFIX>* | Title (OAB) | X | ? |
Company Fields | |||
<PR_COMPANY_NAME> | Company | X | X |
<PR_DEPARTMENT_NAME> | Department | X | X |
<PR_OFFICE_LOCATION> | Office Location (OAB) Office (PAB) | X | X |
<PR_ASSISTANT> | Assistant | X | X |
Address Fields | |||
<PR_STREET_ADDRESS> | Street | X | X |
<PR_LOCALITY> | City | X | X |
<PR_STATE_OR_PROVINCE> | State/Province | X | X |
<PR_POSTAL_CODE> | ZIP/Postal code | X | X |
<PR_COUNTRY> | Country | X | X |
<PR_POSTAL_ADDRESS> | Full address, including country only if it's not your own | ||
Phone Fields | |||
<PR_OFFICE_TELEPHONE_NUMBER> | Business | X | X |
<PR_OFFICE2_TELEPHONE_NUMBER> | Business 2 | X | X |
<PR_PRIMARY_TELEPHONE_NUMBER> | Phone number (on Business tab) | X | |
<PR_BUSINESS_FAX_NUMBER> | Business Fax | X | |
<PR_PRIMARY_FAX_NUMBER> | Fax | X | |
<PR_ASSISTANT_TELEPHONE_NUMBER> | Assistant (on Phone pick list) (OAB) Assistant (on Phone Numbers tab) (PAB) | X | X |
<PR_BEEPER_TELEPHONE_NUMBER> | Pager | X | X |
<PR_CAR_TELEPHONE_NUMBER> | Car | X | |
<PR_CELLULAR_TELEPHONE_NUMBER> | Mobile | X | X |
<PR_RADIO_TELEPHONE_NUMBER> | Radio | X | |
<PR_HOME_TELEPHONE_NUMBER> | Home | X | X |
<PR_HOME2_TELEPHONE_NUMBER> | Home 2 | X | X |
<PR_HOME_FAX_NUMBER> | Home Fax | X | |
<PR_OTHER_TELEPHONE_NUMBER> | Other | X | |
Other Fields | |||
<PR_EMAIL_ADDRESS> | E-mail Address | X | X |
<PR_ADDRTYPE> | E-mail Type | X | X |
<PR_COMMENT> | Notes | X |
An example is the easiest way to show how to create a new layout. If you want to add the job title and company name to the layout and remove the country name, type (or copy and paste) this into Word, with a carriage return after each line:
<PR_GIVEN_NAME> <PR_SURNAME> <PR_TITLE> <PR_COMPANY_NAME> <PR_STREET_ADDRESS> <PR_LOCALITY>, <PR_STATE_OR_PROVINCE> <PR_POSTAL_CODE>
Make sure you include spaces and punctuation where you want them to appear in the address. Now, select the entire layout, and save it as an AutoText entry with the name "AddressLayout," taking care to use exactly that spelling and capitalization.
To save an AutoText entry in Word 7.0, choose Edit | AutoText, enter the Name as "AddressLayout," then click Add.
To save an AutoText entry in Word 97 or Word 2000/2002/2003, choose Insert | AutoText | New, enter "AddressLayout" as the name, then click OK.
You can now use the Insert Address button to test your new AddressLayout. The above example should give you an address that looks like this:
Bill GatesCEOMicrosoft CorporationOne Microsoft WayRedmond, WA 98052
You might notice, though, that if a person has no title, you get a blank line. To suppress blank lines and make use of different fields that display the same data, depending on whether the source is a PAB or OAB entry, try this variation from the Office 97 Resource Kit, omitting the carriage returns:
{{<PR_GIVEN_NAME> <PR_SURNAME> | <PR_DISPLAY_NAME>}\r} {{<PR_STREET_ADDRESS>\r}{{<PR_LOCALITY>} {, <PR_STATE_OR_PROVINCE> <PR_POSTAL_CODE>}\r} {<PR_COUNTRY>\r}| <PR_POSTAL_ADDRESS>\r}
The curly braces ( {} ) are used to ensure that a particular line does not print if it is empty, for example, if the person does not have a title. The vertical bar ( | ) means OR. And the \r switch substitutes for the carriage return. (Omit the \r in Word 2000 and just put a carriage return or soft return after each line; the \r switch doesn't work in Word 2000.) You are limited to a total of 12 fields, according to WD2000: How to Modify the Layout of an Address Book Entry.
For Office XP, this turns out to be a pretty good AddressLayout entry to include both company and country. I suspect it might also work well in Office 2000. You should put a carriage return or soft return at the end of each line shown here:
{{<PR_GIVEN_NAME> <PR_SURNAME> | <PR_DISPLAY_NAME>} }{<PR_COMPANY_NAME>} {{<PR_STREET_ADDRESS> }{{<PR_LOCALITY>}{, <PR_STATE_OR_PROVINCE> <PR_POSTAL_CODE>}} {<PR_COUNTRY> }| <PR_POSTAL_ADDRESS>}
If the address doesn't work the way you think it should, check the field names for spelling mistakes and make sure that you actually have information entered in the corresponding Contacts or PAB fields. Also, if the addresses were imported, you may need to follow the instructions in MSKB article Address Displays Incorrectly on Imported Contacts.
Another approach is to simply make sure that the Address field contains whatever you want printed after the name, repeating the company name or other information as needed.
Non-English Word
If you are using a non-English version of Word, AddressLayout may not be the correct name for the AutoText entry that you need to modify. If you discover what the correct name is for a particular language, please let us know and we'll add it to this list:
- Dutch -- AdresIndeling
- French -- MiseEnPageAdresse
- German -- Adreßlayout or Adresslayout
- Italian -- IndirizzoLayout
- Nordic languages -- AdresseLayout
- Spanish -- AddressLayout
- Turkish – AdresD’zeni
Notes
If you want to write a Word macro to insert addresses, use the GetAddress method. This also gives you the option of specifying an address layout, rather than using the AddressLayout entry from AutoText. There's a good example in the VBA help file in Word.
Additional notes on the fields:
- In an Outlook contact, if you edit the Subject field, subsequent changes to any name field will cause the Subject field also to change. If you are using the Reorder Contacts form to change the way addresses are displayed in the Outlook Address Book, you should use the <PR_GIVEN_NAME> and <PR_SURNAME> fields in the AddressLayout entry, rather than <PR_DISPLAY_NAME>. Also, <PR_DISPLAY_NAME> may show the (E-mail) suffix for contacts from the Outlook Address Book.
- For Outlook Contacts, the <PR_EMAIL_ADDRESS> and <PR_ADDRTYPE> fields work with the E-mail field only. There are no corresponding fields for the E-mail 2 and E-mail 3 addresses.
- In Outlook, the Country field is often filled in by default with a value determined by your regional settings (Control Panel | Regional Settings). Click Address on the Contacts record to check the value placed in Country field.
More Information
Although many of these articles were written for Office 2000, in most cases the code will work in all later versions of Office.
I too would like to insert a contact from Outlook 2010 to Word 2010. I have tried to follow the discussion over here but I am not a programmer. I am not familiar with the getaddress function. I have found the following code on a website that seems to be what I am looking for:
Dim strAddress, strCode, strFnamn, strEnamn, strTel, strMobil, strEpost, As String
strFnamn = ""
strEnamn = ""
strTel = ""
strMobil = ""
strEpost = ""
strCode = strFnamn & "$1" & strEnamn & "$2" & strTel & "$3" & strMobil &
"$4" & strEpost
strAddress = Application.GetAddress(AddressProperties:=strCode,
DisplaySelectDialog:=1)
MsgBox strAddress
The above are the exact fields I need to put into a table in the word document. But where do I put it and how do I run it?
Hi, I have found code using getaddress to insert an Outlook contact into Word. I am using this to populate a quote template. This works fine. I am not a programmer so my question may be simple. Is there a way to insert just the first name "PR_GIVEN_NAME" from the getaddress results at another bookmark location to be used as a salutation?
'Set up the formatting codes in strCode
strCode = " " & vbCr & _
"" & vbCr & _
""
'Display the 'Select Name' dialog, which lets the user choose
'a name from their Outlook address book
strName = Application.GetAddress(addressproperties:=strCode, _
UseAutoText:=False, DisplaySelectDialog:=1, _
recentaddresseschoice:=True, UpdateRecentAddresses:=True)
'If user cancelled out of 'Select Name' dialog, quit
If strName = "" Then Exit Sub
'Insert the name at the current insertion point
Selection.Range.Text = strName
Yeah, you can insert it at any bookmark - assuming strname is the given name,
With oWord
' Find the bookmark, insert an Outlook field
.Selection.GoTo What:=wdGoToBookmark, Name:="bookmark name"
.Selection.TypeText Text:=strName
Full macro us here - it uses contact field directly but you can replace the field names with strings holding the values. (Or you might find it easier to use the contact fields directly).
https://www.slipstick.com/developer/create-letter-contact-vba/
Hi,
I found a solution: One can get the telephone number, PR_OFFICE_TELEPHONE_NUMBER, and use this unique item to locate the user in the Active Directory and get the mail address through this.
That is a little more convoluted than the method i found once (and haven't been able to find again).
Hi,
How is it going?
I haven't had a lot of time to work on it, but the code I found didn't work right.
Thanks!
I am really looking forward to it!
I am looking for the SMTP address, that is the email address.
I'll see if i can find some code that can grab it.
Your code is correct, but I do not get the email address. I only get what is called legacyExchangeDN. In older versions that string contained the username (which I uesed in simular matter as Environ("username")). But in Exchange 2012, it doesn't.
Hi,
Your code is correct one. Something strange happens when I paste my code to this page... Strange.
The result with the pr_email_address-code is the legacyExchangeDN-code. In previous versions of Exchange, it ends with the username.
With the Exchange 2012 it adds (FYDIBOHF23SPDLT) (which is equal to Exchange12Rocks - F=E; Y=X, D=C, and so on) and removes the username and add something else.
In previous versions, I used the username in the same way as Environ("username"), but I cannot do it now with the new version of Exchange.
do you want the SMTP address or the user name? You can get either, but need to use a bit of code.