VBA: Geometrie-Sektion

Sehr geehrter Herr Martin
Ich hatte mir bereits vor Jahren das sehr gute Buch von ihnen „Visio programmieren“ gekauft.
Es hat immer sehr gut zu dem Visio Verständnis beigetragen. Nun konnte ich eine Fragestellung nicht beantworten:
Wie kann ich mit VBA in der Geometrie-Section eines Verbinders den Zeilentyp auslesen. (MoveTo,Linteto, Arcto usw)

Mehr anzeigen
Hinergrund ist folgender:
In einer sehr großen Visiodatei gibt es eine große Zahl an Verbindern (ca 250) Ich möchte nun die Daten der Verbinder in einer Textdatei speichern, um später den Verbinder wieder genau so herstellen kann wie diese einmal gewesen sind.
Ich bekomme nun bereits die via Code die Werte, aber nicht den Zeilentyp (MoveTo,Linteto, Arcto usw) Gibt es eine Möglichkeit diesen Zeilentyp zu ermitteln?
In Schnittpunkten mit anderen Verbinder wird von Visio automatisch ein ArcTo hinzugefügt; Ich denke das brauche ich nicht mit zu speichern.
Es wäre sehr nett wenn sie mir eine Antwort geben könnten.
Im Internet bin ich nach langer Suche leider nicht fündig geworden.
mit freundlichen Grüßen
N.L.
Sehr geehrter Herr L.,
Die Antwort: Nun Sie können den Zeilentyp mit der Eigenschaft RowType ermitteln. In Ihrem Beispiel füge ich den folgenden Code ein:
[…]
For currow = 0 To (nRows – 1)
nCells = shp.RowsCellCount(curGeomSect, currow)
Select Case shp.RowType(VisSectionIndices.visSectionFirstComponent, currow)
Case 137
MsgBox „visTagComponent“
Case 138
MsgBox „visTagMoveTo“
Case 139
MsgBox „visTagLineTo“
Case 140
MsgBox „visTagArcTo“
Case 141
MsgBox „visTagInfiniteLine“
Case 143
MsgBox „visTagEllipse“
Case 144
MsgBox „visTagEllipticalArcTo“
Case 165
MsgBox „visTagSplineBeg“
Case 166
MsgBox „visTagSplineSpan“
Case 193
MsgBox „visTagPolylineTov
Case 195
MsgBox „visTagNURBSTo“
Case 136
MsgBox „visTagTab0“
Case 150
MsgBox „visTagTab2“
Case 151
MsgBox „visTagTab10“
Case 181
MsgBox „visTagTab60“
Case 153
MsgBox „visTagCnnctPt“
Case 185
MsgBox „visTagCnnctNamed“
Case 162
MsgBox „visTagCtlPt“
Case 170
MsgBox „visTagCtlPtTip“
End Select
For curCell = 0 To (nCells – 1)
[…]
viel Spaß mit Visio
Rene Martin

Wenn ich mir was wünschen dürfte …

(11) Warum sind Visio-2010-Dateien keine XML-Dateien wie Word-, Excel- oder PowerPoint-Dokumente? Das würde das Erstellen von neuen Symbolen in der Menüleiste erleichtern.
(10): Warum sind das, was Excel als Kommentare bezeichnet in Visio „Shape-Quick-Infos“? Warum sind Kommentare eigene Shapes? Erkläre mir einer die Microsoft-Sprache … Ach ja, wenn wir gerade dabei sind: in Excel sehe ich in einer Zelle ein kleines rotes Eck in der rechten oberen Ecke – wäre das nicht auch ein Gedanke für Kommentare (wie auch immer sie in Visio heißen)?
(09): Manchmal wären Rechenfunktionen in Visio schön. Okay, okay: Word und rechnen ist auch nicht gerade der Hit – aber okay: wünschen darf man sich ja …
(08): Es ist schön, dass ich das Sprungverhalten der Verbindungslinien global für das Zeichenblatt einstellen kann oder lokal für einen Verbinder. Manchmal ist allerdings gewünscht, dass ein Verbinder unterschiedlich springt – je nachdem welchen anderen Verbinder er kreuzt (beispielsweise Wasser- und Stromleitungen). Es wäre superklasse, wenn man auch noch pro Sprung Änderungen vornehmen könnte oder einen „bedingten Sprung“ definieren könnte.
(07): Wenn mehrere Shapes markiert sind, wäre es schön, wenn man die Anzahl der markierten Shapes sehen könnte – beispielsweise in der Statuszeile. Manchmal ist schwer zu erkennen, wie viele Shapes markiert sind.
(06): Leider ist nicht möglich ohne Programmierung das Doppelklickverhalten eines Shapes so zu ändern, dass man auf eine andere Datei springen kann.
(05): Anders als in Word oder PowerPoint können in Visio leider nicht sämtliche Seiten einer Datei nebeneinander angezeigt werden. Mann muss jede Seite einzeln ansehen.
(04): Okay, okay, ich weiß: Excel hat es auch nicht. PowerPoint ebenso. Aber schön wäre es doch. Könnte man nur die „Absatzmarken und sonstige ausgeblendete Formatierungssymbole“ (¶) anzeigen lassen. Das würde uns Ärger ersparen, wenn ein Enter ein Tabulator oder eine Leerstelle zu viel im Text sind.
Und in diesem Zusammenhang: schön wäre auch noch eine Silbentrennung in Visio.
(03): zugegeben: wer ein Programm kennt, der wird in einem anderen Programm Dinge vermissen. Eben. Ich vermisse in Visio die Möglichkeit mit gedrückter [Strg]-Taste ein Shape in beide Richtungen gleichzeitig zu vergrößern. Also: an einem Größenänderungskontrollpunkt anzufassen und nach links und nach rechts zu ziehen. Die einzige Möglichkeit dies zu realisieren liegt darin, sich die Position des Pins zu merken, das Shape zu vergrößern und danach die Position wieder einzutragen.
(02): Die Beta 2012 von Microsoft Office und damit auch von Microsoft Visio kommt näher. Aber vorher möchte ich mir noch etwas wünschen. Nun ja, wünschen darf man ja:
Ich wünsche mir, dass man ein Zeichenblatt mit der rechten Maustaste kopieren kann – so wie in PowerPoint oder Excel. Das wär doch was.
(01): dann würde ich mir in Visio eine Funktion wünschen, mit der man Shapes auf einem Zeichenblatt zentrieren kann. Das kann Microsoft Powerpoint schon seit vielen Version. Zugegeben: man kann es mit Hilfslinien realisieren oder man könnte sich ein Add-In programmieren. Schön wäre es trotzdem wenn Microsoft so eine Funktion zur Verfügung stellen würde.

