字段名提取
用Collection对象方法:
Private Sub UIButtonFields_Click()
' Part 1: Get the feature class and its fields.
Dim pMxDoc As IMxDocument
Dim pMap As IMap
Dim pFeatureLayer As IFeatureLayer
Dim pFeatureClass As IFeatureClass
Dim pFields As IFields
Set pMxDoc = ThisDocument
Set pMap = pMxDoc.FocusMap
Set pFeatureLayer = pMap.Layer(0)
Set pFeatureClass = pFeatureLayer.FeatureClass
Set pFields = pFeatureClass.Fields
' Part 2: Prepare a list of fields and display the list.
Dim ii As Long
Dim aField As IField
Dim fieldName As Variant
Dim theList As New Collection
Dim NameList As Variant
' Loop through each field, and add the field name to a list.
For ii = 0 To pFields.FieldCount - 1
Set aField = pFields.Field(ii)
fieldName = aField.Name
theList.Add (fieldName)
Next
' Display the list of field names in a message box
For Each fieldName In theList
NameList = NameList & fieldName & Chr(13)
Next fieldName
MsgBox NameList, , "Field Names"
End Sub
用数组写的遍历整个框架内的要素类的字段名称:
Sub dkfdkl()
Dim pDoc As IMxDocument
Dim pMap As IMap
Dim pFeatureLayer As IFeatureLayer
Dim pFeatureClass As IFeatureClass
Dim pFields As IFields
Set pDoc = ThisDocument
Set pMap = pDoc.FocusMap
Dim ii As Long
Dim jj As Long
Dim aField As IField
Dim fieldName As Variant
Dim theList() As Variant
Dim NameList As Variant
For jj = 0 To pMap.LayerCount - 1
Set pFeatureLayer = pMap.Layer(jj)
Set pFeatureClass = pFeatureLayer.FeatureClass
Set pFields = pFeatureClass.Fields
ReDim theList(pFields.FieldCount - 1)
NameList = NameList & vbCrLf & pFeatureLayer.Name & vbCrLf
For ii = 0 To pFields.FieldCount - 1
Set aField = pFields.Field(ii)
fieldName = aField.Name
theList(ii) = fieldName
Next
For Each fieldName In theList
NameList = NameList & vbCrLf & fieldName
Next
NameList = NameList & vbCrLf
Next
Debug.Print NameList
End Sub