This sample shows how to open a the table window for the selected layer or standalone table in the table of contents in ArcMap. It provides the same functionality as the Open Attribute Table command on the layer context menu or the open command on the standalone table context menu.
A UIButtonControl is used so the command will only be enabled when a layer or standalonetable is selected in the table of contents.
How to use
- Add a new UIButtonControl to any toolbar.
- Right-click on the command and select view source, then paste the code below here.
- Make sure the names of the controls match, the sample assumes the command is called UIButtonControl1.
- Completely close VBA so that events on the UIButtonControl fire correctly.
- Select a layer or standalone table in the table of contents and click the command.
- The table window for the selected layer or standalone table appears.
Private Sub UIButtonControl1_Click()
Dim pMxDoc As IMxDocument
Dim pUnknown As IUnknown
Dim pLayer As ILayer
Dim pStandaloneTable As IStandaloneTable
Dim pTableWindow2 As ITableWindow2
Dim pExistingTableWindow As ITableWindow
Dim SetProperties As Boolean
'Get the selected item from the current contents view
Set pMxDoc = ThisDocument
Set pTableWindow2 = New TableWindow
Set pUnknown = pMxDoc.SelectedItem
' Determine the selected item's type
' Exit sub if item is not a feature layer or standalone table
If TypeOf pUnknown Is IFeatureLayer Then 'A FeatureLayer
Set pLayer = pUnknown
Set pExistingTableWindow = _
pTableWindow2.FindViaLayer(pLayer)
' Check if a table already exists; if not create one
If pExistingTableWindow Is Nothing Then
Set pTableWindow2.Layer = pLayer
SetProperties = True
End If
ElseIf TypeOf pUnknown Is IStandaloneTable Then
' A standalone table
Set pStandaloneTable = pUnknown
Set pExistingTableWindow = _
pTableWindow2.FindViaStandaloneTable(pStandaloneTable)
' Check if a table already exists; if not, create one
If pExistingTableWindow Is Nothing Then
Set pTableWindow2.StandaloneTable = pStandaloneTable
SetProperties = True
End If
End If
If SetProperties Then
pTableWindow2.TableSelectionAction = esriSelectFeatures
pTableWindow2.ShowSelected = False
pTableWindow2.ShowAliasNamesInColumnHeadings = True
Set pTableWindow2.Application = Application
Else
Set pTableWindow2 = pExistingTableWindow
End If
' Ensure Table Is Visible
If Not pTableWindow2.IsVisible Then pTableWindow2.Show True
End Sub
Private Function UIButtonControl1_Enabled() As Boolean
Dim pDoc As IMxDocument
Dim pMap As IMap
Dim bolEnabled As Boolean
Set pDoc = ThisDocument
Set pMap = pDoc.FocusMap
bolEnabled = True
Dim pSelItem As IUnknown
Set pSelItem = pDoc.SelectedItem
' Disable if the selected item is nothing or if
' it is not a layer or table
If pSelItem Is Nothing Then
bolEnabled = False
ElseIf Not (TypeOf pSelItem Is ILayer Or TypeOf pSelItem Is IStandaloneTable) Then
bolEnabled = False
End If
UIButtonControl1_Enabled = bolEnabled
End Function