Hallo Oswald,
das Layer-Objekt bietet dafür zwei Methoden: CreateGuide und CreateGuideAngle. Bei CreateGuide werden als Parameter vier Koodinaten übergeben, bei CreateGuideAngle Zwei Koordinaten und ein Winkel.
Leider platziert VBA die Hilfslinien immer auf der Master-Ebene, egal auf welchen Layer man sich bezieht. Man kann das nur umgehen wenn man den Hilfslinien-Layer vorher aktiviert oder die Hilfslinie nach dem Erstellen verschiebt.
Beispiel:
Im Beispiel wird die CreateGuideAngle-Methode verwendet. Die Hilfslinen werden erstellt und dann auf die Hilfslinienebene der angegebenen Seite verschoben. Wenn Du beim Aufruf der Sub HilfslinienGitter den optionalen Parameter „Master“ auf true setzt, bleiben die Hilfslinien auf der Master-Ebene.
Noch eine kleine Anmerkung:
Ich verlasse mich hier darauf, dass die Abbruchbedingungen der While-Schleifen funktionieren (no risk, no fun). Wenn Du Bammel vor ungewollten Endlos-Schleifen hast, musst Du die Anzahl der benötigten Hilfslinien vorher berechnen lassen und For-Schleifen benutzen.
Gruß
Koter
das Layer-Objekt bietet dafür zwei Methoden: CreateGuide und CreateGuideAngle. Bei CreateGuide werden als Parameter vier Koodinaten übergeben, bei CreateGuideAngle Zwei Koordinaten und ein Winkel.
Leider platziert VBA die Hilfslinien immer auf der Master-Ebene, egal auf welchen Layer man sich bezieht. Man kann das nur umgehen wenn man den Hilfslinien-Layer vorher aktiviert oder die Hilfslinie nach dem Erstellen verschiebt.
Beispiel:
Code:
Sub HLGitter1()
Call HilfslinienGitter(10, ActiveDocument.Pages(2))
End Sub
Sub HilfslinienGitter(Abstand As Double, Seite As Page, Optional Master As Boolean = False)
Dim HL As Shape
ActiveDocument.Unit = cdrMillimeter
x = 0
'Verikal
While x <= Seite.SizeWidth
Set HL = ActiveLayer.CreateGuideAngle(x, 0, 90)
If Not Master Then HLVerschieben Seite, HL
x = x + Abstand
Wend
'Horizontal
y = Seite.SizeHeight
While y >= 0
Set HL = ActiveLayer.CreateGuideAngle(0, y, 0)
If Not Master Then HLVerschieben Seite, HL
y = y - Abstand
Wend
End Sub
Sub HLVerschieben(Seite As Page, HL As Shape)
Dim L As Layer, GL As Layer
For Each L In Seite.Layers
If L.IsGuidesLayer Then
Set GL = L
Exit For
End If
Next
HL.MoveToLayer GL
End Sub
Im Beispiel wird die CreateGuideAngle-Methode verwendet. Die Hilfslinen werden erstellt und dann auf die Hilfslinienebene der angegebenen Seite verschoben. Wenn Du beim Aufruf der Sub HilfslinienGitter den optionalen Parameter „Master“ auf true setzt, bleiben die Hilfslinien auf der Master-Ebene.
Noch eine kleine Anmerkung:
Ich verlasse mich hier darauf, dass die Abbruchbedingungen der While-Schleifen funktionieren (no risk, no fun). Wenn Du Bammel vor ungewollten Endlos-Schleifen hast, musst Du die Anzahl der benötigten Hilfslinien vorher berechnen lassen und For-Schleifen benutzen.
Gruß
Koter