Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer DataAssist e.K.
Download ReportTranscript Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer DataAssist e.K.
Microsoft Visio als universelle Graphikengine Visio als Entwicklungswerkzeug Šenaj Lelić Visio Master Trainer Europe, Certified Visio Development Trainer DataAssist e.K. München und Zürich Agenda Visio als Produkt Visio als Entwicklungsumgebung • • Das ShapeSheet als erste Entwicklungsumgebung Automation mit und von Visio Visio: eine leistungsfähige Graphikengine und Entwicklungsumgebung für visuelle Lösungen oder Graphik-Engine einer größeren Lösung Wo gibt‘s weitere Info‘s? Voraussetzungen Kenntnisse in der Programmierung von Microsoft Excel sind hilfreich aber nicht unbedingt nötig Grundlagen der Automation von Anwendungen mit VB, VBA oder einer anderen automationsfähigen Programmiersprache Šenaj Lelić [email protected] Seit 1991 als IT-Consultant und Trainer tätig Schwerpunkt Visualisierungslösungen, Systemsoftware, Visio und Datenbanken Seit 1995 Gründer und Geschäftsführer von DataAssist München Visio Master Trainer Europe Certified Visio Development Trainer Certified Visio Anwender-Trainer IT Trainer-Coach Arbeiten mit Visio Drag & Drop von vorbereiteten Komponenten (Shapes) auf die Zeichnung zur Erstellung eines visuellen Modells der Aufgabe Nicht Zeichnungsfunktionen stehen im Vordergrund, sondern das Hinzufügen von nichtvisuellen Informationen und Verhalten (optischer Container) Nutzung der SmartShape- Technologie ermöglicht einen Einsatz in fast allen Unternehmensbereichen ('Visio ist das grafische Excel') Terminologie (Smart)Shape (Shape) • Zeichnungsobjekt einer VisioSeite mit programmierbarem Verhalten Stencil (Schablone) • Thematische Sammlung von Shapes in einer eigenen, verteilbaren Datei (.vss) Terminologie 2 MasterShape (MasterShape) • Ein Shape in einer Schablone Template (Vorlage) • Entspricht in etwa einer Dokumentenvorlage in Office (voreing. Arbeitsumgebung) ShapeSheet (ShapeSheet) • Container für die Shape- Parameter, wird von der VisioEngine ausgewertet Die Visio 2000 Produktfamilie Visio Standard Visio Technical • Ablaufillustration • HVAC, Maschinenbau Visio Professional Visio Enterprise • Netzwerke, Software • IT-Doku & Planung Visio Enterprise Visio Professional Visio Standard Visio Technical Die Visio 2002 Produktfamilie Visio Standard • Ablaufillustration • Organigramme Visio Professional (= Technical + Prof.) • HVAC, Maschinenbau • Netzwerke, Software Visio Network Center (reines Add-On) • IT-Doku & Planung • IT-Modellierung Visio Network Center Visio Professional Visio Standard Visio Standard Geschäftsdiagramme und Fluss- diagramme Grafische Darstellung von Organisationsstrukturen Grafische Planung von Projekten Erstellung von Zeichnungen für Präsentationen Weiterere Geschäftszeichnungen wie Formulare, Landkarten & Grafiken Visio Technical Exaktes CAD-ähnliches Zeichnen und Arbeiten Verfahrenstechnik-Zeichnungen und Plandiagramme Grundrisse, Baupläne im Bereich Facility Management Erstellen weiterer anlagetechnischer Zeichnungen Elektrische und elektronische Schemadiagramme für Steuersysteme Visio Professional LAN-Dokumentation Dokumentation und Entwurf von Verzeichnisdiensten Planung von Web-Sites SoftwarekomponentenEntwurf Datenflussdiagramme Entwurf von Datenbankmodellen Analyse von Geschäftsprozessen Visio Enterprise (2000 !) Die gesamte Funktionalität von Visio Professional plus: Auto-Discovery von Netzen UML-Softwaremodellierung Datenbank-Modellierung Software-ReEngineering Visio Network Equipment Individuelle Visio-Lösungen Inkrementelle Lösungen mit Visio Entwurf anwendungsspez. Shapes DB-Assistent SmartShapes, Datenfelder, etc. ShapeSheet-Programmierung, Automation, Modellierung VBA-Makros DB-Zugriff Visuelles Frontend einer Enterprise-Lösung Komponenten einer Lösung SHAPES Erst OK durch die Kombination aller Elemente entsteht eine komplette Visio-Lösung VISIO-Solution Dim appVisio As Object Dim UIObj As Object Set appVisio = CreateObject("App") Set UIObj = appVisio.BuiltInMenus appVisio.SetCustomMenus UIObj CODE TEMPLATES Visio-Lösungen wachsen Machen Erleichtern Sie sich die Arbeit mit Vorlagen Nutzen Sie Ihre Shapes zu SmartShapes™ Sie die Möglichkeiten der Automation Erstellen Sie mit Add-Ons visuelle Modelle Visio als visuelles Frontend im Unternehmen Die Visio-Umgebung Schablonen Visio Engine Vorlagen VBA VSL EXE Automation Interface MS Office Add-ons ODBC/ADO Eigene Entwicklungsumgebung 1: Das ShapeSheet in Visio Shapes: parametrische Objekte GUI-Aktion ShapeSheet Shape als Ergebnis Das ShapeSheet Die Grundlage für Visio‘s Flexibilität Shapes sind parametrische Objekte Alle relevanten ShapeDaten finden sich im ShapeSheet und werden dort definiert und geändert Auch für den Einsatz von Automation notwendiges Grundwissen Ereignisse im ShapeSheet Ereignisse Abschnitt • TheText • EventDblClick • EventXFMod • EventDrop DependsOn im ShapeSheet Wird typischerweise in einer benutzerdefinierten Zelle eingesetzt: •=Runaddon("string") + DependsOn(trigger cell) •=Setf("Cell",formula) + DependsOn(trigger cell) Damit lassen sich Änderungen im ShapeSheet überwachen, ohne VBA zu benötigen Beispiel zu DependsOn Setzen der Füllfarbe über Datenfeld oder alternativ über das User Interface Ein Datenfeld mit der Farbe erzeugen Zwei benutzerdefinierte Zellen einfügen • • =DependsOn(Prop.Color) + Setf("FillForegnd",Prop.Color) =DependsOn(FillForegnd) + Setf("Prop.Color",FillForegnd) ShapeSheet vor Code Formeln im ShapeSheet sind der effizienteste Weg, um in Visio eine Ereignisbehandlung zu erreichen. Schreiben Sie keine Routinen für die Ereignisbehandlung, wenn Formeln in Zellen ausreichen! Demo ShapeSheetProgrammierung Entwicklungsumgebung 2: Automation in Visio Das Visio Objektmodell Klar ActivePage Active Window 1 Windows Document Page Master Selection Documents Masters Master Connects Connect Layers Layer Shapes Shape Shapes Shape Pages Connect Page Document Application Connects Global strukturierter Aufbau, schlank Vordefinierte Objekte für Dokument, Seite und Fenster etc. Grafisch über Online-Hilfe navigierbar Active Document Window This Document Layers Layer Shapes Shapes Shape… Cell Styles Style Shape Fonts Connects Font Connect Colors Color Characters VBProject MenuSets UI object UI object AddOns AddOn EventList Event VBE Menus MenuSet Menu AccelTables AccelTable AccelItems AccelItem ToolbarSets ToolbarSet Toolbars StatusBars StatusBarItems StatusBar StatusBarItem Toolbar MenuItems MenuItem ToolbarItems ToolbarItem MenuItems MenuItem Entwicklungsumgebungen VBA • Integriert - Development right out of the box! • Schnell, geeignet für die meisten Aufgaben COM-fähige Sprachen • Z.B. VB, VC++, VBA, Delphi, etc. • Für externe Add-Ons: VSL • Zur Integration von Visio in eigene Systeme Wie wird entwickelt ShapeSheet und VBA-Code sind in Visio miteinander verbunden Nicht Visio wird gesteuert, sondern das darunter liegende ShapeSheet für jedes Shape (selbst das Zeichenblatt !) Für eine effektive Entwicklung sind sowohl Kenntnisse der ShapeSheetProgrammierung als auch von Automation (VB(A), C++, Delphi) nötig Grundregel: Erst Shapes.... Dann Code Planung einer Visio-Lösung Vorlagen erleichtern den Benutzern die Arbeit Das Programm muss folgende Aufgaben erfüllen: • User Interface und Schutz • Dateioperationen, Datenablage • Behandlung der einzelnen Shapes Performance bedenken (VSD‘s > 10000 Shapes) Coding Issues Early vs. late binding, Variants meiden VBA code ist Bestandteil der Zeichnung Code kann geschützt werden – Extras / Eigenschaften / Schutz im VBAEditor Zusammengesetzte Statements sind möglich, aber schwerer zu debuggen Wann läuft der Code? Beim Start von Visio 2000 • Pfad für Add-On einstellen Aus dem Add-On Menü • Der Visio „Entwickler-Modus“ Beim Öffnen eines Dokuments • Alternativ RunModeEntered Bei der Auswahl einer Menüoption • Oder Aktivierung eines Toolbar-Buttons Ein Dokument erzeugen Verweis auf die "Documents" collection des Application-Objekts erzeugen Set oDocs = Visio.Application.Documents 'oder Set oDocs = Application.Documents 'oder Set oDocs = Documents Ein neues Dokument hinzufügen Set oDoc = Documents.Add("Diagramm.vst") Set oDoc = Documents.Add("") Set oDocStencil = Documents.OpenEx( _ "Blocks.vss", visOpenDocked) Verweise auf Mastershapes Die Schablone bestimmen Set oDocStencil = Documents("Basic Shapes.vss") Die "Masters" Collection der Schablone holen Set oMasters = oDocStencil.Masters Verweis auf die abzulegenden Shapes Set oMaster = oMasters.Item("Star 5") Set oMaster = oMasters("Star 5") Sicherstellen, 'oder dass auf die Masters der Schablone zugegriffen wird, nicht die der Zeichnung! Master auf der Seite ablegen Die Zeichnungsseite holen Set oPage = ActiveDocument.Pages.Item(1) Set oPage = ActivePage Das Mastershape ablegen Set oShape = oPage.Drop(oMaster,4.25,5.5) 4.25, 5.5 geben die Koordinaten des Pin‘s an und werden immer in Inch angegeben! Bei Bedarf mit ConvertResult die Einheiten umrechnen Text zu Shapes hinzufügen Die Text-Eigenschaft des Shapes oShape.Text = “Das ist ein String" setzen ASCII linefeed erzeugt Zeilenumbrüche oShape.Text = "Karl Namenlos" & _ Chr$(10) & "Vorstandsschläfer" Anführungszeichen in Strings verdoppeln shpObj.Text = """Hello?""" Eine übersichtlichere Möglichkeit: shpObj.Text = Chr$(34) & "Hello" & Chr$(34) Formeln von Shapes lesen In Visio’s Objektmodell wird eine Formel durch ein Cell-Objekt repräsentiert So erhalten Sie ein Cell-Objekt Set oCell = oShape.Cells("Width") So erhalten Sie ein Cell-Objekt einer Seite (auch die Seite ist ein Shape) Dim oPageSheet as Visio.Shape Set oPageSheet = ActivePage.PageSheet Set oCell = oPageSheet.Cells("PageWidth") Formel oder Ergebnis? Die Eigenschaft Formula einer Zelle liefert die ShapeSheet-Formel als String Dim sFmla = String sFmla = oCell.Formula Die Eigenschaft Result liefert den Wert der Formel als Double in den angeg. Einheiten Dim dFmlaResult as Double dFmlaResult = oCell.Result("in") dFmlaResult = oCell.Result("mm") Siehe auch ResultInt, ResultIU, ResultStr Eine Formel festlegen Setzen Sie die Eigenschaft Formula: oCell.Formula = "=GUARD(Width*2)" Setzen Sie die Eigenschaft oCell.Result(visNumber) = 42 Result Auch ResultInt und ResultIU lassen setzen, ResultStr ist read-only Zum sich Überschreiben einer geschützten Formel benutzen Sie FormulaForce (Formeln lassen sich mit Guard schützen) Eine Collection bearbeiten Die meisten Collections in Visio starten bei 1, außer UI objects und Systemsachen (bei 0) Die Count Eigenschaft liefert die Anzahl der Elemente einer Collection Seit Visio 2000 auch über for each For each shp in ActivePage.Shapes 'shape bearbeiten Next shp Wichtige Eigenschaften Masters, Pages, Styles, Fonts, Colors Name, Fullname, Path Creator, Description, Keywords, Subject, Title ReadOnly, Saved, InPlace Daten aus Seiten auslesen Eine Seite holen Set oPage = oPages.Item("pagename") Set oPage = oPages.Item(index) Die aktive Seite holen Set oPage = Application.ActivePage (Das aktive Fenster muss ein Zeichenfenster sein, sonst erhält man einen Fehler!) Daten aus Shapes auslesen Eine Shape-Collection kann 'normale' Shapes, Gruppen, Führungslinien, linked/embedded objects enthalten Die Type Eigenschaft liefert den Typ des Shapes: •visTypeShape, visTypeGroup, visTypeGuide, visTypeForeignObject, visTypePage Weitere Infos in der EntwicklerReferenz Online-Hilfe oder im DVS Mit Fenstern arbeiten Das aktive Fenster feststellen Set oWindow = Visio.ActiveWindow Den Typ eines Fenster feststellen If oWindow.Type <> visDrawing Then Debug.Print "Kein Zeichenfenster" End If • Type: visDrawing, visSheet, visStencil, visIcon • SubType: visPageWin, visMasterWin, visPageGroupWin, visMasterGroupWin Die Methode CellsSRC Nutzen Sie CellsSRC, um über Abschnitt, Zeile und Zelle auf Shapes zuzugreifen Set oCell = oShape.CellsSRC _ (visSectionControls, _ '(Controls Absch.) visRowControl + 3, _ '(4. Zeile) visCtlX) '(Controls.X Zelle) Siehe auch die Methoden SectionExists, RowExists, CellExists, CellsSRCExists Eine Überprüfung sollte immer stattfinden, da evtl. Abschnitte im Shapesheet fehlen können! Visio-Ereignisbehandlung Verhalten in ShapeSheet-Zellen ShapeSheet Ereignisse VBA Code hinter Ereignissen • Für Visio-Objekte • Für ActiveX Controls Zell-Abhängigkeiten Eine Formel kann von anderen Zellen abhängen •PinY •EndY Es =(BeginY+EndY)/2 = PAR(PNT( Sheet.2!Connections.X1, Sheet.2!Connections.Y1)) gibt ein Abhängigkeitsnetzwerk: • PinY hängt ab von EndY, da wiederum von • Sheet.2!Connections.X1 abhängt. Der Wert von Connections.X1 ändert sich und sorgt dafür, daß EndY und PinY neu berechnet werden. VBA code für Ereignisse Ereignisse sind Teil der Typelib für Visio Die Objekte haben Ereignisse definiert, die nur bei bestimmten Objekttypen feuern Ereignisbehandlung mit VBA auch in Visio 5.x Unterstützte Ereignisse AfterModal AppActivated AppDeactivated AppObjectActivated AppObjectDeactivated BeforeDocumentClose BeforeDocumentSave BeforeDocumentSaveAs BeforeMasterDelete BeforeModal BeforePageDelete BeforeQuit BeforeSelectionDelete BeforeShapeDelete BeforeStyleDelete BeforeWindowClose BeforeWindowPageTurn BeforeWindowSelDelete CellChanged ConnectionsAdded ConnectionsDeleted DesignModeEntered DocumentAdded DocumentChanged DocumentCreated DocumentOpened DocumentSaved DocumentSavedAs FormulaChanged MarkerEvent MasterAdded MasterChanged PageAdded PageChanged RunModeEntered SelectionAdded SelectionChanged ShapeAdded ShapeChanged ShapeDeleted StyleAdded StyleChanged TextChanged WindowActivated WindowOpened WindowTurnedToPage Hierarchische Ereignissketten Wählen Sie die Quelle, die für Ihre Aufgabenstellung am sinnvollsten ist Viele Ereignisse werden von mehr als einem Objekt generiert: • Page.ShapeAdded • Doc.ShapeAdded • App.ShapeAdded Im -> Feuert, wenn ein Shape der Seite hinzugefügt wird -> Feuert, wenn ein Shape irgendeiner Seite des Dokuments hinzugefügt wird -> Feuert, wenn ein Shape irgendeiner Seite in irgendeinem Dokument der Anwendung hinzugefügt wird VBA-Objektbrowser erhalten Sie Informationen über die einzelnen Ereignisdefinitionen Document Ereignisse Das vor-instantiierte DocumentObjekt gibt Ihnen Zugriff auf verschiedene Ereignisse Arbeiten mit WithEvents “WithEvents” Schlüsselwort erlaubt das Schreiben von Code für jedes Quellobjekt eines Ereignisses Die WithEvents Variable muss an ein bestehendes Objekt 'gebunden' werden: Das Dim WithEvents aPage As Visio.Page Set oPage = Visio.ActivePage ActiveX Controls Jedes ActiveX Control kann in ein Visio-Dokument eingefügt werden. Das Dokument muss sich im Run-Mode befinden, damit Ereignisse ausgelöst werden Ereignisbehandlung für ActiveX-Controls geschieht auf die gleiche Weise wie für Visio-Objekte mit WithEvents Bis voraussichtlich Jahresende wird es auch ein Visio ActiveX-Control geben (für Viewer-Funktionalität) Hinweise Einstellungen unter Extras/Optionen können die Ereignisbehandlung abschalten Application.EventsEnabled kann dazu ebenfalls benutzt werden Persistenz wird durch zwei Methoden möglich: • DocumentOpened • RunModeEntered Shapes verbinden Holen Sie sich ein Zellobjekt, welches einen Teil des Shapes darstellt, von dem die Klebung ausgeht Nutzen Sie GlueTo oder GlueToPos dieses Zell-Objektes und geben Sie an, an welchem Shape Sie ankleben wollen Die Ausgangszelle Steuerelement (Control handle) oFromCell = oShape.Cells(“Controls.X1”) Beginn- oder Endpunkt eines 1-D Shapes oFromCell = oShape.Cells(“BeginX”) Ecke eines Shapes (an "PinX" oder "Geometry1.X1" Zellen bei Führungslinien) oFromCell = oShape.Cells(“AlignLeft”) Jede Zelle eines X,Y Paares ist möglich (die andere wird von Visio automatisch geklebt) An andere Shapes ankleben klebt an spezifische Stelle eines Shapes GlueTo oFromCell.GlueTo _ oToShape.Cells("Connections.X1") klebt an eine X,Y Position, die einen Anteil des Ausrichtungsfeldes des Shapes darstellt GlueToPos oFromCell.GlueToPos oToShape, 0.5, 0.5 erzeugt immer einen Verbindungspunkt, selbst wenn bereits einer vorhanden ist. GlueToPos Daten zu Shapes hinzufügen Sie erhalten über die Eigenschaft Cells jede benannte Zelle in einem ShapeSheet, auch Datenfelder oder benutzerdefinierte Zellen Was passiert, wenn die Zelle nicht existiert? Kann durch CellsExists getestet werden Zelle kann per VBA hinzugefügt werden Infos über Connections Die Connects Eigenschaft eines Shapes liefert dessen Verbindungen Enthält für jedes Shape, an das angeklebt wurde, ein Connect-Objekt FromSheet, ToSheet Eigenschaften FromPart, ToPart Eigenschaften FromCell, ToCell Eigenschaften Steuerelement zu Shape A B A verbunden nach B (2-D nach 2-D über Steuerelement) A hat einen connects.Count = 1 FromSheet = A, ToSheet = B FromPart = visControlPoint + 0 ToPart = visConnectionPoint + 0 FromCell, ToCell = Cell-Objekte für FromPart, ToPart Window-Eigenschaften Zoom Liest oder setzt die Zoomeinstellung (Fliesskommawert 1.00 = 100%) Page, PageFromName, PageAsObj Liest oder setzt die angezeigte Seite Window-Methoden GetViewRect Liefert Koordinaten des Fensterrahmens DockedStencils Liefert die Namen aller geöffneten Schablonen Activate Aktiviert das entsprechende Fenster Windows.Add Damit erzeugen Sie ein neues Fenster im Bereich der Visio-Anwendung ActiveWindow.Windows.Add("My Anchor", , _ visAnchorBarAddon) Kann von folgendem Typ sein: visAnchorbarAddon, visStencilAddon, oder visDrawingAddon Windows.Add - 2 Die ideale Basis für Add-Ons und eigene Lösungen innerhalb der Visio Anwendungsoberfläche Spatial Relations Mit SpatialRelation stellen Sie die räumliche Beziehung zweier Shapes fest. Liefert einen der angegebenen Werte: visSpatialOverlap, visSpatialContain, visSpatialContainedIn, visSpatialTouching visSpatialOverlap Query Events Neu seit Visio 2000 Sie können jetzt auf Ereignisse testen und diese bei Bedarf auch abbrechen QueryCancelSelectionDelete SelectionDeleteCanceled BeforeSelectionDelete Shape wird nicht gelöscht Shape wird gelöscht Das Visio-UI anpassen Was kann angepasst werden? • Menüeinträge • Shortcuts • Symbolleisten • Statuszeilen Größe der Änderung sollte beachtet werden, je nach Aufwand zwei Lösungswege UI-Objekte im Objektmodell Windows Documents MenuSets Application MenuSet Menu AccelTables AccelItems AccelTable UI object ToolBarSets ToolBarSet StatusBars StatusBar AddOns Menus MenuItems MenuItem AccelItem ToolBars ToolBar StatusBarItems StatusBarItem ToolBarItems ToolBarItem MenuItems MenuItem… Mögliche UI-Änderungen Umfang der Änderungen • Kleine Änderungen direkt durchführen • Große Änderung in UI-File schreiben Persistenz • Dauerhafte Änderungen an das Dokument oder an die Applikation binden • Temporäre Änderungen direkt durchführen oder ein UI-File laden Unique Ids für Shapes Kann zur Verknüpfung eines Shapes oder eines Masters mit einem Datensatz in einer Datenbank verwendet werden Als Vorgabe besitzen MasterShapes eine ID, normale Shapes besitzen keine Beispiel: {2287DC42-B167-11CE-88E90020AFDDD917} Arbeiten mit GUIDs Lesen einer UniqueID: IDStr = shpObj.UniqueID(visGetGUID) Lesen und Erzeugen einer UniqueID IDStr = _ shpObj.UniqueID(visGetOrMakeGUID) Löschen einer UniqueID shpObj.UniqueID(visDeleteGUID) Visio und XML (2002) Visio 2002 kann jede Zeichnung im Format XML, alternativ zum Binärformat speichern Viele Möglichkeiten für Erweiterungen Spezifikation in „XML for Visio“Whitepaper (alle Whitepaper auf MSDN verfügbar) Embedded Visio Visio lässt sich in Gesamtlösungen einbetten Aber: Visio muss auf dem System separat installiert sein Visio-ActiveX-Control in Vorbereitung Planung einer Visio-Lösung Shapes ... – dann Code! Vorlagen für die Lösung erleichtern den Benutzern die Arbeit Programm muss folgende Aufgaben erfüllen: Erst • User Interface und Schutz • Dateioperationen, Datenablage • Behandlung der einzelnen Shapes Verteilung & Wartung Deployment • Verteilung von Vorlagen und Schablonen Wartung • Problematisch, da VBA Code in Dokument • Alternative: VBA in der Schablone, 'leere' Datei • Alternative: externe Automation Weitergehende Anpassungen • Über die Registry-Settings, PC-spezifisch! Demo(s) AutomationsProgrammierung mit Visio Konkrete Anwendung in Visio selbst – mitgelieferte Lösungen Datenbankmodellierung mit Visio Gemeinsame Engine und Dateiformat Standard Technical Professional Enterprise Demo Datenbankmodellierung mit Visio Softwaremodellierung mit Visio Gemeinsame Engine und Dateiformat Standard Technical Professional Enterprise Demo Softwaremodellierung mit Visio Wo gibt's Informationen Online ActiveX Automationsreferenz • Entwickler-Referenz aus dem Hilfe-Menü • Installiert in \Visio\Help bei der Installation • Suche nach Objekt, Eigenschaft, Methode, Ereignis Im Object Browser (in VBA [F2]) Microsoft Developer Network unter http://msdn.microsoft.com/visio Wo gibt's Informationen (2) Im Ordner DVS • Libraries • C-cpp • VB enthalten Informationen für C, VB • Sample Applications • VB Solutions • VBA Solutions Developing Visio Solutions Buch Trainings Training erfolgt stufenweise • Anwendertraining (2 Tage) • Visio Development Training (5 Tage) • Workshops zu Spezialthemen (1-2 Tage) Wo gibt’s weitere Info’s? MSDN online • http://www.microsoft.com/germany/msdn MSDN quickie • http://www.microsoft.com/germany/msdn/quickie MSDN TechTalk-Newsgroup • news://msnews.microsoft.com/microsoft.public.de.german.te chtalk VBA-Magazin • • http://www.vba-magazin.de 4/99, 6/99, 5/2000, 2/2001 Bücher • Edson, David “Professional Development with Visio 2000”, Sams, ISBN: 067231813X Noch Fragen? Microsoft TechEd 2001 Visio Development Training Visio Newsgroup bei MS [email protected] Fragen!? Uff... Vielen Dank für Ihre Aufmerksamkeit