Word 2000 Anpassen einer verlinkten Grafik per VBA
Hallo!
Ich habe ein VBA-Skript, dass eingefügte Grafiken anpasst und das auch funktioniert.
Der selbe Code funktioniert dann nicht, wenn die Grafik "eingefügt und verknüpft" wird. Ich habe das ein oder andere versucht, aber ich komme nicht weiter.
Hat jemand vielleicht einen Tipp für mich?
Danke!
Gruß
Steffen Kuch
Ich habe ein VBA-Skript, dass eingefügte Grafiken anpasst und das auch funktioniert.
Sub GrafikEditieren()
'
' GrafikEditieren Makro
' Makro aufgezeichnet am 05.03.2010 von DV
'Stand: 8.3.2010
Selection.InlineShapes(1).Fill.Visible = msoFalse
Selection.InlineShapes(1).Fill.Transparency = 0#
Selection.InlineShapes(1).Line.Weight = 0.75
Selection.InlineShapes(1).Line.Transparency = 0#
Selection.InlineShapes(1).Line.Visible = msoFalse
Selection.InlineShapes(1).LockAspectRatio = msoTrue
' Mit .scale... bekomme ich eine Prozentuale Größenveränderung hin.
Selection.InlineShapes(1).ScaleHeight = 70
Selection.InlineShapes(1).ScaleWidth = 70
Selection.InlineShapes(1).PictureFormat.Brightness = 0.5
Selection.InlineShapes(1).PictureFormat.Contrast = 0.5
Selection.InlineShapes(1).PictureFormat.ColorType = msoPictureAutomatic
Selection.InlineShapes(1).PictureFormat.CropLeft = 0#
Selection.InlineShapes(1).PictureFormat.CropRight = 0#
Selection.InlineShapes(1).PictureFormat.CropTop = 0#
Selection.InlineShapes(1).PictureFormat.CropBottom = 0#
' In ein 'flexibles' Format bringen
Selection.InlineShapes(1).ConvertToShape
' Layouttyp festlegen.
Selection.ShapeRange.WrapFormat.Type = wdWrapSquare
' Nur Umbruch links
Selection.ShapeRange.WrapFormat.Side = wdWrapLeft
' Abstand links 1 cm, ansonsten 0 cm
Selection.ShapeRange.WrapFormat.DistanceLeft = CentimetersToPoints(1)
Selection.ShapeRange.WrapFormat.DistanceRight = CentimetersToPoints(0)
Selection.ShapeRange.WrapFormat.DistanceTop = CentimetersToPoints(0)
Selection.ShapeRange.WrapFormat.DistanceBottom = CentimetersToPoints(0)
Selection.ShapeRange.WrapFormat.AllowOverlap = False
End Sub
Der selbe Code funktioniert dann nicht, wenn die Grafik "eingefügt und verknüpft" wird. Ich habe das ein oder andere versucht, aber ich komme nicht weiter.
Hat jemand vielleicht einen Tipp für mich?
Danke!
Gruß
Steffen Kuch
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 137755
Url: https://administrator.de/contentid/137755
Ausgedruckt am: 23.11.2024 um 17:11 Uhr
14 Kommentare
Neuester Kommentar
Hallo Steffen!
Versuchs mal mit diese Zeile am Anfang (Zeile 6):
Gruß Dieter
Versuchs mal mit diese Zeile am Anfang (Zeile 6):
ActiveDocument.InlineShapes(1).Select |
Gruß Dieter
Hallo SteffenKuch!
Also, dass es erst ab Zeile 26 hängen bleibt, ist ja erst mal ein gutes Zeichen. Warum allerdings die Funktionen ab Zeile 26 nicht auf das Object angewendet werden können, kann ich nicht beurteilen. Aber das kannst Du ja per Makroaufzeichnung herausfinden bzw. ob's überhaupt im Document manuell funktioniert...?
Gruß Dieter
Also, dass es erst ab Zeile 26 hängen bleibt, ist ja erst mal ein gutes Zeichen. Warum allerdings die Funktionen ab Zeile 26 nicht auf das Object angewendet werden können, kann ich nicht beurteilen. Aber das kannst Du ja per Makroaufzeichnung herausfinden bzw. ob's überhaupt im Document manuell funktioniert...?
Gruß Dieter
Hallo Steffen!
Was für Grafiken sind das, ganz normal Bilder?
Soviel habe ich in der Richtung in Word noch nichts gemacht, daher müsste ich etwas genauer wissen, wie der ganze Ablauf ist. Soweit ich das verstanden habe, fügst Du eine Grafik per <Einfügen><Grafik> ein und verknüpfts diese womit?
Du könntest aber mal probieren, dass Makro zu exportieren und in einem neuen Dokument wieder importieren. Danach mal testen, ob's in einem neuen Dokument funktioniert. Was besseres fällt mir im Moment leider nicht ein.
Gruß Dieter
Was für Grafiken sind das, ganz normal Bilder?
Soviel habe ich in der Richtung in Word noch nichts gemacht, daher müsste ich etwas genauer wissen, wie der ganze Ablauf ist. Soweit ich das verstanden habe, fügst Du eine Grafik per <Einfügen><Grafik> ein und verknüpfts diese womit?
Du könntest aber mal probieren, dass Makro zu exportieren und in einem neuen Dokument wieder importieren. Danach mal testen, ob's in einem neuen Dokument funktioniert. Was besseres fällt mir im Moment leider nicht ein.
Gruß Dieter
Hallo Steffen!
Wie Du das geschafft hast, weiß ich leider auch nicht Am besten Dokument schließen, wieder öffnen und nochmal probieren.
Mir passieren manchmal auch komische Sachen, wo ich denke, häh was ist jetz los
Gruß Dieter
Wie Du das geschafft hast, weiß ich leider auch nicht Am besten Dokument schließen, wieder öffnen und nochmal probieren.
Mir passieren manchmal auch komische Sachen, wo ich denke, häh was ist jetz los
Gruß Dieter
Hallo Steffen!
Was mir natürlich als allererstes auffällt, ist die Tatsache, dass Dein Makro immer nur einmal mit dem gleichen Object funktioniert, da Du das Object in Zeile 24 zu Shape konvertierst. Dann ist das Object anstatt ..InlineShap(1) dann mit ..Shape(1) ansprechbar.
Gruß Dieter
PS. Ich muss jetzt leider weg und werde mich später nochmal damit beschäftigen.
Was mir natürlich als allererstes auffällt, ist die Tatsache, dass Dein Makro immer nur einmal mit dem gleichen Object funktioniert, da Du das Object in Zeile 24 zu Shape konvertierst. Dann ist das Object anstatt ..InlineShap(1) dann mit ..Shape(1) ansprechbar.
Gruß Dieter
PS. Ich muss jetzt leider weg und werde mich später nochmal damit beschäftigen.
Hallo Steffen!
Also, wie bereits erwähnt, kann das Makro nur einmal für eine importierte Grafik ausgeführt werden. Dadurch, dass in Deinem Code in Zeile 24 (bei mir 31) das InlineShap in ein Shap konvertiert wird, entsteht ein neues Object. D.h. das InlineShape(1) existiert nicht mehr, sondern nur noch Shape(1). Also, muss bei Bedarf die Grafik gelöscht und neu importiert werden.
Dein Makro habe ich ein wenig angepasst, dass eine Fehlermeldung ausgibt, falls das Object schon per Makro angepasst wurde.
Gruß Dieter
Also, wie bereits erwähnt, kann das Makro nur einmal für eine importierte Grafik ausgeführt werden. Dadurch, dass in Deinem Code in Zeile 24 (bei mir 31) das InlineShap in ein Shap konvertiert wird, entsteht ein neues Object. D.h. das InlineShape(1) existiert nicht mehr, sondern nur noch Shape(1). Also, muss bei Bedarf die Grafik gelöscht und neu importiert werden.
Dein Makro habe ich ein wenig angepasst, dass eine Fehlermeldung ausgibt, falls das Object schon per Makro angepasst wurde.
Sub GrafikEditieren()
On Error Resume Next 'Fehlerbehandlung deaktivieren
ActiveDocument.InlineShapes(1).Select
If Err Then
MsgBox "Die Anpassung für das gleiche Object ist nur einmal möglich!", vbExclamation, "Fehler"
Exit Sub
End If
On Error GoTo 0 'Fehlerbehandlung wieder aktivieren
With Selection.InlineShapes(1)
.Fill.Visible = msoFalse
.Fill.Transparency = 0#
.Line.Weight = 0.75
.Line.Transparency = 0#
.Line.Visible = msoFalse
.LockAspectRatio = msoTrue
'Mit .scale... bekomme ich eine Prozentuale Größenveränderung hin.
.ScaleHeight = 70
.ScaleWidth = 70
.PictureFormat.Brightness = 0.5
.PictureFormat.Contrast = 0.5
.PictureFormat.ColorType = msoPictureAutomatic
.PictureFormat.CropLeft = 0#
.PictureFormat.CropRight = 0#
.PictureFormat.CropTop = 0#
.PictureFormat.CropBottom = 0#
'In ein 'flexibles' Format bringen
.ConvertToShape
'Layouttyp festlegen.
End With
With Selection.ShapeRange.WrapFormat
.Type = wdWrapSquare
'Nur Umbruch links
.Side = wdWrapLeft
'Abstand links 1 cm, ansonsten 0 cm
.DistanceLeft = CentimetersToPoints(1)
.DistanceRight = CentimetersToPoints(0)
.DistanceTop = CentimetersToPoints(0)
.DistanceBottom = CentimetersToPoints(0)
.AllowOverlap = False
End With
End Sub
Gruß Dieter
Hallo Steffen!
Verstehe ich nicht. Ich habe keine Probleme mit dem erstellen oder ändern einer Verknüpfung mit der Grafik, sowohl vor als auch nach der Anpassung der Grafik. Allerdings nutze ich die Office-Version 2002 und wenn's in Version 2000 nicht geht, dann kann ich Dir leider nicht weiterhelfen?
Gruß Dieter
Verstehe ich nicht. Ich habe keine Probleme mit dem erstellen oder ändern einer Verknüpfung mit der Grafik, sowohl vor als auch nach der Anpassung der Grafik. Allerdings nutze ich die Office-Version 2002 und wenn's in Version 2000 nicht geht, dann kann ich Dir leider nicht weiterhelfen?
Gruß Dieter
Hallo Steffen!
Vielleicht habe ich mich jetzt missverständlich ausgedrückt. Ich rede ja von einer eingefügten Grafik, ansonsten wäre es kein InlineShap sondern ein Shape und Dein Makro würde niemals funktionen.
Gruß Dieter
Vielleicht habe ich mich jetzt missverständlich ausgedrückt. Ich rede ja von einer eingefügten Grafik, ansonsten wäre es kein InlineShap sondern ein Shape und Dein Makro würde niemals funktionen.
Gruß Dieter