Reihenfolge der Shape-Daten

Interessant.
Die Reihenfolge der Shape-Daten eines Visio-Shapes kann nicht geändert werden.
Um die angezeigte Reihenfolge zu ändern, müssen Sie einen Sortierschlüssel eingeben.
So wird aus der ursprünglichen Reihenfolge
Anschaffungsdatum-Preis-Standort-Verantwortlicher
wenn Sie die Werte 400-300-200-100 eingeben:
Verantwortlicher-Standort-Preis-Anschaffungsdatum.
Ändert man nun den Wert von „Standort“ auf „50“, erscheint der Standort nicht an erster Stelle, wie erwartet, sondern an letzter Stelle.
Der Grund: der Sortierschlüssel wird alphanumerisch gelesen (also von links nach rechts) und nicht numerisch (der Größe nach).
Die Lösung:
Tragen Sie 050 ein – dann steht der Standort an erster Stelle.

Daten

Sehr geehrter Herr Martin,

ich benötige Ihre Hilfe.

Mein Ziel wäre es über eine Excel (Standardflussdiagramm – Datenschnellansicht…) in Visio ein fertiges Flussdiagramm zu bekommen und wenn sich im Prozess etwas ändert möchte ich die über Excel aktualisierten.

Ist dies sooo einfach abzuwickeln? Wenn ja was benötige ich an Software und was kostet mich Ihre Unterstützung.

Vielen Dank schon mal im Voraus.
#####
Hallo Herr W.,

SO geht das leider nicht.
Sie können in Visio eine Zeichnung (bspw. ein Flussdiagramm) erstellen und dann, wenn Sie Visio Professional (!) haben (mit der Standard-Version klappt das nicht!) eine Excel-Tabelle an die Zeichnung binden und per Drag & Drop die Excel-Datensätze mit den Shapes verbinden. Ändern sich die daten, können Sie die Daten in der Zeichnung aktualisieren.

Was Sie programmieren müssen: generiere per Knopfdruck eine Zeichnung. Kann man programmieren – ist aber sehr aufwändig!

Hilft Ihnen das?

schöne Grüße

Rene Martin

Diagramm aktualisieren

Bald beginnt die Fußballweltmeisterschaft in Russland. Das Land bereitet sich darauf vor.
Ich habe das Diagramm vor vier Jahren in Visio erstellt. Habe die mir damals bekannten Daten und Ort in eine Visio-Zeichnung eingetragen. Heute stelle ich fest, dass die Zahlen nicht mehr korrekt sind – ebenso sind einige Austragungsstätten verschwunden; andere hinzugekommen. Nun – kein Problem – die Zahlen werden korrigiert; einige Shapes gelöscht; das Diagramm aktualisiert – und schon ist das Diagramm mit den korrekten Zahlen fertig.

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.

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:

Dynamische Daten

Heute in der Visio-Schulung haben wir diskutiert, wie man an mehreren Stellen Texte ändern kann.
Ich habe zwei Dinge vorgeschlagen:
* Man kann im ShapeSheet des Zeichenblattes Daten hinterlegen. Diese Daten können von den Daten eines Shapes über
=TheDoc!Prop.Datenname
„geholt“ werden. Und dieses Datenfel kann über Einfügen / Feld in den Text des Shapes eingefügt werden.
* Man kann eine Datenquelle (eine Excel-Mappe) an die Zeichnung hängen. Dann ein Datensatz mit dem Shape verbinden. Die Datengrafik ausschalten. Und die Daten über Einfügen / Feld im Shape anzeigen lassen.
Wir haben lange beide Varianten diskutiert.
Sie haben sich für die letztere entschieden.

Verknüpfte Shapedaten

Sehr geehrter Herr Martin,
 
habe mir von Ihnen „Visio 2013/2016 anpassen: das Handbuch für Entwickler“ und das Video „Visio 2010 Programmierung“ gekauft und es hat mit schon sehr viel weitergeholfen.
Für eine bestimmte Sache kann ich aber keine Lösung finden und ich hoffe Sie können mir „auf dem kurzen Dienstweg“ weiterhelfen.
 
In mein Visio Dokument habe ich Shapes mit externe Daten „verheiratet“.
Wenn der Datensatz sich ändert kann es vorkommen, dass der Shape keine Verbindung zu ein Datensatz mehr hat. Soweit so gut.
Wie kann ich erkennen, dass ein Shape keine Verbindung zum Datensatz mehr hat?
Im Shapesheet finde ich keinen entsprechenden Parameter.
 
Mit ItemFromID oder LinkToData komme ich nicht weiter.
In den zwei Bildern sehen Sie was ich meine.
Zu dem einen Shape besteht eine Datenverknüpfung, zu dem anderen nicht.
Ich möchte die Shapes z.B. Rot umranden die keine Verknüpfung mehr haben.
20170216Daten0120170216Daten02
#####
Hallo Herr L.,
 
