방법: Visio 문서에서 셰이프 복사 및 붙여넣기
문서의 한 페이지에 있는 셰이프를 프로그래밍 방식으로 복사하여 동일한 문서의 새 페이지에 붙여넣을 수 있습니다. 복사한 셰이프를 기본 위치(활성 창의 가운데)나 원래 페이지에서와 동일한 좌표 위치에 붙여넣을 수 있습니다.
셰이프 복사 및 붙여넣기
개체 모델에 대한 자세한 내용은 Microsoft.Office.Interop.Visio.Shape.DrawRectangle, Microsoft.Office.Interop.Visio.Shape.DrawOval, Microsoft.Office.Interop.Visio.Shape.Copy 및 Microsoft.Office.Interop.Visio.Shape.Paste 메서드와 Microsoft.Office.Interop.Visio.VisCutCopyPasteCodes.visCopyPasteNormal 플래그에 대한 VBA 참조 설명서를 참조하십시오.
셰이프를 다른 페이지의 가운데에 복사하려면
다음 예제에서는 첫 번째 페이지의 셰이프를 복사하여 두 번째 페이지의 가운데에 붙여넣는 방법을 보여 줍니다.
Me.Application.Documents.Add("") Dim copyPage As Visio.Page Dim pastePage As Visio.Page Dim rectangle As Visio.Shape = Nothing Dim oval As Visio.Shape = Nothing Dim visioPages As Visio.Pages = Me.Application.ActiveDocument.Pages visioPages.Add() Try copyPage = visioPages(1) rectangle = copyPage.DrawRectangle(1.1, 2.2, 4.5, 6.7) oval = copyPage.DrawOval(1, 8.75, 3.5, 6.25) Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.Message) End Try Try pastePage = visioPages(2) rectangle.Copy(Visio.VisCutCopyPasteCodes.visCopyPasteNormal) pastePage.Paste(Visio.VisCutCopyPasteCodes.visCopyPasteNormal) oval.Copy(Visio.VisCutCopyPasteCodes.visCopyPasteNormal) pastePage.Paste(Visio.VisCutCopyPasteCodes.visCopyPasteNormal) Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.Message) End Try
this.Application.Documents.Add(""); Visio.Page copyPage; Visio.Page pastePage; Visio.Shape rectangle = null; Visio.Shape oval = null; Visio.Pages visioPages = this.Application.ActiveDocument.Pages; visioPages.Add(); try { copyPage = visioPages[1]; rectangle = copyPage.DrawRectangle(1.1, 2.2, 4.5, 6.7); oval = copyPage.DrawOval(1, 8.75, 3.5, 6.25); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } try { pastePage = visioPages[2]; rectangle.Copy(Visio.VisCutCopyPasteCodes.visCopyPasteNormal); pastePage.Paste(Visio.VisCutCopyPasteCodes.visCopyPasteNormal); oval.Copy(Visio.VisCutCopyPasteCodes.visCopyPasteNormal); pastePage.Paste(Visio.VisCutCopyPasteCodes.visCopyPasteNormal); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); }
셰이프를 복사하여 동일한 위치에 붙여넣기
개체 모델에 대한 자세한 내용은 Microsoft.Office.Interop.Visio.Shape.DrawRectangle, Microsoft.Office.Interop.Visio.Shape.DrawOval, Microsoft.Office.Interop.Visio.Shape.Copy 및 Microsoft.Office.Interop.Visio.Shape.Paste 메서드와 Microsoft.Office.Interop.Visio.VisCutCopyPasteCodes.visCopyPasteNoTranslate 플래그에 대한 VBA 참조 설명서를 참조하십시오.
붙여넣은 정보의 서식을 제어하고 선택적으로 Microsoft Office Word 문서 등의 소스 파일에 대한 링크를 설정해야 하는 경우 PasteSpecial 메서드를 사용합니다.
셰이프 및 셰이프 위치를 다른 페이지에 복사하려면
다음 예제에서는 첫 번째 페이지의 셰이프를 복사하여 두 번째 페이지의 원래 좌표 위치에 붙여넣는 방법을 보여 줍니다.
Me.Application.Documents.Add("") Dim copyPage As Visio.Page Dim pastePage As Visio.Page Dim rectangle As Visio.Shape = Nothing Dim oval As Visio.Shape = Nothing Dim visioPages As Visio.Pages = Me.Application.ActiveDocument.Pages visioPages.Add() Try copyPage = visioPages(1) rectangle = copyPage.DrawRectangle(1.1, 2.2, 4.5, 6.7) oval = copyPage.DrawOval(1, 8.75, 3.5, 6.25) Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.Message) End Try Try pastePage = visioPages(2) rectangle.Copy(Visio.VisCutCopyPasteCodes.visCopyPasteNoTranslate) pastePage.Paste(Visio.VisCutCopyPasteCodes.visCopyPasteNoTranslate) oval.Copy(Visio.VisCutCopyPasteCodes.visCopyPasteNoTranslate) pastePage.Paste(Visio.VisCutCopyPasteCodes.visCopyPasteNoTranslate) Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.Message) End Try
this.Application.Documents.Add(""); Visio.Page copyPage; Visio.Page pastePage; Visio.Shape rectangle = null; Visio.Shape oval = null; Visio.Pages visioPages = this.Application.ActiveDocument.Pages; visioPages.Add(); try { copyPage = visioPages[1]; rectangle = copyPage.DrawRectangle(1.1, 2.2, 4.5, 6.7); oval = copyPage.DrawOval(1, 8.75, 3.5, 6.25); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } try { pastePage = visioPages[2]; rectangle.Copy(Visio.VisCutCopyPasteCodes.visCopyPasteNoTranslate); pastePage.Paste(Visio.VisCutCopyPasteCodes.visCopyPasteNoTranslate); oval.Copy(Visio.VisCutCopyPasteCodes.visCopyPasteNoTranslate); pastePage.Paste(Visio.VisCutCopyPasteCodes.visCopyPasteNoTranslate); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); }