HOW TO
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 following sample code will convert a VPF dataset to a personal geodatabase dataset.
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'
Sub vpf2gdb() ' This runs from ArcMap. 'Set the InputWorkspaceFactory. Dim pInWorkspaceFact As IWorkspaceFactory Set pInWorkspaceFact = New VpfWorkspaceFactory 'Create a PropertySet with which to open workspace. Dim pInPropSet As IPropertySet Set pInPropSet = New PropertySet pInPropSet.SetProperty "database", "E:\WORK\UVMAP\UVMAP" 'Open Workspace. Dim pInWorkspace As IWorkspace Set pInWorkspace = pInWorkspaceFact.Open(pInPropSet, 0) Dim pFeatWorkspace As IFeatureWorkspace Set pFeatWorkspace = pInWorkspace 'Open the Feature Dataset. Dim pFeatDataset As IFeatureDataset Set pFeatDataset = pFeatWorkspace.OpenFeatureDataset("baydhabo:trans") 'Set Dataset Name. Dim pInDatasetName As IDatasetName Set pInDatasetName = pFeatDataset.FullName 'Set up the Output WorkspaceFactory. Dim pOutWorkspaceFactory As IWorkspaceFactory Set pOutWorkspaceFactory = New AccessWorkspaceFactory 'Create a PropertySet with which to open workspace. Dim pOutPropSet As IPropertySet Set pOutPropSet = New PropertySet pOutPropSet.SetProperty "Database", "e:\work" 'Create output WorkspaceName. Dim pOutWorkspaceName As IWorkspaceName Set pOutWorkspaceName = pOutWorkspaceFactory.Create("e:\work", _ "VPFtoGDB", pOutPropSet, 0) Dim pOutFeatDatasetName As IFeatureDatasetName Set pOutFeatDatasetName = New FeatureDatasetName Dim pOutDatasetName As IDatasetName Set pOutDatasetName = pOutFeatDatasetName Set pOutDatasetName.WorkspaceName = pOutWorkspaceName pOutDatasetName.Name = pInDatasetName.Name 'QI for IFeatureDatasetName Dim pFeatDatasetName As IFeatureDatasetName Set pFeatDatasetName = pInDatasetName Dim pEnumDS_FCName As IEnumDatasetName Set pEnumDS_FCName = pFeatDatasetName.FeatureClassNames Dim pDS_FCName As IDatasetName Set pDS_FCName = pEnumDS_FCName.Next 'Convert each featureclass in enumeration. Do While Not pDS_FCName Is Nothing 'QI for IFeatureClassName Dim pFeatClassName As IFeatureClassName Set pFeatClassName = pDS_FCName 'QI for IName Dim pName As IName Set pName = pFeatClassName 'Open FeatureClass Dim pFeatClass As IFeatureClass Set pFeatClass = pName.Open 'QI for IDataset Dim pTempDataset As IDataset Set pTempDataset = pFeatClass 'Use IFieldChecker to verify the field names are valid. Dim pFields As IFields Dim pValidatedFields As IFields Dim pFieldChecker As IFieldChecker 'Get Fields from FeatureClass. Set pFields = pFeatClass.Fields Set pFieldChecker = New FieldChecker pFieldChecker.Validate pFields, Nothing, pValidatedFields 'Create the new output. FeatureClassName object Dim pOutFeatClassName As IFeatureClassName Set pOutFeatClassName = New FeatureClassName 'QI for IDatasetName Dim pOutDataset_FCName As IDatasetName Set pOutDataset_FCName = pOutFeatClassName 'Set the Name of the FeatClassName. pOutDataset_FCName.Name = pTempDataset.Name Dim pFeatDataConv As IFeatureDataConverter Set pFeatDataConv = New FeatureDataConverter pFeatDataConv.ConvertFeatureClass pFeatClassName, Nothing, _ pOutFeatDatasetName, pOutFeatClassName, Nothing, _ pValidatedFields, "", 1000, 0 Set pDS_FCName = pEnumDS_FCName.Next Loop End Sub
Get help from ArcGIS experts
Download the Esri Support App