2010-03-17 2 views
1

Actuellement, j'ai un code qui imprimera OMR Mark sur chaque page. Fondamentalement, j'insère un Canvas dans chaque page et par la suite un OMR Mark Line Series sont insérés dans le Canvas.Déterminez si un canevas a été inséré dans chaque page dans Word

Récemment, j'ai trouvé un problème qui, d'une manière ou d'une autre, est que l'un des canevas est placé hors d'une page et il apparaît à la page précédente au lieu de la page en cours.

est Ci-dessous l'extrait de code dans la façon dont i inséré la toile ainsi que dans chaque OMR Marques page:

' 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 

Il existe une méthode personnalisée appelée méthode PrintOMRPage qui ne sont pas pertinentes.

Ma question maintenant, comment puis-je savoir si une toile a été insérée dans une page? Fondamentalement, je vais boucler dans toutes les pages et vérifier si un canevas a été inséré dans cette page. Apparemment, je ne peux pas trouver la bonne façon.

J'ai essayé de vérifier en utilisant ActiveDocument.Shapes(1).Top et de valider si la position Top est une valeur négative. Mais apparemment la position Top est toujours mesurée à partir du haut de chaque page.

Répondre

0

C'est la raison pour laquelle vous obtenez parfois une position verticale relative: .RelativeVerticalPosition = wdRelativeVerticalPositionPage. Retirez-le et vous aurez un canevas sur chaque page.

Questions connexes