Private Sub ImportBookmarksFromMXD() Dim pGxDlg As IGxDialog Dim pGxFltr As IGxObjectFilter Dim pEnumGxObj As IEnumGxObject Dim pGxObj As IGxObject Dim pMapDoc As IMapDocument Dim pMxDoc As IMxDocument Dim pThisMapsBookmarks As IMapBookmarks Dim pSrcMapsBookmarks As IMapBookmarks Dim pEnumBookmark As IEnumSpatialBookmark Dim pBookmark As ISpatialBookmark ' Get the source map document Set pGxFltr = New GxFilterMaps Set pGxDlg = New GxDialog Set pGxDlg.ObjectFilter = pGxFltr pGxDlg.ButtonCaption = "Select" pGxDlg.title = "Select Map Containing Bookmarks" If Not pGxDlg.DoModalOpen(0, pEnumGxObj) Then Exit Sub ' Get the source maps bookmarks Set pGxObj = pEnumGxObj.Next Set pMapDoc = New MapDocument pMapDoc.Open (pGxObj.FullName) If activateDataFrame("Main") Then Set pSrcMapsBookmarks = pMapDoc.Map(0) ' Get this maps bookmarks Set pMxDoc = ThisDocument Set pThisMapsBookmarks = pMxDoc.FocusMap ' Copy the source bookmarks to this map pThisMapsBookmarks.RemoveAllBookmarks Set pEnumBookmark = pSrcMapsBookmarks.Bookmarks Set pBookmark = pEnumBookmark.Next While Not pBookmark Is Nothing pThisMapsBookmarks.AddBookmark pBookmark Set pBookmark = pEnumBookmark.Next Wend End If If activateDataFrame("Overview") Then Set pSrcMapsBookmarks = pMapDoc.Map(1) ' Get this maps bookmarks Set pMxDoc = ThisDocument Set pThisMapsBookmarks = pMxDoc.FocusMap ' Copy the source bookmarks to this map pThisMapsBookmarks.RemoveAllBookmarks Set pEnumBookmark = pSrcMapsBookmarks.Bookmarks Set pBookmark = pEnumBookmark.Next While Not pBookmark Is Nothing pThisMapsBookmarks.AddBookmark pBookmark Set pBookmark = pEnumBookmark.Next Wend End If MsgBox "Bookmarks Copied", vbInformation, "" End Sub Private Function activateDataFrame(DataFrameName As String) As Boolean Dim pMxDoc As IMxDocument Dim pMap As IMap Dim pMaps As IMaps Dim pActiveView As IActiveView Dim Counter As Integer Set pMxDoc = ThisDocument Set pMaps = pMxDoc.Maps 'Find the correct data frame Counter = -1 'start at -1 so that the first increment will be to 0 Do Counter = Counter + 1 If Counter + 1 > pMaps.Count Then 'we have not found the data frame name, maybe the calling statement is misspelled MsgBox "Data frame " & DataFrameName & " could not be found. Expected 2 data frame, Main and Overview" activateDataFrame = False Exit Function End If Set pMap = pMaps.Item(Counter) Loop Until pMap.Name = DataFrameName Set pActiveView = pMxDoc.ActiveView '>>>>this is the part I was missing; you have to tell it if you are in layout view or not<<<< If TypeOf pActiveView Is IPageLayout Then Set pMxDoc.ActiveView.FocusMap = pMap Else Set pMxDoc.ActiveView = pMap End If activateDataFrame = True 'now the frame that you passed to the subroutine is active, so do something in the frame '.... '.... End Function