Neuer Zeichenbereich an der Cursorposition einfügen

30/10/2009 - 17:48 von AndreasHermle | Report spam
Word 2003

Hallo Experten:

Das unten angehàngte Makro fügt einen Zeichenbereich in einem Word-Dokument
ein. Folgende Eigenschaften sind u.a. noch eingestellt: Höhe%0, Breite=
Seitenbreite, Platzierung: Mit Text in Zeile

Folgende Fragen:

- Wie muss ich den Code veràndern, um diesen Zeichnungsbereich genau an der
Cursorposition einzufügen?
- Wie kann ich diesem Zeichnungsbereich per VBA eine benutzerdefinierte
Absatz-Formatvorlage zuweisen, z.B (diss_drawing_canvas)? Diese
Absatzformatvorlage hat bspw. 'Spacing before / after' von jeweils 12 pt.

Vielen Dank im voraus für Eure professionelle Hilfe,

Gruss, Andreas


Sub InsertCanvasWidthPrintableArea()


Dim shpCanvas As Shape
Dim sect As Section
Set sect = Selection.Sections(1)


'Add a new drawing canvas to the active document

Set shpCanvas = _
ActiveDocument.Shapes.AddCanvas( _
Left:p, Top:u, _
Width:=sect.PageSetup.PageWidth - _
sect.PageSetup.LeftMargin - _
sect.PageSetup.RightMargin, _
Height:%0)


With shpCanvas
.Visible = msoTrue
.Select
End With

Selection.ShapeRange.WrapFormat.Type = wdWrapInline

Selection.ShapeRange.Fill.Solid
Selection.ShapeRange.Line.Weight = 0.75
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)


End Sub
 

Lesen sie die antworten

#1 Thomas Gahler
31/10/2009 - 18:15 | Warnen spam
Hallo AndreasHermle


- Wie muss ich den Code veràndern, um diesen Zeichnungsbereich genau an
der
Cursorposition einzufügen?


Dazu habe ich bei der .AddCanvas-Methode zusàtzlich das Argument "Anchor"
angegeben. Wo bei ich nihct ganz sicher bin, was du denn mt "genau an der
Cursor-Position" meinst.
Falls der Cursor mitten in einem Absatz steh, dann steht jetzt dein
Zeichenbereich vor diesem Absatz. Falls du jedoch möchtest, dass der Absatz
aufgetrennt wird, dann müssten wir nach dem Erstellen des Zeichenbreichs den
Text, der vor dem Cursor stand vor den neuen Zeichenbereich verrschieben.


- Wie kann ich diesem Zeichnungsbereich per VBA eine benutzerdefinierte
Absatz-Formatvorlage zuweisen, z.B (diss_drawing_canvas)? Diese
Absatzformatvorlage hat bspw. 'Spacing before / after' von jeweils 12 pt.


Ein Zeichenbereich hat keine Absatzformatierung. Wenn du so etwas machen
möchtest, dann müsste der Absatz, in dem der Zeichenbereich steht formatiert
werden.

Was willst du genau erreichen?



Hinweise zum Code
- Das "If Selection.Type = wdSelectionNormal Then" prüft ob der Cursor einen
Text markiert. Falls dem so ist, dann wird die Markierung angepasst.
Ansonsten würde dein Text verloren gehen und das willst du wohl kaum.
- Zusàtztlich habe ich dem Zeichenbereich einen Namen gegeben. Es ist
sinnvoll, dass alle selbst erstellten Zeichenobjekte einen Namen bekommen.
So können diese Direkt angesprochen werden. Perfekt wàre, wenn der Name
eindeutig wàre, was hier nicht der Fall ist.
- Dann habe ich das ganze .Selection-Zeugs rausgeschmissen. Ich nehme an,
dies kommt davon, dass du den Code aufgezeichnet hast.



Sub InsertCanvasWidthPrintableArea()
Dim shpCanvas As Shape
Dim sect As Section
Set sect = Selection.Sections(1)

If Selection.Type = wdSelectionNormal Then
Selection.Range.Collapse wdCollapseStart
End If

'Add a new drawing canvas to the active document
Set shpCanvas = _
ActiveDocument.Shapes.AddCanvas( _
Left:p, Top:u, _
Width:=sect.PageSetup.PageWidth - _
sect.PageSetup.LeftMargin - _
sect.PageSetup.RightMargin, _
Height:%0, _
Anchor:=Selection.Range)


With shpCanvas
.LockAnchor = True
.Name = "Zeichenbereich_" & CStr(Rnd())
.Visible = msoTrue
.WrapFormat.Type = wdWrapInline
.Fill.Solid
With .Line
.Weight = 0.75
.Style = msoLineSingle
.Visible = msoTrue
.BackColor.RGB = RGB(255, 255, 255)
End With
End With
End Sub



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


- Windows Vista (SP2), Office 2007 (SP2)

Ähnliche fragen