Forums Neueste Beiträge
 

Shapes unter Word2007 löschen ?

07/10/2007 - 20:08 von Kowalski | Report spam
Hi,

ich habe in meinem Document eine Anzahl von Shapes eingefügt, wo ich
anschließend einen Teil löschen will. Folgender Code, der unter Word200-2003
funktionierte versagt nun unter Word2007 den Dienst:

Dim oShape as Shape

For Each oShape in Activedocument.Shape
If Instr (oShape.Name, "Stempel") = 1 then oShape.Delete
Next

Unter Word2007 wird jetzt nur noch jedes 2. Shape gelöscht.

Thomas Gahler gab mir den Tip den Code wie folgt abzuàndern:

For i=1 to Activedocument.Shape.Count
If Instr(Activedocument.Shapes(i).Name, "Stempel") then
Activedocument.Shapes(i).delete
Next i

Das funktioniert jedoch auch nicht, es erscheint die Fehlermeldung "Der
Index in der angegebenen Sammlung liegt außerhalb des zulàssigen Bereiches".
Beim Debuggen bin ich dann auf folgendes gestossen: offensichtlich wird nach
jedem Löschen eines Shapes die kpl. Auflistung neu reorganisiert. Hierdurch
kommt es offensichtlich zu den beschriebenen Effekten.
Wie kann ich dieses sofortige Reorganisieren der Auflistung unterbinden,
bzw. wie kann ich den Code àndern, damit er auch unter Word2007 funktioniert ?

Gruß und vielen Dank schon mal

Kowalski !
 

Lesen sie die antworten

#1 Helmut Weber
07/10/2007 - 22:08 | Warnen spam
Hallo Kowalski,

Collections in Word 2007 wurden von MS geàndert.
Wie und warum ist unbekannt.
Wahrscheinlich weiß MS das selbst nicht.

For each funktioniert manchmal nicht mehr... :-(


For Each oShape in Activedocument.Shape
If Instr (oShape.Name, "Stempel") = 1 then oShape.Delete
Next

For i=1 to Activedocument.Shape.Count
If Instr(Activedocument.Shapes(i).Name, "Stempel") then
Activedocument.Shapes(i).delete
Next i



for i = Activedocument.Shapes.Count to 1 step -1
'
next


Gruß

Helmut Weber, MVP WordVBA

"red.sys" & chr$(64) & "t-online.de"
Win XP, Office 2003 (US-Versions)

Ähnliche fragen