public static void Duplicate( IVisio.Page src_page, IVisio.Page dest_page) { init_page_srcs(); var app = src_page.Application; short copy_paste_flags = (short)IVisio.VisCutCopyPasteCodes.visCopyPasteNoTranslate; // handle the source page if (src_page == null) { throw new System.ArgumentNullException(nameof(src_page)); } if (dest_page == null) { throw new System.ArgumentNullException(nameof(dest_page)); } if (dest_page == src_page) { throw new System.ArgumentException("Destination Page cannot be Source Page"); } if (src_page != app.ActivePage) { throw new System.ArgumentException("Source page must be active page."); } var src_page_shapes = src_page.Shapes; int num_src_shapes = src_page_shapes.Count; if (num_src_shapes > 0) { var active_window = app.ActiveWindow; active_window.SelectAll(); var selection = active_window.Selection; selection.Copy(copy_paste_flags); active_window.DeselectAll(); } // Get the Cells from the Source var query = new VASS.Query.CellQuery(); int i = 0; foreach (var src in _static_page_srcs) { query.Columns.Add(src, "Col" + i.ToString()); i++; } var src_formulas = query.GetFormulas(src_page.PageSheet); // Set the Cells on the Destination var writer = new VASS.Writers.SrcWriter(); for (i = 0; i < _static_page_srcs.Count; i++) { int row = 0; writer.SetValue(_static_page_srcs[i], src_formulas[row][i]); } writer.Commit(dest_page.PageSheet, VASS.CellValueType.Formula); // make sure the new page looks like the old page dest_page.Background = src_page.Background; // then paste any contents from the first page if (num_src_shapes > 0) { dest_page.Paste(copy_paste_flags); } }
public static void Duplicate( IVisio.Page src_page, IVisio.Page dest_page) { var app = src_page.Application; short copy_paste_flags = (short)IVisio.VisCutCopyPasteCodes.visCopyPasteNoTranslate; // handle the source page if (src_page == null) { throw new System.ArgumentNullException(nameof(src_page)); } if (dest_page == null) { throw new System.ArgumentNullException(nameof(dest_page)); } if (dest_page == src_page) { throw new AutomationException("Destination Page cannot be Source Page"); } if (src_page != app.ActivePage) { throw new AutomationException("Source page must be active page."); } var src_page_shapes = src_page.Shapes; int num_src_shapes = src_page_shapes.Count; if (num_src_shapes > 0) { var active_window = app.ActiveWindow; active_window.SelectAll(); var selection = active_window.Selection; selection.Copy(copy_paste_flags); active_window.DeselectAll(); } var src_pagesheet = src_page.PageSheet; var pagecells = PageCells.GetCells(src_pagesheet); // handle the dest page // first update all the page cells var dest_pagesheet = dest_page.PageSheet; var update = new ShapeSheet.Update(); update.SetFormulas(pagecells); update.Execute(dest_pagesheet); // make sure the new page looks like the old page dest_page.Background = src_page.Background; // then paste any contents from the first page if (num_src_shapes > 0) { dest_page.Paste(copy_paste_flags); } }