InlineShape mit VBA über Umweg Shape um 90° drehen

05/02/2009 - 16:43 von Lisa (Nora Richter) | Report spam
Hallo Experten,

unter Word 2002 SP 3 (Windows 2000) kann ich in der
Benutzerschnittstelle eine InlineShape markieren, mit Format - Grafik
- Register: Layout - Vor den Text - OK in eine Shape umwandeln, dann
drehen: Format - Grafik - Register: Größe - Drehung: 90° - OK. Und
nochmals mit Format - Grafik - Register: Layout - Mit Text in Zeile
wieder in eine InlineShape umwandeln. Das Ergebnis ist eine um 90°
gedrehte InlineShape.

Wenn ich das mit VBA nachbilde, wird die Grafik zwar gedreht, das
sieht man beim Durchlaufen im Einzelschritt, beim letzten Umwandeln in
InlineShape wird sie jedoch wieder umgedreht und nur das
Kantenlàngenverhàltnis hat sich geàndert, nicht jedoch die
Ausrichtung.

Erster Versuch:

Sub ILSdrehen()

Selection.InlineShapes(1).ConvertToShape
Selection.ShapeRange(1).IncrementRotation (90)
Selection.ShapeRange(1).ConvertToInlineShape

End Sub

Zweiter Versuch:

Sub ILSdrehen()

Dim ILS As InlineShape
Dim SH As Shape

Set ILS = ActiveDocument.InlineShapes(1)
Set SH = ILS.ConvertToShape
SH.IncrementRotation (90)
Set ILS = SH.ConvertToInlineShape

End Sub

Sieht beides sehr schön logisch aus und funktioniert leider nicht.
Auch über die Zwischenablage habe ich bislang keinen Weg gefunden. Es
geht nur "von Hand" über die Menüs.

Hat jemand eine Idee, wie man Word überreden könnte, vor dem
ConvertToInlineShape das "Zurückdrehen" zu unterlassen.

Gruß
Lisa
_____
http://www.schreibbuero-richter.de/vba.html
 

Lesen sie die antworten

#1 Thomas Gahler
05/02/2009 - 21:04 | Warnen spam
Hallo Lisa


Wenn ich das mit VBA nachbilde, wird die Grafik zwar gedreht, das
sieht man beim Durchlaufen im Einzelschritt, beim letzten Umwandeln in
InlineShape wird sie jedoch wieder umgedreht [...]


Tja, sorry, doch hier habe ich mit dem gleichen Code (beiede Varianten)
Erfolg (Word 2003 getestet).
Ich schau morgen im Büro mal, dort habe ich Word2002


Sub Demo()
Dim ils As Word.InlineShape
Dim shp As Word.Shape

Set ils = Selection.InlineShapes(1)
Set shp = ils.ConvertToShape
shp.IncrementRotation 90
'shp.Rotation = 90
Set ils = shp.ConvertToInlineShape
End Sub





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


- Windows Vista (SP1), Office 2007 (SP?)

Ähnliche fragen