none
Publisher 2003: Shapes eindeutig benennen und mit VBA für Änderungen zugreifen RRS feed

  • Frage

  • Guten Tag

    Laut Beispiel in der VBA-Hilfe zu GroupItems existiert eine Name-Eigenschaft für Shapes. Ist es auch möglich, eine Gruppe von Formen in einem Publisher-Dokument eindeutig zu benennen, um dann mit VBA auf die Gruppe zuzugreifen?  Kann im Publisher-Dokument einer Gruppe ein Name zugewiesen werden oder geht das nur per VBA? Wie ermittle ich ggf. per VBA das konkrete Objekt im Publisher-Dokument? Wie bennene ich im Publisher-Dokument einzelne Shapes oder geht das nur mit VBA? Auch bei Shapes ist mir nicht klar, wie ich das gewünschte Shape im Publisher-Dokument mit Hilfe von VBA ermitteln soll. Mein Publischer-Dokument enthält ca. 40 Seiten mit einer Vielzahl von Shapes.

    Hintergrundinformation:

    Für eine periodische herauszugebende Publikation soll mit einer Gruppe von Shapes eine Sparkline-Grafik erstellt und fortgeführt werden. Ich möchte dieser Gruppe periodisch ein neues Shape hinzufügen (und ggf. ein vorhandenes Shape bei Überschreiten einer Obergrenze von Shape-Elementen in der Gruppe entfenen). Um das neue Shape exakt zu positionieren, müßte entweder die Anzahl der Shapes in der Gruppe per VBA gezählt und die Position der Gruppe ermittelt werden oder das letze Element der Gruppe festgestellt werden, um dessen Lagedaten (Left, Top, Width, Height) auszulesen.

    Viele Grüße

    Little Hobbit

    'VBA-Code 'Anlegen, Benennen und Löschen einer Gruppe in VBA gelöst. 'Weiter offen: Zugriff auf benannte Gruppen im Publisher-Dokument, benennen von Gruppen im Publisher-Dokument Sub testgroup() On Error GoTo Err_Sub Dim mypage As Page Dim myshpe As Shapes 'Seite im Publisher Dokument mit PageID selektieren ActiveDocument.Pages.FindByPageID(50332022)

    '2 Shapes einfügen und benennen With mypage.Shapes .AddShape(Type:=msoShapeRectangle, _ Left:=50, Top:=100, Width:=90, Height:=200).Name = "shp1" .AddShape(Type:=msoShapeRectangle, _ Left:=150, Top:=100, Width:=90, Height:=200).Name = "shp2"

    'Shapes gruppieren und Gruppe benennen .Range(Index:=Array("shp1", "shp2")).Group.Name = "Gruppe1"

    'Gruppe mit Hilfe des Namens löschen .Item("Gruppe1").Delete End With Exit_Sub: Exit Sub Err_Sub: MsgBox "Fehlernummer: " & Err.Number & _ vbCrLf & Err.Description Resume Exit_Sub End Sub



    Dienstag, 13. März 2012 13:08