В настоящее время у меня есть код, который будет печатать знак OMR на каждой странице. По сути, я вставляю Canvas
на каждую страницу, а затем серия OMR Mark Line вставляется в Canvas
.
Недавно я обнаружил проблему, заключающуюся в том, что каким-то образом холст помещается со страницы и отображается на предыдущей странице вместо текущей.
Ниже приведен фрагмент кода того, как я вставил холст, а также метки OMR на каждую страницу:
' 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, который здесь не актуален.
Мой вопрос сейчас, как мне узнать, был ли холст вставлен в страницу? В основном я буду зацикливаться на всех страницах и проверять, был ли холст вставлен в эту страницу. Видимо я не могу найти правильный путь.
Я попытался проверить с помощью ActiveDocument.Shapes(1).Top
и проверить, является ли позиция Top
отрицательным значением. Но, по-видимому, позиция Top
всегда измеряется от верхней части каждой страницы.