How To: Access a FeatureClass in a Personal GeoDatabase with IWorkspaceName


Below is a sample of how to access a FeatureClass in a Personal geodatabase with the Name objects (IFeatureClassName).



  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 the following code into the UIButtonControl's click event.
    Public Sub OpenPersonalPGDBaseNameObjects()
    ''This is how to use the IWorkspaceName interface to get access to a FeatureClass in a
    ''Users should change the following 2 variables**************
        ''This is directory where the FeatureClass lives...
        Dim StrPathToDataBase As String
        StrPathToDataBase = "H:\2002_VB6_ArcObjects\data\Sample.mdb"
        ''This is the name of the ShapeFile...
        Dim StrFeatureClassName As String
        StrFeatureClassName = "testData"
        ''This is the connection information that is used to access SDE...
        Dim ppropset As IPropertySet2
        Set ppropset = New PropertySet
       ppropset.SetProperty "DATABASE", StrPathToDataBase
        Dim pWorkSpaceName2 As IWorkspaceName2
        Set pWorkSpaceName2 = New WorkspaceName
        ''Notice this is a String. The ArcObjects help should have a listing of the
        ''other types (featureclass, tables, etc etc)
        pWorkSpaceName2.WorkspaceFactoryProgID = "esriCore.AccessWorkspaceFactory"
        pWorkSpaceName2.ConnectionProperties = ppropset
        Dim pname As IName
        Set pname = pWorkSpaceName2
        Dim pFeatureWorkspace As IFeatureWorkspace
        Set pFeatureWorkspace = pname.Open
        Dim pfeatureclass As IFeatureClass
        '''Look at the IFeatureWorkSpace as you can open Tables, DataSets, etc etc...
        '''Below we use IFeatureWorkSpace::OpenFeatureClass to get a FeatureClass...
        Set pfeatureclass = pFeatureWorkspace.OpenFeatureClass(StrFeatureClassName)
        ''Proving you have a featureclass...
        MsgBox pfeatureclass.FeatureCount(Nothing)
    End Sub