Of all the personal information you can enter on the General and Details
tabs of an Outlook contact, I wonder why the Manager's Name is the only
field that doesn't print out. This problem goes at least back to Outlook
2000. There are two ways to work around it, one with a customized view, the
other with a little Outlook VBA code.
For the view method, create a new address card view or modify an existing
address card view, such as Address Cards or Detailed Address Cards, to add
the Manager's Name field to the view. Once you see the manager's name in the
view, along with the other fields you want to print, select the contact you
want to print, and then choose File, Print. On the Print dialog, under
"Print style," choose Card Style. Under "Print range," choose "Only selected
items." Then click OK. The one contact you've selected will print in the
card style, and the printout will include all the fields shown in the view.
The main drawback of the view method is that it requires you to customize a
view and to print from the Contacts folder. It doesn't help if you have
opened a contact in its own window and want to print it.
The VBA method works both in both situations - if you are looking at a
contacts folder or if you have the contact open in its window. It takes
advantage of the fact that Outlook always includes in the printout any
custom property added to the item that contain data. Here is a macro that
adds a custom property to hold the manager's name, copies the name to that
property, and then prints the item.
Sub PrintContactWithManager()
Dim objItem As Object
Dim objProp As Outlook.UserProperty
On Error Resume Next
Set objItem = GetCurrentItem()
If objItem.Class = olContact Then
Set objProp = objItem.UserProperties("Manager Name")
If objProp Is Nothing Then
Set objProp = objItem.UserProperties.Add("Manager Name", olText,
True)
End If
objProp.Value = objItem.ManagerName
objItem.PrintOut
End If
Set objItem = Nothing
Set objProp = Nothing
End Sub
Function GetCurrentItem() As Object
Dim objApp As Outlook.Application
Set objApp = CreateObject("Outlook.Application")
On Error Resume Next
Select Case TypeName(objApp.ActiveWindow)
Case "Explorer"
Set GetCurrentItem = objApp.ActiveExplorer.Selection.Item(1)
Case "Inspector"
Set GetCurrentItem = objApp.ActiveInspector.CurrentItem
End Select
Set objApp = Nothing
End Function