As with most things Esri, there's likely a few ways to approach my issue, so hoping someone has a good suggestion that doesn't require python or mystic incantations. I am currently on 10.0 but will likely move to 10.2 in a bit, so solutions for either are welcome.

I have a set of 10 or so MXD's that all pertain to the same area but show different things about it. The data for all 10 MXD's comes from the same GDB, and all have different layouts which re-use the same graphical information but lay it out differently, or omit/include certain common information in its surround.

What i want to do is provide the MXD with a central table for that information which the layout would access to populate its graphic elements. There's upwards of 50 bits of graphical text for each map that may or may not be needed for the layout in a particular MXD.

Data Driven Pages sounds promising, but it seems limited to specific things (date saved, page number, etc.). As a lo-fi workaround I'd cooked up a point Feature Class with all the data in it and invisible symbology where I could place labels on top of the point and then move the point to the place on the map where I wanted the info to appear. This worked OK across multiple MXD's for the same area, but when I had to do up 10 maps for a new area, all my spatially aware points were back in the old area and needed to be brought over to the new study area by using topological editing to move them together. Klunky, and also didn't address situations where a piece of information needed to be in one place on one map, but in a different place on another, in that case I had to have 2 points with the same info in their labels... Overall not a great approach.

Ultimately I would like to maintain an Excel file with all graphic element information for one area, have 10 MXD's with different layouts of that information, all accessing that Excel table, and when time comes to do maps for a new area, I make a new Excel table for it's common graphical data, copy my 10 MXD's, change links to the new areas spatial data and excel table, and the maps are well under way with layouts in place and new information in the surround. I would be just as happy if it had to be an attribute table with the graphical element data, either way I just need a table of info driving graphical content, layed out differently from map to map.

So will Data Driven Pages in 10.2 do this for me? Is there another way? Someone has referred me to MapBook for my 10.0 install but it also seems like it's meant not for accessing a table of information to be laid out.

Any suggestions are welcome!

...EDIT: hmmm... the Python solution seems very complicated, and I have taken the ESRI python intro courses and done programming classes, but am trying to find a way to do this without it. Might have to dust off the python books though...

But I am not sure I explained the problem well enough, as there are a few thins in this solution which I don't need, so I'll try explaining it a bit differently.

The area of interest does not change from map to map, let's call it Area A. I have Map A, Map B, Map C... Each map shows Area A but each map has a different layout. There are common map surround elements to each of these maps, and there are some surround info bits particular to Map B, some particular to Map C.

Maps A, B, and C do not all happen at once, I start with Map A and as production goes on and i move to Map B and C i will often return to Map A to make edits and updates. Often it is the surround info which changes, sometimes it's spatial and all i need to do is re-output as-is with new spatial.

Let's say Map A has a graphical text element in the top right corner that says "License No:" and "ABC123", Map B also has that same graphical text element but instead has it in the bottom right corner. Map C doesn't have to show License no. so it omits it, but it has to show a graphical text element that says "Compartment:" and "5", Map A also shows Compartment as well as License, but in different places on the page. Neither Licence No. or Compartment are spatial, they are just information kept in an excel table which aggregates all the information about Area A into a single place for updating and viewing by people without ArcMap.

Now let's say the License no. changes to "XYZ321", and is updated in the Excel table by the appropriate person for all to see and update their respective documents. Currently I have to open Map A, find the graphic text element and change the text in it to "XYZ321", then open Map B, find the element there and change it manually as well. I don't need to output these maps just then, just make sure the information stays in sync. Eventually I will re-output each map, but separately as they are requested with the latest data.

Ideally I don't want to have to open each map containing that graphical element and chnage the text manually, I want the text of the field to update just as if i had changed a .mdb table attribute value in Access, then opened the FC in ArcMap and saw the change as that attribute was used for the labelling of the feature. However with these graphical text elements there is no feature to associate with the text, there is just text in a table.

This approach is a bit like a spreadsheet where one cell is displaying a reference to another cell, change one cell on one sheet and the other cells elsewhere update, but I want to do that on a map to non-spatial objects. As if i could say "place a text object here, and for the text to display look in this table cell".

Seems like a simple idea for software that is all about displaying dynamic information, it's just the non-spatial component of it that seems the tricky bit.

Back to our hypothetical example, let's say i now have Area B under production and need to start producing Map A and Map C but not B yet. Currently I grab the excel sheet for Area B, copy my template for Map A and Map C into a new production folder, open them up and have to manually transfer the Licence and Compartment info from the excel sheet into both maps in the appropriate areas. It would be great if I just had to copy my templates for Map A and Map C, open them and point them to the Area B spreadsheet, and Licence/Compartment would autopopulate with the text from the spreadsheet.

Like I mentioned in the original post, there could be upwards of 50 information bits which could wind up as a graphical element on each map, and there are upwards of 10 map templates I bounce back and forth in over a long period of time while in production. So finding a way to stop having to open a map, find the graphical text element, manually change it to the value I look up in the spreadhseet, save, close, and open the next map template to do the same text swap, would be brilliant.

Perhaps Python is the only way to do this within the limits of ArcDesktop, hopefully not.

  • Data Driven Pages alone won't do this but arcpy.mapping would. However, getting to such a solution via our focussed Q&A format will mean researching/asking a series of questions to get there. As it stands I think your question is too broad and I think you should start by trying to change/move a text element on a map using ArcPy.
    – PolyGeo
    Commented Feb 4, 2015 at 11:34

1 Answer 1


This seems too complicated for a data driven page solution. The workflow below uses python/arcpy.

  1. Create a graphic look up table that contains the following columns/info:

MapArea | AreaOfInterestFCPath | TextName | TextPositionXY | TextSize | TextColor

  1. Create a python script tool that asks the user to select from a drop down the map area
  2. Once script is run it takes the found MapArea name as the script parameter and performs a search cursor/filter on the graphic table to gather the other related info (e.g. AreaOfInterestFCPath (use arcpy to select and zoom to this feature within map document), TextName(s) (use arcpy to search for text element name and change it), TextPositionXY (use arcpy to postion text element)...etc)
  3. Next, use arcpy to export out pdf of map after everything is set
  4. Finally, use python to loop to next map document and repeat steps 3 and 4 for each map document

The link below will get you started on python basics, classes, and functions:

A quick tour of ArcPy

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.