If you are using the ArcObjects/VBA macro in ArcMap approach you can do the following (sorry some of the code examples are in .NET, but the idea is the same):
for number 2 use ArcMap Command Zoom to Selected Features:
Dim pUID As New UID
Dim pCmdItem As ICommandItem
Dim pApp As IApplication
' Use the GUID of the Save command
pUID.Value = "esriArcMapUI.ZoomToSelectedCommand"
pUID.SubType = 3
pCmdItem = pApp.Document.CommandBars.Find(pUID)
pCmdItem.Execute()
for number 3:
Dim pLayoutS As IPageLayout2
Dim pGCS As IGraphicsContainer
Dim pTS As ITextElement
Dim pAvS As IActiveView
Dim pElPropS As IElementProperties
Dim pElementS As IElement
pLayoutS = CType(m_pMxDoc2.PageLayout, IPageLayout2)
pGCS = CType(pLayoutS, IGraphicsContainer)
pAvS = CType(pLayoutS, IActiveView)
pGCS.Reset()
pElementS = pGCS.Next
'Get existing date graphic and update time and date.
Do Until pElementS Is Nothing
pElPropS = CType(pElementS, IElementProperties)
If pElPropS.Name = "Current Text" Then
pTS = CType(pElementS, ITextElement)
pTS.Text = "New Text"
pAvS.PartialRefresh(esriViewDrawPhase.esriViewGraphics, pElementS, Nothing)
End If
pElementS = pGCS.Next
Loop
for number 4, can you turn off the layers that you do not want to show in the legend:
Dim pMap As IMap = Nothing
Dim pLayer As ILayer
Dim pGroupLayer As IGroupLayer = Nothing
Dim i As Integer
Dim pGrphcon As IGraphicsContainer = Nothing
Dim pElem As IElement = Nothing
Dim pTxtElem As ITextElement = Nothing
'Dim pElPropS As IElementProperties
Dim pAvS As IActiveView = Nothing
Dim pPageLayout As IPageLayout
pPageLayout = m_pMxDoc2.PageLayout
m_pMxDoc2.ActiveView = pPageLayout
pMap = m_pMxDoc2.FocusMap
Dim pContentsView As IContentsView
pContentsView = m_pMxDoc2.CurrentContentsView
For i = 0 To pMap.LayerCount - 1
If pMap.Layer(i).Name = "My Layer to turn off" Then
pLayer = pMap.Layer(i)
If TypeOf pLayer Is IGroupLayer Then
pGroupLayer = pLayer
pContentsView.SelectedItem = pLayer
'Turn off layer here in TOC
pGroupLayer.Visible = False
strLayerName = pLayer.Name
m_pMxDoc2.UpdateContents()
m_pMxDoc2.ActiveView.Refresh()
End If
End If
Next i
for number 5:
See this example - Export Active View to JPEG