Bestimmen der Bildgröße in einem Makro (Microsoft Word)
Word hält eine ganze Reihe von Informationen über die Bilder zusammen, die Sie in Ihre Dokumente einfügen. Diese Informationen sind erforderlich, damit Word die Größe, Position und Anzeige von Bildern weiß. Wenn Sie weitere Informationen zu den Bildern in Ihrem Dokument erhalten möchten, müssen Sie wissen, wie Word die Informationen speichert.
Bilder werden als zwei Arten von Grafikobjekten gespeichert: reguläre Formen oder Inline-Formen. Normale Formen befinden sich auf der Zeichnungsebene, im Gegensatz zu Inline-Formen, die sich auf der Textebene befinden. Beide Objekttypen werden mit unterschiedlichen Objektsammlungen gespeichert. Normale Formen befinden sich in der Shapes-Auflistung, und Inline-Shapes werden in der InlineShapes-Auflistung gespeichert. Um auf Informationen zu den Objekten zuzugreifen, müssen Sie nur ein wenig VBA verwenden.
Das folgende VBA-Makro funktioniert in Word 2000 (oder späteren Versionen), um ein Dokument zu erstellen, das die Größe aller Grafikobjekte in einem Dokument sowohl in Punkten als auch in Pixeln anzeigt:
Sub FigureInfo() Dim iShapeCount As Integer Dim iILShapeCount As Integer Dim DocThis As Document Dim J As Integer Dim sTemp As String Set DocThis = ActiveDocument Documents.Add iShapeCount = DocThis.Shapes.Count If iShapeCount > 0 Then Selection.TypeText Text:="Regular Shapes" Selection.TypeParagraph End If For J = 1 To iShapeCount Selection.TypeText Text:=DocThis.Shapes(J).Name Selection.TypeParagraph sTemp = " Height (points): " sTemp = sTemp & DocThis.Shapes(J).Height Selection.TypeText Text:=sTemp Selection.TypeParagraph sTemp = " Width (points): " sTemp = sTemp & DocThis.Shapes(J).Width Selection.TypeText Text:=sTemp Selection.TypeParagraph sTemp = " Height (pixels): " sTemp = sTemp & PointsToPixels(DocThis.Shapes(J).Height, True) Selection.TypeText Text:=sTemp Selection.TypeParagraph sTemp = " Width (pixels): " sTemp = sTemp & PointsToPixels(DocThis.Shapes(J).Width, False) Selection.TypeText Text:=sTemp Selection.TypeParagraph Selection.TypeParagraph Next J iILShapeCount = DocThis.InlineShapes.Count If iILShapeCount > 0 Then Selection.TypeText Text:="Inline Shapes" Selection.TypeParagraph End If For J = 1 To iILShapeCount Selection.TypeText Text:="Shape " & J Selection.TypeParagraph sTemp = " Height (points): " sTemp = sTemp & DocThis.InlineShapes(J).Height Selection.TypeText Text:=sTemp Selection.TypeParagraph sTemp = " Width (points): " sTemp = sTemp & DocThis.InlineShapes(J).Width Selection.TypeText Text:=sTemp Selection.TypeParagraph sTemp = " Height (pixels): " sTemp = sTemp & PointsToPixels(DocThis.InlineShapes(J).Height, True) Selection.TypeText Text:=sTemp Selection.TypeParagraph sTemp = " Width (pixels): " sTemp = sTemp & PointsToPixels(DocThis.InlineShapes(J).Width, False) Selection.TypeText Text:=sTemp Selection.TypeParagraph Selection.TypeParagraph Next J End Sub
Dieses Makro funktioniert in Word 97 nicht, da Word 97 die PointsToPixels-Anweisung nicht erkennt. Wenn Sie die Zeilen entfernen, die diese Anweisung verwenden (oder Ihre eigene PointsToPixels-Funktion erstellen), funktioniert das Makro unter Word 97 einwandfrei.
Beachten Sie, dass das Makro die Namen regulärer Formen zurückgibt, nicht jedoch die Namen von Inline-Formen. Der Grund dafür ist, dass Word die Namen von Inline-Formen nicht verwaltet. Wenn Sie eine reguläre Form in Ihr Dokument einfügen (erneut auf der Zeichnungsebene), weist Word der Form einen Namen zu, z. B. Rechteck 2 oder Oval 3.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der WordTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.
(Microsoft Word ist die weltweit beliebteste Textverarbeitungssoftware.) Dieser Tipp (1497) gilt für Microsoft Word 97, 2000, 2002 und 2003. Sie finden eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Word (Word 2007) und später) hier: