Last reviewed on September 11, 2014   —  22 Comments

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:

  1. In Word, choose View | Toolbars | Customize, then switch to the Commands tab..
  2. Under Categories, choose Insert.
  3. 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
Name Fields
<PR_DISPLAY_NAME> Subject (by default, First Last Middle Suffix) (OAB)
First Last or Last, First (PAB, depending on setting)
<PR_TITLE> Job Title (OAB)
Title (PAB)
Company Fields
<PR_OFFICE_LOCATION> Office Location (OAB)
Office (PAB)
<PR_ASSISTANT> Assistant X X
Address Fields
<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_PRIMARY_TELEPHONE_NUMBER> Phone number (on Business tab) X
<PR_ASSISTANT_TELEPHONE_NUMBER> Assistant (on Phone pick list) (OAB)
Assistant (on Phone Numbers tab) (PAB)
Other Fields
<PR_EMAIL_ADDRESS> E-mail Address X X
<PR_ADDRTYPE> E-mail Type X 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:


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:


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:


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


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.


  1. Richard Barrett says

    Is it possible to get the Middle Name and the Suffix? Both can be added in Outlook Contacts, but I don't see a way to specifically retrieve those fields.


    • Diane Poremsky says

      What version of Outlook? You can using VBA - .MiddleName and .Suffix. They are also in the mail merge dialog as MIDDLE & SUFFIX. Try using PR_MIDDLE & PR_SUFFIX in the instructions this page.

  2. Richard Barrett says

    Thanks for your reply. I'm using Office 2010. I'm using the GetAddress method in Word VBA to select an Outlook Contact. I just tried PR_MIDDLE and PR_SUFFIX, and neither one returns the expected value. Others (PR_GIVEN_NAME, PR_POSTAL_ADDRESS, etc.) function as expected. The two that don't respond are PR_MIDDLE (or PR_MIDDLE_NAME) and PR_SUFFIX.

    Also, is it possible to get the entry ID from GetAddress: PR_ENTRY_ID? I'm not having luck with that, either.

  3. Ulf Nilsson says

    We have Exchange2010 and Office 2010/2013.
    does not contain the email address.
    sCode = ""
    sTemp = Application.GetAddress("", sCode, False, 1, , , True, True)
    Any suggestion on how to get the email address?

    • Diane Poremsky says

      Did you try getting the username? That will resolve to the address in the global address list.

  4. Ulf Nilsson says

    Background to my question:
    When a user opens a template in Word a form opens where most information fills in automatic. If the user wants to add a co-writer, he clicks on a button which opens the Outlook addressbook by using the script.
    How can I get the username of the person selected via the script?

    • Diane Poremsky says

      Is this the same person who is logged on the computer or do you need to check the email account the address book is linked to?

  5. Ulf Nilsson says

    When the form is initialized, I use environ("username")and get the information from Active Directory to add the userinformation. When the user click on Add more persons, the GetAddress-code above is used.
    If the person select Charlie Chaplin in the Address book, I want to know Charlie Chaplin's email address.
    I get allt the other information, like name, telephone number, department and office, by using the AddressLayout Field. But not the email address.

  6. Ulf Nilsson says

    Hi again,
    Just realized that I did not submitted the whole code. It shoud be:
    sCode = " $$$"
    If I add the ""-field, I do not get the email address.

    • Diane Poremsky says

      Ok, now i understand and I assume the site software is messing up your code sample - you're saying this (with the missing angle brackets) isn't getting the email address ?
      sTemp = Application.GetAddress("PR_EMAIL_ADDRESS", sCode, False, 1, , , True, True)

  7. Ulf Nilsson says

    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.

    • Diane Poremsky says

      do you want the SMTP address or the user name? You can get either, but need to use a bit of code.

  8. Ulf Nilsson says

    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.

  9. Ulf Nilsson says

    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.

    • Diane Poremsky says

      That is a little more convoluted than the method i found once (and haven't been able to find again).

  10. Michael Boughman says

    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

    • Diane Poremsky says

      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).

Leave a Reply

Please post long or more complicated questions at OutlookForums by

If the Post Comment button disappears, press your Tab key.