Merging Multiple Routes
In this article, Chip Pearson demonstrates a method to merge several MapPoint files in to a single "Master"
route programmatically with VBA.
I had the situation in which I wanted to
merge the routes from each of several MapPoint files in to a single "master"
route. I had taken an 8 day driving trip through New Mexico and Colorado, and had
each day's route in a separate file. I wanted to create a single Map that
described my entire trip.
So, being a VBA junkie, I wrote some VBA code to automate the process. The VBA consists of two modules. The first, a standard code module
called modRouteMerge contains the code that does the actual work. The second, a class
module called CWayPointX, defines the "holding" object in which we store
information about each way point.
As the various maps are read, each waypoint's information is stored in an
instance of CWayPointX, and each instance of CWayPointX is stored in a
collection. The individual map routes are read by a procedure called GetRoutes. Then, a new
blank map is created, and a route is created by looping the collection object,
pulling information from each CWayPointX object stored in the collection. This is done by the procedure called CreateNewMapRoute.
The CWayPointX class contains a procedure called CalcPos, written by Gilles
Kohl, which I got from this web site, in the article "A More Compact Method For
Obtaining Lat/Long" (18-July-2001). This procedure calculates the latitude and longitude from a Location object.
The CWayPointX class preserves only the Name, latitude, and longitude of the
original WayPoint object. Other properties (e.g., Overnights) are not
preserved. However, the source code provides detailed instructions about how one
can modify the class to preserve any WayPoint property.
The code was developed the code under Excel 2002, but it does not use any Excel-specific
features, and therefore should work under any "host" application that supports
VBA (e.g., Excel, Word or PowerPoint). Any VBA-enabled host application can run
the code. The user will have to set a reference to the MapPoint 2002 (version
9) object library. I have not tested this code under any version of MapPoint
prior to 2002, but doubt it will work.
The code is very completely commented, and can easily be customized by anyone
with a basic understanding of VBA.
To use the code, simply import the two modules in to any application that
supports VBA (e.g., Excel or Word), change the file names in the GetRoutes
procedure to the files you want to merge, and execute GetRoutes. The builds the
collection of WayPoints. Then, execute CreateNewRouteMap to build a new map
with the "merged" route. The original files are not modified in any way.
The code is explicitly granted to the Public Domain.