Re: Can contact info be transferred to Word document as in E-mail

Status
Not open for further replies.
D

Deanok

Well, the Clinton Ford post was in 2007, and as far as I can tell there is
STILL no way to easily create a single letter from an Outlook 2007 or BCM
contact!

"Clinton Ford [MSFT]" wrote:

> Craig,
>
> Thanks for this suggestion. We are currently working on a solution for this scenario. In the mean time, I've written a handy
> Outlook toolbar button macro to simplify this process. Below are instructions to add the button to your Outlook toolbar and the
> actual macro code. Be sure to modify the file paths for your e-mail and letter templates near the top of the macro code. Let me
> know if you have any questions.
>
> To create these buttons on your Outlook toolbar:
> 1.) Verify that your security settings will prompt you to run unsigned macros by selecting
> "Tools | Trust Center..." from the main Outlook window.
> Then click "Macro Security" and select "Warnings for all macros" and click "OK"
> 2.) Create a Macro from the main Outlook window by selecting "Tools | Macro | Macros..."
> 3.) Type "Email" as the Macro Name, then click "Create"
> 4.) The Visual Basic editing window will open. On the left-hand side is a project navigation pane.
> Right-click on the top-level item named "Project1" and select "Project1 Properties..."
> 5.) Change "Project1" to "Business" and click "OK"
> 6.) In the main code area, you'll see "Sub Email()", followed by "End Sub".
> Replace those two lines with the VBA code below, then click Save.
> 7.) Close the Visual Basic window to return to Outlook
> 8.) Right-click on the Outlook toolbar and click "Customize..."
> 9.) Select the "Commands" tab, select the "Macro" from the Categories list,
> then drag "Business.Letter" and "Business.Email" to the standard Outlook toolbar
> and click "Close" on the "Customize" dialog.
> 10.) Select a business contact or account, then click the "Business.Email" button.
>
> '//////////////////////////////////////////////////////////////////////////
> ' Create a New Business E-mail for selected Business Contact(s) or Contacts
> ' linked to the selected Account(s), Opportunity(s), or Busines Project(s)
> Sub Email()
> ' E-MAIL TEMPLATE: If you use an e-mail template, enter its path here
> Const emailFilePath = "C:\E-mail Thank You.docx"
> OpenCampaign True, emailFilePath
> End Sub
>
> ' Create a New Business Letter for selected Business Contact(s) or Contacts
> ' linked to the selected Account(s), Opportunity(s), or Busines Project(s)
> Sub Letter()
> ' LETTER TEMPLATE: If you use a letter template, enter its path here
> Const letterFilePath = "C:\Thank You.docx"
> OpenCampaign False, letterFilePath
> End Sub
>
> ' Open a new Marketing Campaign with the appropriate settings
> Sub OpenCampaign(Email As Boolean, contentFilePath As String)
>
> ' Get a reference to the MAPI namespace
> Dim objNS As Outlook.NameSpace
> Set objNS = Application.GetNamespace("MAPI")
>
> ' Make sure at least one item is selected
> If Application.ActiveExplorer Is Nothing Then
> MsgBox "Please select at least one item"
> Exit Sub
> End If
> If Application.ActiveExplorer.selection Is Nothing Then
> MsgBox "Please select at least one item"
> Exit Sub
> End If
>
> ' Get a reference to the currently selected item
> Dim oItem As Object
> Set oItem = Application.ActiveExplorer.selection(1)
> If oItem Is Nothing Then
> MsgBox "Please select at least one item"
> Exit Sub
> End If
>
> ' Get a reference to the currently selected Outlook folder
> Dim currentFolder As Outlook.Folder
> Set currentFolder = Application.ActiveExplorer.currentFolder
> If currentFolder Is Nothing Then
> MsgBox "Please select at least one item"
> Exit Sub
> End If
>
> ' Verify that this folder is located in the Business Contact
> ' Manager Outlook Store
> If 1 <> InStr(1, currentFolder.FullFolderPath, _
> "\\Business Contact Manager\", vbTextCompare) Then
> MsgBox "Please select at least one Business Contact, Account, " & _
> "Opportunity, or Business Project"
> Exit Sub
> End If
>
> ' Get the root BCM folder
> Dim olFolders As Outlook.Folders
> Dim bcmRootFolder As Outlook.Folder
> Set olFolders = objNS.Session.Folders
> If olFolders Is Nothing Then
> MsgBox "Unable to get the list of Outlook Session folders"
> Exit Sub
> End If
> Set bcmRootFolder = olFolders("Business Contact Manager")
>
> ' Get an XML recipient list
> Dim strRecipientXML As String
> strRecipientXML = _
> GetRecipientXML(objNS, _
> Application.ActiveExplorer.selection, _
> bcmRootFolder)
> If Trim(strRecipientXML) = "" Then
> MsgBox "Please select at least one Business Contact, Account, " & _
> "Opportunity, or Business Project"
> Exit Sub
> End If
>
> ' Locate the Marketing Campaigns folder
> Dim marketingCampaignFolder As Outlook.Folder
> Set marketingCampaignFolder = _
> bcmRootFolder.Folders("Marketing Campaigns")
>
> ' Create a new Marketing Campaign
> Const MarketingCampaignMessageClass = "IPM.Task.BCM.Campaign"
> Dim newMarketingCampaign As Outlook.TaskItem
> Set newMarketingCampaign = _
> marketingCampaignFolder.Items.Add(MarketingCampaignMessageClass)
>
> ' Campaign Code
> Dim campaignCode As Outlook.userProperty
> Set campaignCode = newMarketingCampaign.ItemProperties("Campaign Code")
> If campaignCode Is Nothing Then
> Set campaignCode = _
> newMarketingCampaign.ItemProperties.Add("Campaign Code", _
> olText, False, False)
> End If
> campaignCode.value = CStr(Now())
>
> ' Campaign Type
> Dim campaignType As Outlook.userProperty
> Set campaignType = _
> newMarketingCampaign.ItemProperties("Campaign Type")
> If campaignType Is Nothing Then
> Set campaignType = _
> newMarketingCampaign.ItemProperties.Add("Campaign Type", _
> olText, False, False)
> End If
>
> ' Delivery Method
> Dim deliveryMethod As Outlook.userProperty
> Set deliveryMethod = _
> newMarketingCampaign.ItemProperties("Delivery Method")
> If deliveryMethod Is Nothing Then
> Set deliveryMethod = _
> newMarketingCampaign.ItemProperties.Add("Delivery Method", _
> olText, False, False)
> End If
>
> ' See if this is an e-mail or print letter
> Dim title As String
> If Email Then
> title = "E-mail to "
> campaignType.value = "E-mail"
> deliveryMethod.value = "Word E-Mail Merge"
> Else
> title = "Letter to "
> campaignType.value = "Direct Mail Print"
> deliveryMethod.value = "Word Mail Merge"
> End If
>
> ' Marketing Campaign Title
> Select Case oItem.MessageClass
> Case "IPM.Contact.BCM.Contact":
> title = title & oItem.FullName
> Case "IPM.Contact.BCM.Account":
> title = title & oItem.FullName
> Case "IPM.Task.BCM.Opportunity":
> title = title & oItem.subject
> Case "IPM.Task.BCM.Project"
> title = title & oItem.subject
> End Select
>
> newMarketingCampaign.subject = title
>
> ' Content File
> Dim contentFile As Outlook.userProperty
> Set contentFile = newMarketingCampaign.ItemProperties("Content File")
> If contentFile Is Nothing Then
> Set contentFile = _
> newMarketingCampaign.ItemProperties.Add("Content File", _
> olText, False, False)
> End If
> contentFile.value = contentFilePath
>
> ' FormQuerySelection
> Dim formQuerySelection As Outlook.userProperty
> Set formQuerySelection = _
> newMarketingCampaign.ItemProperties("FormQuerySelection")
> If formQuerySelection Is Nothing Then
> Set formQuerySelection = _
> newMarketingCampaign.ItemProperties.Add("FormQuerySelection", _
> olInteger, False, False)
> End If
> formQuerySelection.value = 9 ' Custom Query
>
> ' Recipient List XML
> Dim recipientListXML As Outlook.userProperty
> Set recipientListXML = _
> newMarketingCampaign.ItemProperties("Recipient List XML")
> If recipientListXML Is Nothing Then
> Set recipientListXML = _
> newMarketingCampaign.ItemProperties.Add("Recipient List XML", _
> olText, False, False)
> End If
>
> ' Set the Recipient List XML
> recipientListXML.value = strRecipientXML
>
> ' Save the marketing campaign
> newMarketingCampaign.Save
>
> ' Launch the new marketing campaign
> newMarketingCampaign.Display (False)
>
> Set recipientListXML = Nothing
> Set formQuerySelection = Nothing
> Set deliveryMethod = Nothing
> Set contentFile = Nothing
> Set campaignType = Nothing
> Set campaignCode = Nothing
> Set newMarketingCampaign = Nothing
> Set marketingCampaignFolder = Nothing
> Set bcmRootFolder = Nothing
> Set olFolders = Nothing
> Set oItem = Nothing
> Set currentFolder = Nothing
> Set objNS = Nothing
> End Sub
>
> ' Returns an XML string that specifies the recipients
> Function GetRecipientXML(objNS As Outlook.NameSpace, _
> selectionList As Outlook.selection, _
> bcmRootFolder As Outlook.Folder) As String
> ' Initialize the retun value to empty string
> GetRecipientXML = ""
> ' Make sure we have a valid parameters
> If objNS Is Nothing Or _
> selectionList Is Nothing Or _
> bcmRootFolder Is Nothing Then
> Exit Function
> End If
>
> ' Build the recipient XML
> Dim strRecipientXML
> strRecipientXML = "<ArrayOfCampaignRecipient>"
>
> ' Add all selected items to the recipient list
> Dim oItem As Object
> Dim astrContactEntryIDs() As String
> ReDim Preserve astrContactEntryIDs(0)
> Dim contactEntryID As Variant
> Dim oParentEntryID As Object
> Dim oParent As Object
>
> For Each oItem In selectionList
> If oItem Is Nothing Then
> MsgBox "Warning: Item not found"
> Else
> ' Only get the EntryID if this is a Business Contact, Account,
> ' Opportunity, or Business Project
> Select Case oItem.MessageClass
> ' Business Contact
> Case "IPM.Contact.BCM.Contact":
> AddCampaignRecipient astrContactEntryIDs, oItem.EntryID
> ' Account
> Case "IPM.Contact.BCM.Account":
> AddCampaignRecipient astrContactEntryIDs, oItem.EntryID
> ' Add Business Contacts associated with this Account
> AddContactEnryIdsFromAccount objNS, bcmRootFolder, _
> CStr(oItem.EntryID), _
> astrContactEntryIDs
> ' Opportunity
> Case "IPM.Task.BCM.Opportunity":
> ' Get the parent item
> Set oParentEntryID = _
> oItem.UserProperties("Parent Entity EntryID")
> If oParentEntryID Is Nothing Then
> MsgBox ("This opportunity is not linked to a " & _
> "Business Contact or Account")
> Else
> AddCampaignRecipient astrContactEntryIDs, _
> oParentEntryID.value
> ' Add Business Contacts associated with Account
> AddContactEnryIdsFromAccount objNS, _
> bcmRootFolder, _
> CStr(oParentEntryID.value), _
> astrContactEntryIDs
> End If
> ' Business Project
> Case "IPM.Task.BCM.Project":
> AddContactEntryIDsFromProject objNS, _
> bcmRootFolder, oItem, astrContactEntryIDs
> Case Else:
> ' Invalid BCM type
> Exit Function
> End Select
> End If
> Next ' Add selected items
>
> ' Add recipients
> If astrContactEntryIDs(0) = "" Then

 
A

AspMkt

If you want to email the person running BCM (which I did) wondering why this
hasn't been addressed since 2007 here's the email
mukeshag@online.microsoft.com. Maybe they'll pay attention if enough people
email over.

"Deanok" wrote:

> Well, the Clinton Ford post was in 2007, and as far as I can tell there is
> STILL no way to easily create a single letter from an Outlook 2007 or BCM
> contact!
>
> "Clinton Ford [MSFT]" wrote:
>
> > Craig,
> >
> > Thanks for this suggestion. We are currently working on a solution for this scenario. In the mean time, I've written a handy
> > Outlook toolbar button macro to simplify this process. Below are instructions to add the button to your Outlook toolbar and the
> > actual macro code. Be sure to modify the file paths for your e-mail and letter templates near the top of the macro code. Let me
> > know if you have any questions.
> >
> > To create these buttons on your Outlook toolbar:
> > 1.) Verify that your security settings will prompt you to run unsigned macros by selecting
> > "Tools | Trust Center..." from the main Outlook window.
> > Then click "Macro Security" and select "Warnings for all macros" and click "OK"
> > 2.) Create a Macro from the main Outlook window by selecting "Tools | Macro | Macros..."
> > 3.) Type "Email" as the Macro Name, then click "Create"
> > 4.) The Visual Basic editing window will open. On the left-hand side is a project navigation pane.
> > Right-click on the top-level item named "Project1" and select "Project1 Properties..."
> > 5.) Change "Project1" to "Business" and click "OK"
> > 6.) In the main code area, you'll see "Sub Email()", followed by "End Sub".
> > Replace those two lines with the VBA code below, then click Save.
> > 7.) Close the Visual Basic window to return to Outlook
> > 8.) Right-click on the Outlook toolbar and click "Customize..."
> > 9.) Select the "Commands" tab, select the "Macro" from the Categories list,
> > then drag "Business.Letter" and "Business.Email" to the standard Outlook toolbar
> > and click "Close" on the "Customize" dialog.
> > 10.) Select a business contact or account, then click the "Business.Email" button.
> >
> > '//////////////////////////////////////////////////////////////////////////
> > ' Create a New Business E-mail for selected Business Contact(s) or Contacts
> > ' linked to the selected Account(s), Opportunity(s), or Busines Project(s)
> > Sub Email()
> > ' E-MAIL TEMPLATE: If you use an e-mail template, enter its path here
> > Const emailFilePath = "C:\E-mail Thank You.docx"
> > OpenCampaign True, emailFilePath
> > End Sub
> >
> > ' Create a New Business Letter for selected Business Contact(s) or Contacts
> > ' linked to the selected Account(s), Opportunity(s), or Busines Project(s)
> > Sub Letter()
> > ' LETTER TEMPLATE: If you use a letter template, enter its path here
> > Const letterFilePath = "C:\Thank You.docx"
> > OpenCampaign False, letterFilePath
> > End Sub
> >
> > ' Open a new Marketing Campaign with the appropriate settings
> > Sub OpenCampaign(Email As Boolean, contentFilePath As String)
> >
> > ' Get a reference to the MAPI namespace
> > Dim objNS As Outlook.NameSpace
> > Set objNS = Application.GetNamespace("MAPI")
> >
> > ' Make sure at least one item is selected
> > If Application.ActiveExplorer Is Nothing Then
> > MsgBox "Please select at least one item"
> > Exit Sub
> > End If
> > If Application.ActiveExplorer.selection Is Nothing Then
> > MsgBox "Please select at least one item"
> > Exit Sub
> > End If
> >
> > ' Get a reference to the currently selected item
> > Dim oItem As Object
> > Set oItem = Application.ActiveExplorer.selection(1)
> > If oItem Is Nothing Then
> > MsgBox "Please select at least one item"
> > Exit Sub
> > End If
> >
> > ' Get a reference to the currently selected Outlook folder
> > Dim currentFolder As Outlook.Folder
> > Set currentFolder = Application.ActiveExplorer.currentFolder
> > If currentFolder Is Nothing Then
> > MsgBox "Please select at least one item"
> > Exit Sub
> > End If
> >
> > ' Verify that this folder is located in the Business Contact
> > ' Manager Outlook Store
> > If 1 <> InStr(1, currentFolder.FullFolderPath, _
> > "\\Business Contact Manager\", vbTextCompare) Then
> > MsgBox "Please select at least one Business Contact, Account, " & _
> > "Opportunity, or Business Project"
> > Exit Sub
> > End If
> >
> > ' Get the root BCM folder
> > Dim olFolders As Outlook.Folders
> > Dim bcmRootFolder As Outlook.Folder
> > Set olFolders = objNS.Session.Folders
> > If olFolders Is Nothing Then
> > MsgBox "Unable to get the list of Outlook Session folders"
> > Exit Sub
> > End If
> > Set bcmRootFolder = olFolders("Business Contact Manager")
> >
> > ' Get an XML recipient list
> > Dim strRecipientXML As String
> > strRecipientXML = _
> > GetRecipientXML(objNS, _
> > Application.ActiveExplorer.selection, _
> > bcmRootFolder)
> > If Trim(strRecipientXML) = "" Then
> > MsgBox "Please select at least one Business Contact, Account, " & _
> > "Opportunity, or Business Project"
> > Exit Sub
> > End If
> >
> > ' Locate the Marketing Campaigns folder
> > Dim marketingCampaignFolder As Outlook.Folder
> > Set marketingCampaignFolder = _
> > bcmRootFolder.Folders("Marketing Campaigns")
> >
> > ' Create a new Marketing Campaign
> > Const MarketingCampaignMessageClass = "IPM.Task.BCM.Campaign"
> > Dim newMarketingCampaign As Outlook.TaskItem
> > Set newMarketingCampaign = _
> > marketingCampaignFolder.Items.Add(MarketingCampaignMessageClass)
> >
> > ' Campaign Code
> > Dim campaignCode As Outlook.userProperty
> > Set campaignCode = newMarketingCampaign.ItemProperties("Campaign Code")
> > If campaignCode Is Nothing Then
> > Set campaignCode = _
> > newMarketingCampaign.ItemProperties.Add("Campaign Code", _
> > olText, False, False)
> > End If
> > campaignCode.value = CStr(Now())
> >
> > ' Campaign Type
> > Dim campaignType As Outlook.userProperty
> > Set campaignType = _
> > newMarketingCampaign.ItemProperties("Campaign Type")
> > If campaignType Is Nothing Then
> > Set campaignType = _
> > newMarketingCampaign.ItemProperties.Add("Campaign Type", _
> > olText, False, False)
> > End If
> >
> > ' Delivery Method
> > Dim deliveryMethod As Outlook.userProperty
> > Set deliveryMethod = _
> > newMarketingCampaign.ItemProperties("Delivery Method")
> > If deliveryMethod Is Nothing Then
> > Set deliveryMethod = _
> > newMarketingCampaign.ItemProperties.Add("Delivery Method", _
> > olText, False, False)
> > End If
> >
> > ' See if this is an e-mail or print letter
> > Dim title As String
> > If Email Then
> > title = "E-mail to "
> > campaignType.value = "E-mail"
> > deliveryMethod.value = "Word E-Mail Merge"
> > Else
> > title = "Letter to "
> > campaignType.value = "Direct Mail Print"
> > deliveryMethod.value = "Word Mail Merge"
> > End If
> >
> > ' Marketing Campaign Title
> > Select Case oItem.MessageClass
> > Case "IPM.Contact.BCM.Contact":
> > title = title & oItem.FullName
> > Case "IPM.Contact.BCM.Account":
> > title = title & oItem.FullName
> > Case "IPM.Task.BCM.Opportunity":
> > title = title & oItem.subject
> > Case "IPM.Task.BCM.Project"
> > title = title & oItem.subject
> > End Select
> >
> > newMarketingCampaign.subject = title
> >
> > ' Content File
> > Dim contentFile As Outlook.userProperty
> > Set contentFile = newMarketingCampaign.ItemProperties("Content File")
> > If contentFile Is Nothing Then
> > Set contentFile = _
> > newMarketingCampaign.ItemProperties.Add("Content File", _
> > olText, False, False)
> > End If
> > contentFile.value = contentFilePath
> >
> > ' FormQuerySelection
> > Dim formQuerySelection As Outlook.userProperty
> > Set formQuerySelection = _
> > newMarketingCampaign.ItemProperties("FormQuerySelection")
> > If formQuerySelection Is Nothing Then
> > Set formQuerySelection = _
> > newMarketingCampaign.ItemProperties.Add("FormQuerySelection", _
> > olInteger, False, False)
> > End If
> > formQuerySelection.value = 9 ' Custom Query
> >
> > ' Recipient List XML
> > Dim recipientListXML As Outlook.userProperty
> > Set recipientListXML = _
> > newMarketingCampaign.ItemProperties("Recipient List XML")
> > If recipientListXML Is Nothing Then
> > Set recipientListXML = _
> > newMarketingCampaign.ItemProperties.Add("Recipient List XML", _
> > olText, False, False)
> > End If
> >
> > ' Set the Recipient List XML
> > recipientListXML.value = strRecipientXML
> >
> > ' Save the marketing campaign
> > newMarketingCampaign.Save
> >
> > ' Launch the new marketing campaign
> > newMarketingCampaign.Display (False)
> >
> > Set recipientListXML = Nothing
> > Set formQuerySelection = Nothing
> > Set deliveryMethod = Nothing
> > Set contentFile = Nothing
> > Set campaignType = Nothing
> > Set campaignCode = Nothing
> > Set newMarketingCampaign = Nothing
> > Set marketingCampaignFolder = Nothing
> > Set bcmRootFolder = Nothing
> > Set olFolders = Nothing
> > Set oItem = Nothing
> > Set currentFolder = Nothing
> > Set objNS = Nothing
> > End Sub
> >
> > ' Returns an XML string that specifies the recipients
> > Function GetRecipientXML(objNS As Outlook.NameSpace, _
> > selectionList As Outlook.selection, _
> > bcmRootFolder As Outlook.Folder) As String
> > ' Initialize the retun value to empty string
> > GetRecipientXML = ""
> > ' Make sure we have a valid parameters
> > If objNS Is Nothing Or _
> > selectionList Is Nothing Or _
> > bcmRootFolder Is Nothing Then
> > Exit Function
> > End If
> >
> > ' Build the recipient XML
> > Dim strRecipientXML
> > strRecipientXML = "<ArrayOfCampaignRecipient>"
> >
> > ' Add all selected items to the recipient list
> > Dim oItem As Object
> > Dim astrContactEntryIDs() As String
> > ReDim Preserve astrContactEntryIDs(0)
> > Dim contactEntryID As Variant
> > Dim oParentEntryID As Object
> > Dim oParent As Object
> >
> > For Each oItem In selectionList
> > If oItem Is Nothing Then
> > MsgBox "Warning: Item not found"
> > Else
> > ' Only get the EntryID if this is a Business Contact, Account,
> > ' Opportunity, or Business Project
> > Select Case oItem.MessageClass
> > ' Business Contact
> > Case "IPM.Contact.BCM.Contact":
> > AddCampaignRecipient astrContactEntryIDs, oItem.EntryID
> > ' Account
> > Case "IPM.Contact.BCM.Account":
> > AddCampaignRecipient astrContactEntryIDs, oItem.EntryID
> > ' Add Business Contacts associated with this Account
> > AddContactEnryIdsFromAccount objNS, bcmRootFolder, _
> > CStr(oItem.EntryID), _
> > astrContactEntryIDs
> > ' Opportunity
> > Case "IPM.Task.BCM.Opportunity":
> > ' Get the parent item
> > Set oParentEntryID = _
> > oItem.UserProperties("Parent Entity EntryID")
> > If oParentEntryID Is Nothing Then
> > MsgBox ("This opportunity is not linked to a " & _
> > "Business Contact or Account")
> > Else
> > AddCampaignRecipient astrContactEntryIDs, _
> > oParentEntryID.value
> > ' Add Business Contacts associated with Account
> > AddContactEnryIdsFromAccount objNS, _
> > bcmRootFolder, _
> > CStr(oParentEntryID.value), _
> > astrContactEntryIDs
> > End If
> > ' Business Project
> > Case "IPM.Task.BCM.Project":
> > AddContactEntryIDsFromProject objNS, _
> > bcmRootFolder, oItem, astrContactEntryIDs
> > Case Else:
> > ' Invalid BCM type
> > Exit Function

 
Status
Not open for further replies.
Top