Archiv für den Monat: Mai 2013

Textboxen in Word durch den enthaltenen Text ersetzen

Der folgende Code ersetzt alle Textboxen in einem Word-Dokument durch den in ihnen enthaltenen Text.

Ein Problem ist, herauszufinden, wo sich der Anker der Textbox befindet, damit der Text passgenau eingefügt werden kann. In meinem Fall war die Textbox ein Paragraph hinter dem Anker. Deshalb die Zeile

Set Ausgabebereich = oShp.Anchor.Next(Unit:=wdParagraph, Count:=1)

Der Wert für Count muss gegebenenfalls angepasst werden, damit er zu dem verwendeten Anker passt.

Die auskommentierte Zeile war in meinem Fall notwendig, da ich nur den ersten Buchstaben des enthaltenen Texts verwenden wollte.

[sourcecode language=“vb“]
Sub replaceTextBoxByText()
Dim oShp As Shape
Dim dok As Document
Dim Ausgabebereich As Range
Dim t
Dim i As Long
For Each oShp In ThisDocument.Shapes
If oShp.Type = msoTextBox Then
Set Ausgabebereich = oShp.Anchor.Next(Unit:=wdParagraph, Count:=1)
‚t = UCase(Left(oShp.TextFrame.TextRange.Text, 1))
Ausgabebereich.InsertBefore (t)
End If
Next oShp

For i = ActiveDocument.Shapes.Count To 1 Step -1
Set oShp = ActiveDocument.Shapes(i)
If oShp.Type = msoTextBox Then
oShp.Delete
End If
Next i
End Sub
[/sourcecode]