‘Open Table’ button for ArcMap

imageHow 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]

  1. Add a new UIButtonControl to any toolbar.
  2. Right-click on the command and select view source, then paste the code below here.
  3. Make sure the names of the controls match, the sample assumes the command is called UIButtonControl1.
  4. Completely close VBA so that events on the UIButtonControl fire correctly.
  5. Select a layer or standalone table in the table of contents and click the command.
  6. 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

Leave a Reply

Your email address will not be published. Required fields are marked *