‘Open Table’ button for ArcMap
How to open a the table window for the selected layer or standalone table in the table of contents in ArcMap with a button. 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 (source). [Tip: which you can execute with Ctrl-2x-Click-on-layer]
- 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