Files

You can link files to an Account, Business Contact, Opportunity, or Business Project object. When you link a file to an object record, the file appears in the Account History Items, Business Contact History Items, Opportunity History Items, or Business Project History Items section of the record. You can link various types of files to your records, such as letters to customers, Excel spreadsheets with supporting data, and graphics.

The following C# and Visual Basic for Applications (VBA) examples show how to add a file to a new Account object.

C#

  private void CreateNAddFile()
        {
            Outlook.ApplicationClass _app = new Outlook.ApplicationClass();
            Outlook.Application olApp = (Outlook.Application)_app;
            Outlook.NameSpace olNameSpace = _app.GetNamespace("MAPI");
            Outlook.Folders folders = olNameSpace.Session.Folders;
            Outlook.Folder bcmRootFolder = (Outlook.Folder)folders["Business Contact Manager"];
            Outlook.UserProperty userProp;

            Outlook.Folder accountsFolder = (Outlook.Folder)bcmRootFolder.Folders["Accounts"];
            Outlook.ContactItem newAccount = (Outlook.ContactItem)accountsFolder.Items.Add("IPM.Contact.BCM.Account");

            newAccount.FullName = "Wide World Importers";
            newAccount.FileAs = "WWImporters";
            newAccount.Save();

            string accountEntryID = newAccount.EntryID;

            Outlook.Folder historyFolder = (Outlook.Folder)bcmRootFolder.Folders["Communication History"];

            Outlook.JournalItem journalItem = (Outlook.JournalItem)historyFolder.Items.Add("IPM.Activity.BCM");


            if (journalItem.UserProperties["Parent Entity EntryID"] == null)
            {
                userProp = journalItem.UserProperties.Add("Parent Entity EntryID", Microsoft.Office.Interop.Outlook.OlUserPropertyType.olText, false, false);
                userProp.Value = accountEntryID;
            }

            journalItem.Subject = "ExistingFile.txt";
            journalItem.Type = "File";

            if (journalItem.UserProperties["LinkToOriginal"] == null)
            {
                userProp = journalItem.UserProperties.Add("LinkToOriginal", Microsoft.Office.Interop.Outlook.OlUserPropertyType.olText, false, false);
                userProp.Value = @"c:\ExistingFile.txt";
            }

            journalItem.Save();

        }


