HOW TO
The sample code in this article shows how to insert a legend into ArcMap using VBA and ArcObjects.
Note:
Code in the Project's ThisDocument code module will only run in the current map document. If you want to store the code in all your map documents, open the Normal.mxt ThisDocument code module instead.
Code:
Public Sub AddMapSurrounds()
Dim pMxDoc As IMxDocument
Dim pActiveView As IActiveView
Dim pEnv As IEnvelope
Dim pId As New UID
Dim pMapSurround As IMapSurround
Set pMxDoc = ThisDocument
Set pActiveView = pMxDoc.PageLayout
Set pEnv = New Envelope
pEnv.PutCoords 7.5, 0.2, 8.5, 4
pId.Value = "esricore.Legend"
Set pMapSurround = CreateSurround(pId, pEnv, "Legend", pMxDoc.FocusMap, pMxDoc.PageLayout)
pActiveView.PartialRefresh esriViewGraphics, Nothing, Nothing
End Sub
Private Function CreateSurround(pId As UID, pEnv As IEnvelope, strName As String, _
pMap As IMap, pPageLayout As IPageLayout) As IMapSurround
Dim pGc As IGraphicsContainer
Dim pActiveView As IActiveView
Dim pMapSurroundFrame As IMapSurroundFrame
Dim pMapSurround As IMapSurround
Dim pMapFrame As IMapFrame
Dim pElement As IElement
Set pGc = pPageLayout
Set pMapFrame = pGc.FindFrame(pMap)
Set pMapSurroundFrame = pMapFrame.CreateSurroundFrame(pId, Nothing)
pMapSurroundFrame.MapSurround.Name = strName
Set pElement = pMapSurroundFrame
Set pActiveView = pPageLayout
pElement.Geometry = pEnv
pElement.Activate pActiveView.ScreenDisplay
pGc.AddElement pElement, 0
Set CreateSurround = pMapSurroundFrame.MapSurround
End Function
Get help from ArcGIS experts
Download the Esri Support App