1.3k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
In einem Worddokument habe ich mehrere Bilder welche mit folgendem Skript alle auf die gleiche Grösse gebracht werden sollen:

Private Sub CommandButton1_Click()
Dim objPic As Object

For Each objPic In ActiveDocument.InlineShapes
With objPic
.LockAspectRatio = msoFalse
.Width = Application.CentimetersToPoints(4.2)
.Height = Application.CentimetersToPoints(5.6)
End With
Next
End Sub

Das funktioniert auch einwandfrei.

Das Problem ist nun, dass alle CommandButtons auch auf diese Grösse skaliert werden. Mir schwebt als Lösung eine vorangestellte IF-Abfrage vor. Ich kenne mich in VBA jedoch nicht besonders gut aus, daher brauche ich eure Hilfe.

Schema:
Schleife für alle objPic. Wenn objPic ein CommandButton, dann tue nichts, ansonsten skaliere sie mit dem Script wie oben beschrieben.

Hier mein Anfang um das Problem zu lösen:

Private Sub CommandButton1_Click()

Dim objPic As Object

For Each objPic In ActiveDocument.InlineShapes
If objPic = CommandButton1 Then
Beep
Else
With objPic
.LockAspectRatio = msoFalse
.Width = Application.CentimetersToPoints(4.2)
.Height = Application.CentimetersToPoints(5.6)
End With
End If
Next
End Sub

Vielen Dank für eure Hilfe

Lukas

1 Antwort

0 Punkte
Beantwortet von massaraksch Experte (3.1k Punkte)
Ich würde evtl. andersherum rangehen: Wenn Bild, dann tue was, ansonsten nicht.

Ermitteln über die Type-Eigenschaft des InlineShapes (WdInlineShapeType), z.B. so oder ähnlich:
If objPic.Type = wdInlineShapeLinkedPicture Or objPic.Type = wdInlineShapePicture Then
With objPic
.LockAspectRatio = msoFalse
.Width = Application.CentimetersToPoints(4.2)
.Height = Application.CentimetersToPoints(5.6)
End With
End If

Mögliche Werte des InlineShape-Type siehe: WdInlineShapeType Enumeration

Ergänzung:
Man kann bei sowas auch die numerischen Values vergleichen, also

If objPic.Type = 3 or objPic.Type = 4 ...

(ist zwar kürzer, aber halt nicht so "sprechend")

mfg, Massaraksch
...