20.10.2012, 15:37
Condula Schulz schrieb:Habe verschiedene Ebenen, die abwechselnd gemeinsam sichtbar und/oder druckbar=exportierbar sein sollten. Oder gibt es dafür etwa auch ein Macro ? :icon_troest:
Grüße.
Wie Norre schon sagt, ein komplett neues Ebenenmanagement wird nicht möglich sein. Man kann aber per Makro die Eigenschaften einer Ebene auf andere Ebenen kopieren.
Die Ebenen müssen allerdings so benannt sein, dass ein Makro weiß, welche Ebenen geändert werden sollen.
Ist der Name einer Ebene z.B "Vektor Haupt" kopiert folgendes Makro die Eigenschaften dieser Ebene auf alle Ebenen deren Name Mit "Vektor" beginnt.
Code:
(ThisMacroStorage)
Dim DocEv As New Ereignisfang
Private Sub GlobalMacroStorage_WindowActivate(ByVal Doc As Document, ByVal Window As Window)
Set DocEv.x = Nothing
Set DocEv.x = Application.ActiveDocument
End Sub
Sub SichtbarDruckbar()
Set DocEv.x = Nothing
For Each l In ActivePage.Layers
If Right(l.Name, 5) = "Haupt" Then
lns = Split(l.Name, " ")
HAnfang = lns(0)
For Each l2 In ActivePage.Layers
If Right(l2.Name, 5) <> "Haupt" Then
lns = Split(l2.Name, " ")
LAnfang = lns(0)
If HAnfang = LAnfang Then
ActivePage.Layers(l2.Name).Printable = _
ActivePage.Layers(l.Name).Printable
ActivePage.Layers(l2.Name).Visible = _
ActivePage.Layers(l.Name).Visible
ActivePage.Layers(l2.Name).Editable = _
ActivePage.Layers(l.Name).Editable
End If
End If
Next l2
End If
Next l
Set DocEv.x = Application.ActiveDocument
End Sub
Sub Hauptebene(LName As String)
Set DocEv.x = Nothing
vi = ActivePage.AllLayers(LName).Visible
ed = ActivePage.AllLayers(LName).Editable
pr = ActivePage.AllLayers(LName).Printable
For Each p In ActiveDocument.Pages
For Each l In p.Layers
lns = Split(l.Name, " ")
If lns(0) = LName Then
l.Visible = vi
l.Editable = ed
l.Printable = pr
End If
Next
Next
Set DocEv.x = Application.ActiveDocument
End Sub
(Klassenmodul: Ereignisfang)
Public WithEvents x As Document
Private Sub x_LayerChange(ByVal Layer As Layer)
If Layer.Master = True Then
Call ThisMacroStorage.Hauptebene(Layer.Name)
ElseIf Right(Layer.Name, 5) = "Haupt" Then
Call ThisMacroStorage.SichtbarDruckbar
End If
End Sub
Macht man die Ebene "Vektor Haupt" also druckbar werden die Ebenen "Vektor Skizze", "Vektor Einzelteile Beschriftung" usw. auch druckbar.
Das funktioniert aber nur auf der aktiven Seite.
Will man Ebeneneigenschaften auf alle Seiten kopieren, muss man eine Ebene auf der Master-Seite anlegen. Diese darf den Namenszusatz "Haupt" nicht enthalten.
Gruß
Koter