현재 각 페이지에 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
위치는 항상 각 페이지의 상단에서 측정됩니다.