Word2007 erkennt nicht alle Shapes ?

29/09/2007 - 15:04 von Kowalski | Report spam
Hi,

ich hatte ja in einem Beitrag weiter unten schon erwàhnt, dass ich Probleme
unter Word2007 habe. Ich habe mir ein eigenes Druckmenü gebaut mit dem ich
das Dokument bzw. einzelne Bestandteile ausdrucken kann. Bei Bedarf kann ich
das Dokument mit der Option "Duplikat" drucken dann wird rechts oben in der
Ecke ein Stempel mit "DUPLIKAT" gedruckt. Nach dem Druckvorgang soll der
Stempel jedoch im Originaldokument wieder entfernt werden. Bisher ging das
Problemlos, aber unter Word 2007 wird jetzt der Stempel nur auf jeder 2.
Seite entfernt.
Wenn ich die Schleife zum Entfernen des Stempels ein zweites Mal durchlaufen
lasse werden noch ein paar Stempel entfernt, aber auch nicht alle.


'Code zum Einfügen des Stempels

Set mR = ActiveDocument.Range(0, 0)
Set mRo = mR.Duplicate

'Stempel auf erster Seite einfügen
iAb = 1
ReDim Preserve objStempel(iAb)
Set objStempel(1) = ActiveDocument.Shapes.AddTextEffect(msoTextEffect1,
Text$, "Arial", 24, False, False, 0, 0, mR)
objStempel(1).Rotation = Winkel$
objStempel(1).Name = "RP20040205" & iAb
objStempel(1).ZOrder msoBringToFront
objStempel(1).RelativeVerticalPosition = wdRelativeVerticalPositionPage
objStempel(1).RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
objStempel(1).Left = PosLinks$
objStempel(1).Top = PosOben$
objStempel(1).Fill.Transparency = 1
objStempel(1).Line.ForeColor.RGB = RGB(Rot$, Grün$, Blau$)
objStempel(1).PickUp

'Stempel auf allen Folgeseiten einfügen
Do
Set mR = mR.GoTo(wdGoToPage, wdGoToNext)
If mR.IsEqual(mRo) Then Exit Do
iAb = iAb + 1
ReDim Preserve objStempel(iAb)
Set mRo = mR.Duplicate
Set objStempel(iAb) = ActiveDocument.Shapes.AddTextEffect(msoTextEffect1,
Text$, "Arial", 24, False, False, 0, 0, mR)
objStempel(iAb).Apply
objStempel(iAb).Rotation = Winkel$
objStempel(iAb).Left = PosLinks$
objStempel(iAb).Top = PosOben$
objStempel(iAb).Name = "RP20040205" & iAb
Loop
End Sub

'Code zum Entfernen des Stempels nach dem Drucken
If cbStempel Then 'nur Durchlaufen wen mit Option Duplikat gedruckt wurde
For Each oShape In .Shapes
If InStr(oShape.Name, "RP20040205") = 1 Then oShape.Delete
Next
End If

Wenn man den Code debuggt, merkt man, dass nicht alle Shapes aufgeführt
werden.
Word2007 treibt mich noch zur Verzweiflung.
Kann mir jemand Helfen ?

Gruß und vielen Dank schon mal

Kowalski !
 

Lesen sie die antworten

#1 Thomas Gahler
29/09/2007 - 19:50 | Warnen spam
Hallo Kowalski



Bisher ging das
Problemlos, aber unter Word 2007 wird jetzt der Stempel nur auf jeder 2.
Seite entfernt.


For Each sollte eigentlich gehen und nicht nur jedne zweiten entfernen, so
habe ich mal gedacht.

Ansonsten mit einer ForSchleife retour versuchen

For i = ...shapes.count-1 to 0 step -1




Thomas Gahler
MVP für WordVBA
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)


- Windows XP (SP2), Office XP (SP3)

Ähnliche fragen