Gruppenschutz

Ich verwende diesen Pararmeter gerne und häufig in Visio.
Sicherlich ist Ihnen schon bei vielen Shapes aufgefallen, dass ein Schutz auf Ihnen liegt – das Aufheben der Gruppierung ist nicht möglich. Ein Blick in Entwicklertools / Shape-Design / Schutz hilft auch nicht weiter.
Der Schutz liegt eine Ebene tiefer: im ShapeSheet im Abschnitt „Protection“ wurde der Wert der Zelle „LockGroup“ auf 1 (True) gesetzt. So kann der Anwender nicht mehr versehentlich die Gruppierung aufheben ([Shift] + [Strg] + [U]).
Ich schalten diesen Schutzmechanismus gerne bei Shapes ein, die ich an Firmen ausliefere – ein kleiner Schutz.

Der Nummerierungsassistent

Amüsantes Problem, das letzte Woche in der Visio-Schulung aufgetreten ist:
Einer Firma arbeitet in Visio mit dem Nummerierungsassistenten. Die Nummer soll aber nicht im Shape sondern außerhalb angezeigt werden. Hierfür würde ein weiteres Shape angelegt, das die Nummer des ersten Shapes „zieht“, beispielsweise über:
=Sheet.1!Prop.ShapeNumber
Diese Nummer in den Shapedaten kann man nun anzeigen lassen.
Beide Shapes werden gruppiert, was allerdings zur Folge hat, dass sich der Verbindungspunkt nicht mehr in der Mitte des Shapes befindet, was man leicht feststellt, wenn man eine Verbindungslinie zieht.
Die Frage war: Wie bekommt man die Gruppe verkleinert?
Die Lösung: Man schiebt das „Nummernshape“ in das große Shape.
Anschließend legt man ein weiteres Shape auf die Gruppe, das man „zur Gruppe hinzufügt“ (Start / Anordnen / Gruppieren).
Nun kann man das „Hilfsshape“ wieder löschen und das Nummernshape zurückziehen.
Dann funktioniert das Verbinden.
Tipp: Wenn die Nummer nicht im Shape, also nicht auf der Gruppe erscheinen soll, schalten Sie beim Nummerieren die Option „Shape-Nummern ausblenden“ ein (zweite Registerkarte: „Weitere Optionen“)

Shapedaten im Shape und auf dem Zeichenblatt

Amüsant. Ein Zeichenblatt hat Shape-Daten. Wenn nun ein Shape darauf verweist, also mit
=ThePage!Prop. …
einen Bezug herstellt, dann erhält ein neues, leeres Blatt die Shapedaten, sobald das Shape hinüber kopiert wird.
Das heißt: Speichert man das Shape in einer Schablone, bekommt das Blatt die Daten. Diese können gefüllt werden. Auf dem Shape werden sie dann angezeigt.

Maßstab

Erstaunlich: Wählen Sie eine Vorlage mit einem Maßstab – beispielsweise Raumplan. Ändern Sie den Maßstab in eine „krumme Zahl“ – beispielsweise 3,75 cm entsprechen 1000 mm.
Ziehen Sie eine Bemaßungslinie aus der Schablone. Ändern Sie im Fenster „Größe und Position“ die Länge. Wahrscheinlich klappt es. Allerdings – einige Male ziehen, eintragen, ziehen – dann stimmen Länge mit angezeigter Zahl nicht mehr überein. Ein Blick ins ShapeSheet gibt Auskunft: der Fall „benutzerdefiniert“ wurde dort nicht abgefangen.

Bemaßungslinien

Gute Idee.
Heute in der Visio-Schulung fragte eine Teilnehmerin, ob man denn Bemaßungslinien an Objekte im Raum, beispielsweise Säulen, kleben können. So, dass man den Abstand zwischen den Säulen schnell ablesen kann, wenn sich die Säulen verschieben.
Die Antwort: Da Bemaßungslinien Linien – also mit Anfangs- und Endpunkt versehene Shapes sind, kann man an die anderen Objekte Verbindungspunkte setzen und daran die Linie kleben. So wandert die Linie beim verschieben der Säulen mit und zeigt den Abstand an.

Datenexport

Guten Tag Herr Martin,

ich habe mal versucht eine Kombination von Visio und Excel, wie von Ihnen aufgezeigt zu realisieren. Dabei sind noch einige Schwierigkeiten aufgetaucht:

Welche Einstellung muss vorgenommen werden damit in der Spalte Beschreibung gleiche Einträge zusammen gefasst werden?

Die Antwort:
Sie haben beim Export die Möglichkeit, im dritten Schritt zu gruppieren und in den Optionen gleiche Werte zusammenzufassen:

Texthintergrund