VBA

  Sub CreateNAddFile()

   Dim olApp As Outlook.Application
   Dim objNS As Outlook.NameSpace
   Dim bcmRootFolder As Outlook.Folder
   Dim olFolders As Outlook.Folders
   Dim bcmAccountsFldr As Outlook.Folder
   Dim bcmContactsFldr As Outlook.Folder
   Dim bcmHistoryFolder As Outlook.Folder
   Dim bcmOppFolder As Outlook.Folder
   Dim bcmProjFolder As Outlook.Folder
   Dim newAcct As Outlook.ContactItem
   Dim objFile As Outlook.JournalItem
   Dim newContact As Outlook.ContactItem
   Dim newOpportunity As Outlook.TaskItem
   Dim newProject As Outlook.TaskItem
   Dim userProp As Outlook.UserProperty

   Set olApp = CreateObject("Outlook.Application")
   Set objNS = olApp.GetNamespace("MAPI")
   Set olFolders = objNS.Session.Folders
   Set bcmRootFolder = olFolders("Business Contact Manager")
   Set bcmAccountsFldr = bcmRootFolder.Folders("Accounts")
   Set bcmContactsFldr = bcmRootFolder.Folders("Business Contacts")
   Set bcmHistoryFolder = bcmRootFolder.Folders("Communication History")

   MsgBox ("If you don't have a file C:\test.txt, double clicking it in the records history shows 'File Not found'")

   Set newAcct = bcmAccountsFldr.Items.Add("IPM.Contact.BCM.Account")
   newAcct.FullName = "Wide World Importers"
   newAcct.FileAs = "Wide World Importers"
   newAcct.Email1Address = "someone@example.com"
   newAcct.Save

   Set objFile = bcmHistoryFolder.Items.Add("IPM.Activity.BCM")
   
   If (objFile.UserProperties("Parent Entity EntryID") Is Nothing) Then
        Set userProp = objFile.UserProperties.Add("Parent Entity EntryID", olText, False, False)
        userProp.Value = newAcct.EntryID
   End If

   objFile.Subject = "test.txt"
   objFile.Type = "File"
   
   If (objFile.UserProperties("LinkToOriginal") Is Nothing) Then
        Set userProp = objFile.UserProperties.Add("LinkToOriginal", olText, False, False)
        userProp.Value = "c:\test.txt"
   End If
   
   objFile.Save

   Set newContact = bcmContactsFldr.Items.Add("IPM.Contact.BCM.Contact")
   newContact.FullName = "John Smith"
   newContact.FileAs = "John Smith"
   newContact.Save

   Set objFile = bcmHistoryFolder.Items.Add("IPM.Activity.BCM")
   
   If (objFile.UserProperties("Parent Entity EntryID") Is Nothing) Then
        Set userProp = objFile.UserProperties.Add("Parent Entity EntryID", olText, False, False)
        userProp.Value = newContact.EntryID
   End If
   
   objFile.Subject = "test.txt"
   objFile.Type = "File"
   
   If (objFile.UserProperties("LinkToOriginal") Is Nothing) Then
        Set userProp = objFile.UserProperties.Add("LinkToOriginal", olText, False, False)
        userProp.Value = "c:\test.txt"
   End If
   
   objFile.Save

   Set bcmOppFolder = bcmRootFolder.Folders("Opportunities")

   Set newOpportunity = bcmOppFolder.Items.Add("IPM.Task.BCM.Opportunity")
   newOpportunity.Subject = "Opportunity For Wide World Importers to enter into Retail Field"
   
   If (newOpportunity.UserProperties("Parent Entity EntryID") Is Nothing) Then
        Set userProp = newOpportunity.UserProperties.Add("Parent Entity EntryID", olText, False, False)
        userProp.Value = newAcct.EntryID
   End If
   
   newOpportunity.Save

   Set objFile = bcmHistoryFolder.Items.Add("IPM.Activity.BCM")
   
   If (objFile.UserProperties("Parent Entity EntryID") Is Nothing) Then
        Set userProp = objFile.UserProperties.Add("Parent Entity EntryID", olText, False, False)
        userProp.Value = newOpportunity.EntryID
   End If
      
   objFile.Subject = "test.txt"
   objFile.Type = "File"
   
   If (objFile.UserProperties("LinkToOriginal") Is Nothing) Then
        Set userProp = objFile.UserProperties.Add("LinkToOriginal", olText, False, False)
        userProp.Value = "c:\test.txt"
   End If
   
   objFile.Save

   Set bcmProjFolder = bcmRootFolder.Folders("Business Projects")

   Set newProject = bcmProjFolder.Items.Add("IPM.Task.BCM.Project")
   newProject.Subject = "Project For Wide World Importers to enter into Retail Field"
   
   If (newProject.UserProperties("Parent Entity EntryID") Is Nothing) Then
        Set userProp = newProject.UserProperties.Add("Parent Entity EntryID", olText, False, False)
        userProp.Value = newAcct.EntryID
   End If
   
   newProject.Save

   Set objFile = bcmHistoryFolder.Items.Add("IPM.Activity.BCM")
   
   If (objFile.UserProperties("Parent Entity EntryID") Is Nothing) Then
        Set userProp = objFile.UserProperties.Add("Parent Entity EntryID", olText, False, False)
        userProp.Value = newProject.EntryID
   End If
   
   objFile.Subject = "test.txt"
   objFile.Type = "File"
   
   If (objFile.UserProperties("LinkToOriginal") Is Nothing) Then
        Set userProp = objFile.UserProperties.Add("LinkToOriginal", olText, False, False)
        userProp.Value = "c:\test.txt"
   End If
   
   objFile.Save
   
   Set objFile = Nothing
   
   Set objFile = bcmHistoryFolder.Items.Find("[Subject] = 'test.txt'")
   
   Debug.Print objFile.UserProperties("Created/Due").Value
   

   Set objFile = Nothing
   Set existAcct = Nothing
   Set newProject = Nothing
   Set newOpportunity = Nothing
   Set newContact = Nothing
   Set bcmContactsFldr = Nothing
   Set bcmProjFolder = Nothing
   Set bcmAccountsFldr = Nothing
   Set bcmHistoryFolder = Nothing
   Set olFolders = Nothing
   Set bcmRootFolder = Nothing
   Set objNS = Nothing
   Set olApp = Nothing

End Sub 

See Also

About Communication History Items | 2007 Office System: Updated Developer Content