MS Visio Zeichnung mit AutoIt erzeugen

  • Hallo, ich möchte aus meinem AutoIt Programm eine MS Visio Zeichnung erzeugen. Dies wollte ich über COM-Objecte erledigen. Habe auch den ersten Schritt bereits durchgeführt und Visio gestartet.

    [autoit]

    $oVisio = ObjCreate("Visio.Application") ;Visio Object erzeugen
    $oVisio.Visible = 1 ;Visio sichtbar

    [/autoit]


    Jetzt suche ich eine Liste der verfügbaren COM-Objecte um eine Zeichnung erstellen zu können.

    Oder kennt jemand eine bessere Möglichkeit mit AutoIt eine Zeichnung zu erstellen?

    Gruß Ingo

  • Hallo,
    danke für den Hinweis. Diese Seite hatte ich gefunden. Allerdings habe ich keine Ahnung wie ich das dort beschriebene richtig auf AutoIt übertragen kann. Habe mir VB Macros im Visio erstellt die zwei Objekte anlegen und ein zweites was die Objekte verbindet. Mit der Umsetzung im AutoIt hapert es aber noch etwas. Dazu habe ich nicht genug Erfahrung.

    Wie könnte ich denn die beiden angehängten VB Macros in das angehängte AutoIt Programm übertragen.
    Schon jetzt vielen Dank für jegliche Hilfe!!! :rock:
    Gruß Ingo

    [autoit]

    Visio()

    [/autoit][autoit][/autoit][autoit]

    Func Visio()
    Local $oVisio
    Local $sV_Blatt_Name = "Übersicht"

    $oVisio = ObjCreate("Visio.Application") ;Visio Object erzeugen
    $oVisio.Visible = 1 ;Visio sichtbar

    $oVisio.Documents.AddEx ("bstorm_m.vst");Zeichnung aus Vorlage anlegen
    $oVisio.ActivePage.Name = $sV_Blatt_Name ;Name vom Blatt setzen
    EndFunc

    [/autoit]
  • Hi,

    hier schonmal bis zum öffnen:

    [autoit]

    Visio ()

    [/autoit][autoit][/autoit][autoit]

    Func Visio ()
    Local $oVisio
    Local $sV_Blatt_Name = "Übersicht"
    Const $visOpenDocked = "&H8"
    Const $visOpenCopy = "&H1"
    $oVisio = ObjCreate("Visio.Application") ;Visio Object erzeugen
    $oVisio.Visible = 1 ;Visio sichtbar

    $oVisio.Documents.OpenEx ("bstorm_m.vst", $visOpenDocked);Zeichnung aus Vorlage anlegen
    $oVisio.ActivePage.Name = $sV_Blatt_Name ;Name vom Blatt setzen
    EndFunc

    [/autoit]

    Habe allerdings keine bstorm_m.vst zur Verfügung. Weiter machst Du mit der MSDN Dokumentation. Einige Ansätze habe ich ja schon implementiert.
    Die Dim können meiner Meinung nach weggelassen werden und sowas wie

    Zitat

    Set vsoCell3 = Application.ActiveWindow.Page.Shapes.ItemFromID(6).CellsU("BeginX")


    setzt Du um in

    Zitat

    $vsoCell3 = $oVisio.Application.ActiveWindow.Page.Shapes.ItemFromID(6).CellsU("BeginX")

    ;-))
    Stefan

  • Hallo,
    ich habe es soweit geschafft etwas lauffähiges zu erzeugen. ;)

    Jetzt habe ich allerdings ein Problem beim Verändern der Farbe. In der Zeile 37 wird natürlich das fehlen der im VB verwendeten Variabeln bemängelt.

    Wie kann ich die denn definieren und vor allem mit welchem Inhalt?

    Gruß Ingo

    [autoit]

    Visio ()

    [/autoit][autoit][/autoit][autoit]

    Func Visio ()
    $oVisio = ObjCreate("Visio.Application") ;Visio Object erzeugen
    $oVisio.Visible = 1 ;Visio sichtbar

    $oVisio.Documents.AddEx ("bstorm_m.vst") ;Zeichnung aus Vorlage anlegen
    $oVisio.ActivePage.Name = "Übersicht" ;Name vom Blatt setzen

    ;---------------- Objekte anlegen ----------------------------------
    $oVisio.ActiveWindow.Page.Drop($oVisio.Documents.Item("BSTORM_M.VSS").Masters.ItemU("Topic"), 6.5, 3.5) ;neues Item erstellen
    $oVisio.ActiveWindow.Page.Drop($oVisio.Documents.Item("BSTORM_M.VSS").Masters.ItemU("Topic"), 6.5, 3.5) ;neues Item erstellen

    [/autoit][autoit][/autoit][autoit]

    ; --------------- verbinden der Objekte ---------------------------------
    $oVisio.ActiveWindow.Page.Drop($oVisio.Documents.Item("BSTORM_M.VSS").Masters.ItemU("Dynamic connector"), 6.696943, 4.196358) ;Verbinder erzeugen

    $vsoCell1 = $oVisio.ActiveWindow.Page.Shapes.ItemFromID(3).CellsU("BeginX") ;Verbinder Beginn als Objekt definieren
    $vsoCell2 = $oVisio.ActiveWindow.Page.Shapes.ItemFromID(1).CellsSRC(7, 1, 0) ;das erste Item als Objekt definieren
    $vsoCell1.GlueTo($vsoCell2) ;beide verbinden

    $vsoCell1 = $oVisio.ActiveWindow.Page.Shapes.ItemFromID(3).CellsU("EndX") ;Verbinder Ende als Objekt definieren
    $vsoCell2 = $oVisio.ActiveWindow.Page.Shapes.ItemFromID(2).CellsSRC(7, 0, 0) ;das zweite Item als Objekt definieren
    $vsoCell1.GlueTo($vsoCell2) ;beide verbinden

    ;----------- beschriften der Objekte --------------------------
    $vsoCharacters1 = $oVisio.ActiveWindow.Page.Shapes.ItemFromID(1).Characters
    $vsoCharacters1.Begin = 0
    $vsoCharacters1.End = 11
    $vsoCharacters1.Text = "Item 1"

    $vsoCharacters1 = $oVisio.ActiveWindow.Page.Shapes.ItemFromID(2).Characters
    $vsoCharacters1.Begin = 0
    $vsoCharacters1.End = 11
    $vsoCharacters1.Text = "Item 2"

    ;----------- Farbe ändern --------------------------
    $oVisio.ActiveWindow.Page.Shapes.ItemFromID(3).CellsSRC(visSectionObject, visRowLine, visLineColor).FormulaU = "2"

    $oVisio.ActiveWindow.Page.Layout
    EndFunc

    [/autoit]