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.
The sample code provided is to programmatically change a layer's data source in ArcMap.
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
Note: For more information on creating a UIControl, see the ArcGIS Desktop Help topic: 'Creating custom commands with VBA and UI Controls'
Dim pmxdoc As IMxDocument Set pmxdoc = ThisDocument Dim pmap As IMap Set pmap = pmxdoc.ActiveView Dim pfeatlayer As IFeatureLayer Set pfeatlayer = pmap.Layer(0) Dim pdatalayer As IDataLayer Set pdatalayer = pfeatlayer Dim pname As IName Dim strTable As String Dim strLocation As String ' Set the path to the directory containing the shapefile. strLocation = "C:\testing\canada" ' Set the shapefile name to be used as the data source. strTable = "provinces" Dim pdatasetname As IDatasetName Dim ptable As ITable Dim pwrkspc As IWorkspaceName Set pwrkspc = New WorkspaceName pwrkspc.PathName = strLocation ' If a data source other than a shapefile is used, ' the workspace type will need to be changed. pwrkspc.WorkspaceFactoryProgID = "esricore.shapefileworkspacefactory.1" Set pdatasetname = New TableName pdatasetname.Name = strTable Set pdatasetname.WorkspaceName = pwrkspc Set pname = pdatasetname Set ptable = pname.Open Dim pgeodataset As IGeoDataset Set pgeodataset = ptable Set m_penv = pgeodataset.Extent Dim pfcname As IDatasetName Set pfcname = pname pdatalayer.DataSourceName = pname Dim pav As IActiveView Set pav = pmap pav.Extent = m_penv Set pav = pmap pav.Refresh