2010-03-17 9 views
1

현재 각 페이지에 OMR Mark를 인쇄 할 코드가 있습니다. 기본적으로 각 페이지에 Canvas을 삽입하고이어서 OMR 마크 라인 시리즈를 Canvas에 삽입합니다.캔버스가 Word의 각 페이지에 삽입되었는지 확인

최근에 어떻게 든 캔버스 중 하나가 페이지 밖으로 배치되고 현재 페이지 대신 이전 페이지에 나타나는 문제가 발견되었습니다.

' Start Code Snippet 
Sub GenerateOMR() 
    Dim ShpCanvas As Shape 
    Dim MaxPages As Integer 
    Dim PNo As Integer 
    ClearOMR 
    MaxPages = Selection.Information(wdNumberOfPagesInDocument) 
    For PNo = 1 To MaxPages 
     Selection.GoTo What:=wdGoToPage, Which:=wdGoToFirst, Count:=PNo, Name:="" 

     Select Case PNo 
      Case 1 
       Set ShpCanvas = ActiveDocument.Shapes.AddCanvas(0, 0.5, 600, 300) 
      Case Else 
       Set ShpCanvas = ActiveDocument.Shapes.AddCanvas(0, 0, 600, 300) 
     End Select 

     ' Add a canvas on each page 
     With ShpCanvas 
      .Name = "OMR_Canvas_" & CStr(PNo) 
      .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage 
      .RelativeVerticalPosition = wdRelativeVerticalPositionPage 
     End With 

     ' Insert a white background rectange and remove the rectangle border line 
     With ShpCanvas.CanvasItems.AddShape(msoShapeRectangle, 536, 0, 64, 300) 
      .Name = "OMR_WhiteBackground_" & CStr(PNo) 
      .Fill.ForeColor.RGB = RGB(255, 255, 255) 
      .Line.ForeColor.RGB = RGB(255, 255, 255) 
     End With 

     PrintOMRPage ShpCanvas, PNo 
    Next PNo 
End Sub 
' End Code Snippet 

여기에 관련이 없습니다 PrintOMRPage 방법라는 사용자 지정 방법이 있습니다 :

다음은 내가 각 페이지에 캔버스뿐만 아니라 OMR 마크를 삽입하는 방법에 코드입니다.

내 질문에 이제 캔버스가 페이지에 삽입되었는지 어떻게 알 수 있습니까? 기본적으로 모든 페이지를 반복하고 해당 페이지에 캔버스가 삽입되었는지 확인합니다. 분명히 나는 ​​올바른 길을 찾을 수 없다.

나는 ActiveDocument.Shapes(1).Top을 사용하여 확인하고 Top 위치가 음수인지 여부를 확인하려고했습니다. 그러나 분명히 Top 위치는 항상 각 페이지의 상단에서 측정됩니다.

답변

0

때때로 상대적인 수직 위치가 나타나는 이유는 .RelativeVerticalPosition = wdRelativeVerticalPositionPage입니다. 그것을 제거하면 각 페이지에 Canvas가 생깁니다.

관련 문제