bitte verzeihen Sie – ich war geschäftlich unterwegs, habe eine Menge Arbeit auf dem Schreibtisch – da ist Ihre Mail nach unten gerutscht …
 
Ich habe mal nachgeschaut – man findet wirklich keinen Eintrag im ShapeSheet, der darauf hinweist, dass ein Shape mit einem Datensatz verknüpft ist oder nicht.
Das heißt: ich würde das Pferd umgekehrt aufzäumen:
Legen Sie in Ihrer DB-Tabelle eine Hilfsspalte an, die bei jedem Datensatz den gleichen Wert aufweist (aktuelles Datum?).
Verknüpfen Sie die Datenquelle mit der Zeichnung und mit den Shapes.
Ändern Sie den Wert in der Hilfsspalte für alle Daten.
Die Shapes, die nun den neuen Wert haben, sind verknüpft.
 
Sorry – aber etwas anderes fällt mir (im Moment) auch nicht ein.

Zahlen sortieren

Hallo Rene,

erst einmal sorry für die späte Rückmeldung, ich war im Urlaub. Das Problem mit den Verbindern habe ich mittlerweile gelöst. Jetzt hab ich aber ein weiteres Probelm allerdings diesmal mit Excel.

Ich schreibe Daten aus Visio per VBA Makro nach Excel. In Excel werden die Daten dann aufsteigend nach einer Positionsnummer sortiert. Allerdings hat Excel mit der Sortierung der Positionsnummer einige Probleme. Wenn die Nummern beispielsweise 1, 2, 3, ,4 usw lauten läuft alles gut – bei Zahlen wie 1.1, 1.2, 1.3, …. 1.9 klappt auch noch die Sortierung einwandfrei.

Sobald ich aber Nummern ab 1.10 oder 2.11 benutze wird die Sortierung nicht mehr eingehalten. Es sieht dann beispielsweise wie folgt aus :

1.1
1.10
1.11
1.12
1.2
….

Ich möchte allerdings folgende Sortierung:

1.1
1.2
1.3

1.10
1.11

Hast du eine Idee wie ich das anstellen kann ? Hab im Internet schon etwas gegoogelt allerdings finde ich leider keine Lösung dazu. Achja die Nummern werden als Text behandelt.

Liebe Grüße

Stephan
##########

Hallo Stephan,

Excel unterscheidet bei fast allen Dingen zwischen Text und Zahl: rechnen, Zahlenformat, Dateneingabe, filtern, … und eben auch beim Sortieren. 1.1 und 1.10 wird als Text erkannt und eben wie Text sortiert: Anton < Berta < Cäsar < Dora …

Würde Excel die Zahlen als Zahlen erkennen, würde er ein Datum daraus machen:

01. Januar

01. Januar 2001

und so weiter

Die einzige Lösung, die ich sehe: Gib die Daten in der Form 01.01, 01.02., … 01.10, 01.11, … 01.20, 01.21 … ein. Dann produziert die Textsortierung keine Probleme.

Übrigens: das Gleiche Problem hast Du auch bei Dateinamen, wenn Deine Kamera Bilder mit Dateinamen pic1, pic2, … pic10, pic11, … speichert. Dann gilt: pic1 < pic10 < pic11 < pic2 …

Liebe Grüße

Rene

grafik27

Daten in Visio

Hallo Herr Dr. Martin,
ich hätte nochmal ein paar spezielle Fragen zu Visio.
Ich kann über VBA auf die Shape-Daten meiner Shapes auf dem Zeichenblatt zugreifen … ABER … Wie kann ich auf Shape-Daten von Schablonen über VBA zugreifen?
Und: Gibt es eine Möglichkeit die Shape-Daten eines Shapes auf einen Schlag komplett zu löschen?
Z.Zt. kann ich immer nur die einzelnen Elemente löschen aber nicht alle auf einmal.
###
Hallo Herr S.,
* Sie müssen auf alle offenen Dokumente in Visio zugreifen, überprüfen, ob es sich dabei um eine Schablone handelt, die Mastershapes auslesen und von ihnen die Daten auslesen.
 
*ich würde nicht auf die Shape-Datensätze zugreifen. Erstes weiß ich nicht, wo Visio diese abspeichert, zweites ist es mir zu unsicher und drittens vermute ich einen Bug darin (das an anderer Stelle). Ich würde auf Abschnitt und Zeilen der Shapes per Schleife zugreifen.
 
