Linienmuster

Lieber Rene,

ich hoffe Dir geht es gut und Du hast nur liebe und nette Seminarteilnehmer. Bei mir ist es jetzt ein wenig ruhiger geworden, aber alles passt.
Hatte gestern und vorgestern ein Visio-Seminar bei einem Kunden mit Elektronikschaltplänen. Alles soweit gut. Sie wollen aber gerne die Verkabelung mit den Drahtfarben darstellen. Nur: einige der Drähte sind zweifarbig. Wie lassen sich Verbinder zweifarbig darstellen.
Habe es mit zwei Verbindern versucht: einer z.B. rot massiv, zweiter blau gestrichelt. Dann verliert aber nach dem Gruppieren der Verbinder seine Verbindereigenschaften. Ist so etwas überhaupt möglich?
Vielen Dank für Deine Mühe und viele Grüße
W

Linienmuster
Linienmuster

#####
Hallo W.,
[…]
Zu deiner Frage: Wenn du zwei Shapes gruppierst, hast du danach drei Shapes. Visio legt eine „Hülle“ über die beiden Shapes.  Und dieses Gruppenshape ist natürlich kein Verbinder.
Die Lösung;: du musst ein benutzerdefiniertes Linienmuster erstellen (kannst du?). Und dieses an eine/die Vorlage hängen.
Dann geht es.
Schöne Grüße
Rene

 

Zugriff auf andere Seiten per ShapeSheet

Manchmal entdecke ich Dinge erst sehr viel später.
Ich dachte, dass es nicht funktioniert, auf ein Shape zuzugreifen, das auf einem anderen Zeichenblatt liegt. Die Hilfe liefert, dass der Verweis auf das andere Shape mit
=Pages[Blattname]!Shapename!Zelle
erfolgt. Ein Versuch:
=Pages[Zeichenblatt-2]!Sheet.1!Width
scheitert. Der Grund: Man darf nicht den Namen des Zeichenblattes (hier: Zeichenblatt-2), sondern den internen Namen (Hier: Page-2) verwenden. Wie ermittelt man ihn? Mit einer Zeile Code:
MsgBox ActivePage.NameU
Und dann liefert
=Pages[Page-2]!Sheet.1!Width
oder
=Pages[Page-2]!Sheet.1!Prop.Name
ein korrektes Ergebnis.

Leitungen

Servicefläche

Lustige Sache: Ein Kunde wollte bei einem technischen Gerät eine Service Fläche haben. Also füge ich in die Gruppe eine solche schraffierte Fläche ein. Natürlich soll die Fläche in der Größe variabel sein. Also wird der Gruppe ein Kontrollelement hinzugefügt, die Ecken des Rechtecks verweisen im ShapeSheet auf dieses Kontrollelement, man schränkt die Bewegung des Kontrollelements auf eine Richtung ein und gibt ihm eine Beschriftung und „schützt“ die Gruppe: der Anwender darf nur die Gruppe auswählen – nicht die Mitgliedselemente der Gruppe.

Servicefläche
Servicefläche

Automatischer (automatisierter) Start einer Datei

Hallo Herr Martin,

zum Zweck:
Ich glaube schon, dass es für einen Nutzer ganz praktisch ist, wenn ein Programm (sei es z.B. ein Bildbetrachtungsprogramm mit unterlegten Texten u. vieles mehr) sich direkt aus der Windowsoberfläche starten lässt – und dann direkt ins Vollbild.
So sind ja nur noch die Button und die programmtechnischen Funktionen aktiv. Alles andere ist gesperrt.

Das Vollbild im Programm aufzurufen ist inzwischen mit  ‚ SendKeys „{F5}“  ‚ unproblematisch.
Der Automatikstart dagegen noch nicht.

Ein Durchstarten aus der Windowsoberfläche gelingt mir  für ein einfaches Visio-Programm  mit der im Internet gefundenen Aufrufzeile:

Private Sub Document_DocumentOpened(ByVal doc As IVDocument)
‚hier der gewünschte Programmaufruf z.B. Call Hauptprogramm
End Sub

Bei meinem komplexeren Programm startet das Programm jedoch ins Nirwana.

Können Sie mir erklären, wie dies überhaupt funktioniert? Welche Randbedingungen gibt es? Was kann falsch laufen?

