How To: Add an Annotation FeatureClass from a Personal Geodatabase to ArcMap with ArcObjects


Instructions provided describe how to add an Annotation FeatureClass to ArcMap. In this example the annotation resides in a Personal GeoDatabase.



  1. Start ArcMap.
  2. Create a new UIButtonControl: How To: Create a new UIButtonControl
     For more information on creating a UIControl, see the ArcGIS Desktop Help topic 'Creating custom commands with VBA and UI Controls'
  3. Right-click the UIButtonControl and select View Source.
  4. Copy below code into the UIButtonControl's click event.
    Dim strPathName As String 
    strPathName = "D:\temp\yellowstone.mdb" ' Replace with the name of your Personal Geodatabase
  5. Modify the value of strPathName to reflect the location of your Personal Geodatabase.
  6. Copy the code below into the UIButtonControl's click event, immediately after the code you entered in Step 4.
    Dim strData As String 
    strData = "AnnoRoad" ' Replace with the name of your annotation FeatureClass
  7. Modify the value of strData to point to the annotation Feature Class in your Personal Geodatabase.
  8. Copy the code below into the UIButtonControl's click event, immediately after the code you entered in Step 6.
    ' Set up the WorkspaceFactory
    Dim pWorkspaceName As IWorkspaceName 
    Set pWorkspaceName = New WorkspaceName 
    pWorkspaceName.WorkspaceFactoryProgID = "esricore.AccessWorkspaceFactory" 
    pWorkspaceName.PathName = strPathName 
    Dim pDatasetName As IDatasetName 
    Set pDatasetName = New FeatureClassName 
    pDatasetName.Name = strData 
    Set pDatasetName.WorkspaceName = pWorkspaceName 
    ' Use a lightweight Name object to open the table.
    Dim pName As IName 
    Set pName = pDatasetName  ' QI 
    Dim pTable As ITable 
    Set pTable = pName.Open 
    Dim pFeatClass As IDataset 
    Set pFeatClass = ptable 
    Dim pFeatLay As IFeatureLayer 
    'IFDOGraphicsLayerFactory::OpenGraphicsLayer IS THE KEY to accessing the data! 
    Dim pFDOGraphicsLayerFactory As IFDOGraphicsLayerFactory 
    Set pFDOGraphicsLayerFactory = New FDOGraphicsLayerFactory 
    ' Modify this line of code
    Set pFeatLay = pFDOGraphicsLayerFactory.OpenGraphicsLayer(pfeatclass.Workspace, Nothing, "AnnoRoad") 
    'Assign the name in the Table of Contents 
    pFeatLay.Name = pFeatClass.Name 
    ' Add the annotation to ArcMap
    Dim pMap As IMap 
    Dim pMxDoc As IMxDocument 
    Set pMxDoc = ThisDocument 
    Set pMap = pMxDoc.ActiveView 
    pMap.AddLayer pFeatLay 
    Dim pAV As IActiveView 
    Set pAV = pMap 
  9. Modify the third argument passed to the OpenGraphicsLayer method to point to the input annotation Feature Class.
  10. Test the code.