Frage zu VBA

Sehr geehrter Herr Dr.Martin,
vor einigen Jahren habe ich mir Ihr Buch „Visio Programmieren“ aus dem Jahr 2003 gekauft.
Leider habe ich damals nichts mit VBA Programmierung zu tun gehabt.
Jetzt habe ich wieder das Vergnügen mit Visio arbeiten zu dürfen.
Das sollte jetzt nicht Ironisch klingen, denn ich mag Visio wirklich. Mit VBA wollte ich jetzt In Visio ein Fenster mit Combobox erzeugen und mit einer Excel-Datei verbinden.
Jetzt habe ich so einiges probiert und komme nicht weiter.
Würde mir hier ihr neues Buch helfen?
Also gibt es Unterschiede in der Programmierung?
Vielen Dank im Voraus
Mit freundlichen Grüßen
M. K.

#####

Hallo,
weder die Programmierung noch das Objektmodell unterscheidet sich zwischen den einzelnen Visio-Versionen. Der größte Unterschied zwischen Visio 2007 und 2010 ist die Oberfläche – nun besitzt Visio ein Menüband. Der größte Unterschied von 2003 zu 2007 ist, dass Daten nun mit einem Klick an Shapes gebunden werden können und dass man die Daten mit einem Klick sich in den Shapes anzeigen/wegblenden lassen kann.
Ebenso wenig Änderungen/Überarbeitungen werden Sie in meinen Visio-Büchern von 2003 -> 2007 -> 2010 finden. Okay, es tauchten einige Fragen auf, die ich eingearbeitet habe, die in älteren Versionen so noch nicht besprochen wurden, beispielsweise Mehrsprachigkeit in Visio.
Ein Tipp: lernen Sie VBA! Der Sprachkern von VBA (damit auch das Erstellen einer Combobox) ist in allen Programmen (Word, Excel, Access, Visio, PowerPoint, Outlook, AutoCAD, …) 100% der Gleiche. VBA ist eine mächtige Sprache. Auch wenn sich „Makro“ immer recht niedlich und harmlos anhört – man benötigt einige Zeit, um sich einzuarbeiten.
Lernen Sie das Objektmodell von Excel!
Lernen Sie das Objektmodell von Visio! Hier ist der „Witz“, dass Informationen nicht an das Shape geschrieben werden, bzw. aus dem Shape gelesen werden, sondern in den Zellen des Shapesheets stehen, wo es eingetragen, bzw. ausgelesen werden kann.
Sicherlich kennen Sie mein Beispiel, mit dessen Hilfe ich die Daten von Visio nach Excel, bzw. Word schreibe. Es funktioniert natürlich auch umgekehrt.
Achtung: ich habe es von der aktuellen Version 2010 entnommen – wenn Sie eine ältere Excel/Word-Version haben, dann müssen Sie den Verweis auf die aktuelle Word/Excel-Version einbinden.
Hilft Ihnen das? Kommen Sie klar?
schöne Grüße
Rene Martin
visio2010p