* Sie können den Abschnitt visSectionProp löschen – aber dann zickt er manchmal – oder besser: jede Zeile dieses Abschnittes.
Spitzer20151123
Beispielsweise so:
Public Sub cmdDaten1(ByRef control As IRibbonControl)
Dim strDateien As String
Dim strSchablonen As String
Dim vsSchablone() As Document
Dim strMaster() As String
Dim vsMastershape As Master
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim m As Integer
Dim strSpapeDatenzeile As String
ReDim vsSchablone(0)
For i = 1 To Application.Documents.Count
‚ — durchlaufe alle offenen Dokumente
strDateien = strDateien & Application.Documents(i).Name & vbCr
If Application.Documents(i).Type = visTypeStencil Then
‚ — wenn du eine Schablone bist
ReDim Preserve vsSchablone(UBound(vsSchablone) + 1)
strSchablonen = strSchablonen & Application.Documents(i).Name & vbCr
Set vsSchablone(UBound(vsSchablone)) = Application.Documents(i)
End If
Next i
MsgBox „Liste der offenen Dateien:“ & vbCr & strDateien
MsgBox „Liste der offenen Schablonen:“ & vbCr & strSchablonen
For j = 1 To UBound(vsSchablone)
vsSchablone(j).Masters.GetNames strMaster
‚ — alle Mastershapes der Schablone
MsgBox „Liste der Mastershapes der Schablone “ & vsSchablone(j) & vbCr & Join(strMaster, vbCr)
For k = 0 To UBound(strMaster)
Set vsMastershape = Application.Documents(vsSchablone(j).Name).Masters(strMaster(k))
strSpapeDatenzeile = „“
If vsMastershape.Shapes(1).SectionExists(visSectionProp, False) = True Then
‚ — wenn Shapedaten im Mastershape vorhanden sind.
For m = 0 To vsMastershape.Shapes(1).Section(visSectionProp).Count – 1
strSpapeDatenzeile = strSpapeDatenzeile & vsMastershape.Shapes(1).Section(visSectionProp).Row(m).Cell(0).Name & vbCr
‚###############
‚ Cell(0): Value
‚ Cell(1): Prompt
‚ Cell(2): Label
‚ Cell(3): Format
‚ Cell(4): SortKey
‚ Cell(5): Type
‚ Cell(6): Invisible
‚ Cell(7): Verify
‚ Cell(8): DateLinked
‚###############
Next
MsgBox „Mastershape „““ & vsMastershape.Name & „““ hat folgende Daten:“ & vbCr & strSpapeDatenzeile
End If
Next
Next
End Sub
 
 
 
 
Public Sub cmdDaten3(ByRef control As IRibbonControl)
Dim i As Integer
If ActiveWindow.Selection.Count = 0 Then
MsgBox „Sie haben kein Shape ausgewählt!“
ElseIf ActiveWindow.Selection.Count > 1 Then
MsgBox „Bitte markieren Sie nur ein Shape!“
Else
For i = ActiveWindow.Selection(1).Section(visSectionProp).Count – 1 To 0 Step -1
ActiveWindow.Selection(1).DeleteRow visSectionProp, i
Next
MsgBox „Alle Zeilen der Shape-Daten wurden gelöscht!“
 
End If
 
End Sub
 
Public Sub cmdDaten2(ByRef control As IRibbonControl)
If ActiveWindow.Selection.Count = 0 Then
MsgBox „Sie haben kein Shape ausgewählt!“
ElseIf ActiveWindow.Selection.Count > 1 Then
MsgBox „Bitte markieren Sie nur ein Shape!“
Else
If ActiveWindow.Selection(1).SectionExists(visSectionProp, False) = True Then
ActiveWindow.Selection(1).DeleteSection visSectionProp
MsgBox „Abschnitt „“Shape-Daten““ wurde gelöscht!“
End If
End If
End Sub
 
 
 
 
 

Daten visualisieren

Hübsche Sache, die wir gestern in der Visio-Schulung besprochen haben:
In einer Exceltabelle stehen Daten, die in Visio dargestellt werden sollen. Damit die Daten nicht ein zweites Mal abgeschrieben werden müssen habe ich vorgeschlagen die Tabelle über Daten / Benutzerdefinierter Import an die Zeichnung zu binden.
Auf eine Linie und auf ein Kästchen wird ein Datensatz gezogen. Dadurch erhält das Shape diese Informationen als Daten. Damit sie angezeigt werden, editiert man den Text ([F2]) und fügt das Datenfeld ein (Einfügen / Feld). Der Verbinder und das Kästchen können in einer Schablone gespeichert werden (zuvor sollte man die Verknüpfung der Datentabelle zu kappen). Damit die Linienstärke entsprechend der Größe der Daten angepasst wird, wird im ShapeSheet im Abschnitt „LineFormat“ in der Zelle „LineWeight“ eine Formel eingetragen, beispielsweise so:
=IF(Prop._VisDM_Einnahmen_Finanz>1000000,10 mm,
IF(Prop._VisDM_Einnahmen_Finanz>100000,5 mm,
IF(Prop._VisDM_Einnahmen_Finanz>10000,3 mm,
IF(Prop._VisDM_Einnahmen_Finanz>1000,2 mm,1 mm))))
Die Linienstärke nimmt Bezug auf das Datenfeld.
Unglücklicherweise zeigt Excel die Daten ein zweites Mal über eine Datengrafik auf dem Shape an. Da das nicht gewünscht ist, muss man in dieser Datengrafik die Felder löschen.
Und nun können die Datensätze auf das Diagramm gezogen werden.
Die Darstellung der Daten
Die Darstellung der Daten