####
Hallo Herr F.,

Sie dürfen den Code nicht in Modul einfügen, sondern müssen im VBA-Editor unter

ThisDocument

auf der Liste der Objekte das Objekt „Document“ auswählen. Dann erscheint das Ereignis „Open“ (weitere Ereignisse rchts oben in der Dropdownliste):

Das Ereignis "Open"
Das Ereignis „Open“

Dann klappt es (möglicherweise müssen Sie noch die Makros aktivieren oder in Vertrauensstellungscenter etwas ändern. Und: nicht vergessen: Die Datei von Typ *. vsdm“ (mit Makros) zu speichern

schöne Grüße

Rene Martin

Alle Shapes durchlaufen

Eine rekursive Funktion zu schreiben, die alle Shapes (auch die Shapes in Gruppen) auflistet, ist nicht sehr schwierig:

Private Sub BistDuGruppe(vsshape As Visio.Shape)
Dim i As Long
ReDim Preserve lngShapeID(UBound(lngShapeID) + 1) ‚ — vergrößere die Dimension
lngShapeID(UBound(lngShapeID)) = vsshape.ID
If LiegstDuAufRichtigemLayer(vsshape) = False Then
For i = 1 To vsshape.Shapes.Count
Call BistDuGruppe(vsshape.Shapes(i))
Next i
End If
End Sub

Sie wird von außen aufgerufen:

For i = 1 To vsBlatt.Shapes.Count
Call BistDuGruppe(vsBlatt.Shapes(i))
Next i

Allerdings benötige ich die X- und die Y-Position der Shapes. Dabei fällt auf, dass der Wert des Result der Zelle PosX und PosY in Relation zum übergeordneten Shape berechnet wird und nicht die Absolut-Koordinten des Zeichenblattes widergibt. Also muss man auf das „Chef“-Shape zugreifen:

Private Function WerIstBossVonGruppe(vsshape As Visio.Shape) As String
Dim vsShapeTemp As Visio.Shape
Set vsShapeTemp = vsshape

If TypeName(vsshape.Parent) = „Shape“ Then
Set vsShapeTemp = vsBlatt.Shapes(WerIstBossVonGruppe(vsShapeTemp.Parent))
End If

WerIstBossVonGruppe = vsShapeTemp.Name

End Function

Wenn ein Shape Teil einer Gruppe ist, dann liefert TypeName(vsshape.Parent) die Info „Page“.

Man kann alle Shapes mit ihrer Position auslesen.
Man kann alle Shapes mit ihrer Position auslesen.

Pfeilshape

Hallo Herr Martin,
Ich möchte ja einen dynamischen Pfeil für bspw. Sankey-Diagramme, d.h. einen Pfeil, wo ich z.B. ein Transportvolumen von 100 Einheiten und einen Pfeil mit 300 Einheiten habe, und diese dann in der jeweiligen Relation dick sind. DAs Volumen möchte ich direkt in das Textfeld des Pfeils eintragen können und eine Formel stellt den Pfeil dann in der jeweiligen Größenrelation dar.
Danke schonmla für Ihre Hilfe!
#######
Hallo Frau L.,
Sie möchten auf das Pfeilshape einen Text eingeben, so dass der Pfeil größer und kleiner wird, oder?
Dafür helfen die beiden Formeln: =EVALTEXT(TheText)/100
die am besten noch geschützt werden:
=GUARD(EVALTEXT(TheText)/100)
schöne Grüße
Rene Martin

Das Shape wird gemäß der eingegebenen Zahl größer oder kleiner.
Das Shape wird gemäß der eingegebenen Zahl größer oder kleiner.

Ostern und Eier

Bald naht Ostern – Zeit, um sich ein paar Gedanken über Eier zu machen.
Zieht man mit dem Werkzeug „Ellipse“ einen Kreis auf, kann man daraus nicht mit dem Bleistift-Werkzeug die Ellipse deformieren. Das Shapesheet verrät warum: die Ellipse wird durch eine Zeile definiert. Möchte man jedoch ein ei-ähnliches Objekt erhalten, so muss man sich anders behelfen. Beispielsweise mit vier Bögen. Zwei davon werden größer gezogen und mit den anderen beiden verbunden.

ei20150327_1

ei20150327_2 ei20150327_3

Verknüpfungen

Hallo Herr Martin,
ich habe mich für die Variante entschieden mit einem Hintergrundblatt, auf dem Rahmen und Schriftfeld liegen zu arbeiten und dies als Vorlage mit dem dazugehörigen Shapes meinen Kollegen zu Verfügung zu stellen. Ich würde dann an den entsprechenden Stellen ein Textfeld einfügen, in dem die Daten eingeben werden können. Halten Sie dies für eine geeignete Variante oder gibt es da bessere?
Viele Grüße
NR.
Hallo Herr R.,
ich habe nun eine Weile geknobelt und einiges versucht.
ich würde es folgendermaßen lösen:
Legen Sie Ihren Block auf das Zeichenblatt. Fügen Sie den Zeichenblatt über das ShapeSheet Daten hinzu. Fügen Sie dem Zeichenblatt ein Kontextmenü hinzu (beispielsweise „Eigenschaften“). Verknüpfen Sie die Daten des Zeichenblattes mit den Feldern. Schützen Sie den Block (entweder über Entwicklertools oder über die Layer).
Nun kann der Anwender leicht über das Kontextmenü die Infos eintragen (ich habe mal zwei gebaut).
Warum habe ich den Block nicht auf das Hintergrundblatt gelegt? Ich habe lange probiert. Aber ich vermute, dass Visio – obwohl es in der Hilfe so steht – keine Verknüpfung von einem Blatt auf ein anderes herstellen kann.
Schöne Grüße
Rene Martin

shapesheet03

Verbindungspunkt

Sehr geehrter Herr Martin,
ich war im Januar bei Ihnen mit meinen Kollegen bei dem Visio Seminar.
Nun ärgert mich Visio gerade wieder mal; aber seit her komme ich mit Visio gut klar und mag es sogar sehr arbeite auch gerne damit. Mehr als meine Netzwerkpläne mache ich aber nicht….
Nun habe ich ein Problem was ich nicht mehr weiß:
Ich habe immer wieder bei Shapes das Problem das die Verbinder sich an den blauen Punkten anheften wollen die mir aber nicht in den Kram passen da die Linien sonst nicht gerade sind. Dies sind Shapes von Visio wie gerade das Patchpanel oder Cisco Geräte.
Nun suche ich die Möglichkeit wie diese blauen Punkte zu löschen bzw neu zu setzen sind.
Bin ich zu doof gerade?
Ich bitte um eine kurze Anleitung dazu.
Vielen Dank
Mit freundlichen Grüßen
RG
Hallo Herr G.,
Aktivieren Sie über die Registerkarte „Start“ (in Visio 2010) das Werkzeug „Verbindungspunkt“. Damit können Sie einen bereits gesetzten Verbindungspunkt markieren, verschieben und löschen. Um einen neuen hinzuzufügen, müssen Sie die [Strg]-Taste gedrückt halten.
Sie finden es in meinem Handbuch beschrieben auf S. 113
schöne Grüße
Rene Martin

verbindungspunkt03

Benutzer

Hallo Herr Martin,
lange ist es her dass wir Kontakt hatten. Sie haben damals bei uns in Frankfurt eine Visio Schulung gemacht.
Jetzt habe ich hier ein kleines Problem mit dem ich nicht weiter komme. Ich habe schon in Ihren Büchern nachgeschaut und auch im Internet gesucht.
Wir wollen auf einer Visio Zeichnung beim Drucken das aktuelle Datum und den User auf dem Ausdruck mit drauf haben. Das Druck Datum ist kein Problem, DOCLASTPRINT().
Ich finde aber keine Möglichkeit den Windows User anzeigen zu lassen.
Geht das in Visio nicht oder finde ich nur den Syntax nicht?
Viele Grüße,
AK.
Hallo Herr K.,
Sie können die Eigenschaften, die unter Datei / Informationen in der aktuellen Datei hinterlegt sind, im ShapeSheet mit der Funktion CREATOR() auslesen und dann so über Einfügen / Feld anzeigen lassen.
Den Windows-Benutzernamen können Sie m.W. nicht direkt herholen – ich benötige ihn manchmal und erzeuge ihn dann per Programmierung:
Environ(„username“)
schreibe ihn irgendwo rein oder überprüfe ihn mit einer Einstellung.
schöne Grüße
Rene Martin

benutzer