Zugriff auf andere Page in Visio

Von: , 06.12.2010 18:33 Uhr

Hallo Experten,

ich habe ein Makro in VBA Excel programmiert, mit diesem Makro greife ich auf ein Visio Schema zu, mit dem folgenden Makro klappt es auch wunderbar, aber ich will nicht nur auf die Shapes im aktuellen Fenster sondern auch auf die Shapes in den anderen Seiten zugreifen.

Application.ActiveWindow.Page.Shape.ItemFromID(12).Text= "hallo"

vielleicht kann das Makro so aussehen:
Application.ActiveWindow.Page(Seite2).Shape.ItemFromID(12).Text = "hallo"

-> leider kommt dann eine fehlermeldung

Vielen Dank !!!

Mfg
WillsWissen

11 Antworten zu dieser Frage

  1. Antwort von nach 7 Minuten 0 hilfreich
    Re: Zugriff auf andere Page in Visio

    Tut mir leid, kann ich leider nicht bei helfen.

  2. Antwort von nach 11 Minuten 0 hilfreich
    Re: Zugriff auf andere Page in Visio

    leider kann ich nicht helfen, da visio eine eigene software ist, die ich nicht gekauft und installiert habe, sodaß ich das problem nicht nachvollziehen und ggf. lösen kann. sorry!

  3. Antwort von nach 29 Minuten 0 hilfreich
    Re: Zugriff auf andere Page in Visio

    Keine Ahnung von Visio. Sorry.
    Aber:
    Versuch doch mal eine Aufzeichnung eines VBA-Codes in Visio mit Wechsel der Seite. Dann siehst Du, wie man dort die Seiten anspricht

  4. Antwort von nach 35 Minuten 0 hilfreich
    Re: Zugriff auf andere Page in Visio

    Hallo,

    Mit vba-Progammierung kenne ich mich nicht aus, habe aber einen Hinweis: Nur die Shapes in einer genutzten Shape Library gelten (unmodifiziert) für alle Seiten! Das heisst, um Shapes zu erzeugen, die auf allen Seiten gleich sind, muss man ein Shape aus einer Shape Library benutzen. Wenn das dann verändert wird, wirkt sich die Veränderung auch auf alle Shapes aus, egal auf welcher Seite.

  5. Antwort von nach 13 Stunden 0 hilfreich
    Re: Zugriff auf andere Page in Visio

    Hallo,

    da kann ich leider nicht weiterhelfen.

    m.f.g. namina

  6. Antwort von nach 18 Stunden 0 hilfreich
    Re: Zugriff auf andere Page in Visio

    Hallo WillsWissen

    versuche es doch einmal mit einer Schleife über alle pages

    dim pagobj as visio.page
    For Each PagObj In ActiveDocument.Pages
    Application.ActiveWindow.pagobj.Shape.ItemFromID(12).Text= "hallo" 'oder so ähnlich ;-))
    Next PagObj

    ich hab zwar kein Visio zum Testen, könnte aber so funktionieren.

    liebe Grüße

    Stephan (Jason)

    • Antwort von nach 19 Stunden 0 hilfreich
      Re^2: Zugriff auf andere Page in Visio

      Vielen Dank!, leider funktioniert es so nicht.

      das Makro funktioniert mit ActivWindow

      Application.ActiveWindow.Page.Shapes.ItemfromID(12).Tex = "hallo"

      Könnte es funktionieren wenn ich mit der benennung der ersten Seite fertig bin, die andere seite active setzte?

      vielleicht so :
      ...
      ...
      Set Window("blabla").Pages("seite2") = ActivWindow

      und danach Application... usw.

      ich habe es momentan mit zichversionen versucht, wenn es mit activewindow klappt, muss es ja eine möglichkeit geben ihm zu sagen, dass er das Shape von der Seite 2 ändern soll.

      MFG

      WILLSWISSEN

      • Antwort von nach einem Tag 0 hilfreich
        Re^3: Zugriff auf andere Page in Visio

        Hallo willswissen

        Versuchs dann doch mal auf folgende Weise:
        dim i as integer
        For Each PagObj In ActiveDocument.Pages
        i = i + 1
        Set Window("blabla").Pages(i) = ActivWindow
        Application.ActiveWindow.pagobj.Shape.ItemFromID(12).Text= "hallo" 'oder so ähnlich ;-))
        Next PagObj

        Sollte der Counter mit 0 anfangen (weiss ich halt nicht so genau) sagst du einfach i = i + 1 - 1

        Ich kanns wie gesagt nicht testen.
        einfach ausprobieren.

        liebe Grüße

        Jason

    • Antwort von nach 22 Stunden 0 hilfreich
      Re: Zugriff auf andere Page in Visio

      Hallo WillsWissen,
      es gibt dafür mind. zwei Lösungen:

      1: Schnell, in einer Schleife verwendbar aber fehleranfällig (Indizies ändern sich, z.B. beim umsortieren der Seiten):
      visoObject.ActiveDocument.Pages(3).Shapes(1).Text = "neuer text"

      2: nicht sehr flexibel aber ziemlich sicher, was die Adressierung der Objekte angeht:
      visoObject.ActiveDocument.Pages("Page-2").Shapes("Sheet.1").Text = "neuer text"

      MfG
      WW

  7. Antwort von nach 22 Stunden 0 hilfreich
    Re^2: Zugriff auf andere Page in Visio

    hallo Waldemer Wesner(superexperte),

    Vielen Dank!!! Es klappt!!!

    MFG
    Willswissen

  8. Antwort von nach einem Tag 0 hilfreich
    Re: Zugriff auf andere Page in Visio

    Hallo WillsWissen,
    scheint deine 3.Anfrage an mich zu sein. Ich weiß immer noch nicht deinen Namen :.)
    Versuchs mal mit

    Das Shape z.B.benennen mit "Bild1".

    ActiveSheet.Shapes("Bild1").TextFrame.Characters.Text = "hallo"

    Wenn das nicht geht, das "ActiveSheet" gegen z.B. Sheets"Tabelle1" austauschen.

    Bis dann.
    Softoldi

    Jetzt auf diese Frage antworten.