English

How To: Access a Shapefile with IWorkspaceName

Summary

Note:
This article pertains to ArcGIS versions 8.x and 9.x. Later versions of ArcGIS may contain different functionality, as well as different names and locations for menus, commands and geoprocessing tools.

Below is a sample of how to access a Shapefile with the Name objects (IName).

Note: 
Support for Visual Basic for Applications (VBA) for ArcMap and ArcCatalog ended with the ArcGIS 10.2.2 release, and Esri has not included VBA compatibility setups since version 10.5. See: ArcGIS Desktop and VBA Moving Forward

Procedure

The following code shows how to access a Shapefile using the IFeatureClassName interface.

  1. Start ArcMap.
  2. Create a new UIButtonControl: How To: Create a new UIButtonControl​
Note:
For more information on creating a UIControl, see the ArcGIS Desktop Help topic: 'Creating custom commands with VBA and UI Controls'
  1. Right-click the UIButtonControl and select View Source.
  2. Copy the following code into the UIButtonControl's click event.
''This is how to Use the IWorkspaceName interface to get access to a ShapeFile.
''Users should change the following 2 variables**************
    ''This is the directory where the ShapeFile lives...
    Dim StrPathToDataBase As String
    StrPathToDataBase = "H:\ESRIDATA\MEXICO"
    
    ''This is the name of the ShapeFile...
    Dim StrFeatureClassName As String
    StrFeatureClassName = "States"
''****************************************************

    ''This is the connection information that is used to access the WorkSpace...
    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.ShapeFileWorkspaceFactory"
    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)