Gestern war ich verblüfft. Ein Teilnehmer zeigte mit das Visio-Shape, das er für eine Kühltruhe gezeichnet hatte. Als ich fragte, warum er ein weiteres Shape mit einer Beschriftung darüber legte, war die Antwort: nur so kann man den Text gut lesen.
Ich zeigte ihm, dass man in den Text (über Einfügen / Feld) die Geometrie-Breite einfügen kann (und auf zwei Nachkommastellen formatieren kann).
Und dass man den Texthintergrund weiß färben kann. So hat man nur ein Shape, das sogar dynamisch seine Breite anzeigt – man muss den Wert also nicht noch einmal eintragen. Er war zufrieden.

Führungslinien in den Vordergrund

Letzte Woche in der Visio-Schulung kam die Frage, wie man alle Führungslinien in den Vordergrund schieben kann.
Die Antwort: Markieren Sie alle Führungslinien über Start / Bearbeiten / Markieren / Nach Typ auswählen / Führungslinien.
Anschließend kann man sie in den Vordergrund holen, beispielsweise über Start / Anordnen / In den Vordergrund.

Nachbarshapes

Der Befehl
SpatialRelation
ist klasse: damit kann man überprüfen, ob ein Shape in der Nähe eines anderen liegt. Durchläuft man mit einer Schleife alle Shapes, kann man schnell die Nachbarn herausfinden.
Allerdings: ich suche die benachbarten „Regale“ zu den Spirituosen und finde drei Regale (ich suche nur nach den weißen Shapes). Was tun? Also doch ein bisschen x- und y-Rechnung:
For j = 1 To UBound(strShapeNameMitText)
If vsBlatt.Shapes(strShapeNameMitText(j)).Cells(„FillForegnd“).Result(„in“) = 1 Then
If Asc(Left(vsBlatt.Shapes(strShapeNameMitText(j)).Text, 1)) <> 63 Then
If vsBlatt.Shapes(strShapeNameMitText(i)).SpatialRelation(vsBlatt.Shapes(strShapeNameMitText(j)), dblTolerance, visSpatialIncludeHidden) > 0 Then
If CInt(vsBlatt.Shapes(strShapeNameMitText(j)).Cells(„Angle“).Result(„deg“)) = 0 Then ‚ — waagrecht
If (vsBlatt.Shapes(strShapeNameMitText(j)).Cells(„PinX“).Result(„cm“) >= vsBlatt.Shapes(strShapeNameMitText(i)).Cells(„PinX“).Result(„cm“) – _
vsBlatt.Shapes(strShapeNameMitText(i)).Cells(„Width“).Result(„cm“) / 2 And _
vsBlatt.Shapes(strShapeNameMitText(j)).Cells(„PinX“).Result(„cm“) <= vsBlatt.Shapes(strShapeNameMitText(i)).Cells(„PinX“).Result(„cm“) + _
vsBlatt.Shapes(strShapeNameMitText(i)).Cells(„Width“).Result(„cm“) / 2) Then
xlZelle.Offset(lngExcelZeile, 8).Value = vsBlatt.Shapes(strShapeNameMitText(j)).Text
xlZelle.Offset(lngExcelZeile, 9).Value = vsBlatt.Shapes(strShapeNameMitText(j)).Name
lngExcelZeile = lngExcelZeile + 1
blnRegalierung = True
End If
Else
If (vsBlatt.Shapes(strShapeNameMitText(j)).Cells(„PinY“).Result(„cm“) >= vsBlatt.Shapes(strShapeNameMitText(i)).Cells(„PinY“).Result(„cm“) – _
vsBlatt.Shapes(strShapeNameMitText(i)).Cells(„Width“).Result(„cm“) / 2 And _
vsBlatt.Shapes(strShapeNameMitText(j)).Cells(„PinY“).Result(„cm“) <= vsBlatt.Shapes(strShapeNameMitText(i)).Cells(„PinY“).Result(„cm“) + _
vsBlatt.Shapes(strShapeNameMitText(i)).Cells(„Width“).Result(„cm“) / 2) Then
xlZelle.Offset(lngExcelZeile, 8).Value = vsBlatt.Shapes(strShapeNameMitText(j)).Text
xlZelle.Offset(lngExcelZeile, 9).Value = vsBlatt.Shapes(strShapeNameMitText(j)).Name
lngExcelZeile = lngExcelZeile + 1
blnRegalierung = True
End If
End If
End If
End If
End If
Next

Shapes anordnen

Ansicht / Add-Ons / Visio-Extras / Shapes anordnen
Mit diesem Assistenten kann man schnell viele Shapes erzeugen, die im gleichen Abstand zueinander liegen. Schade, dass Visio diesen Assistenten nicht weiter entwickelt hat oder auch weiter an die Oberfläche geholt hat.