Ein Scherz!
Ein Visio-Beispiel zur Vorlage „Blockdiagramm mit Perspektive“ (fast ein Dalí … na ja …)
Autor: Rene_Martin
Banken
Mitarbeiter
Fotos
Kommentare und QuickInfos
Hallo Herr Dr. Martin,
mein Kunde hat es geschafft.
Darf ich noch kurz eine andere Frage loswerden? Ein anderer Kunde von mir möchte gerne wissen, wie man diese gelben Post Its hinbekommt (Siehe Anhang). War schon fleißig unterwegs, aber komme nicht drauf.
Danke für die Erlösung.
Viele Grüße aus Köln
J. C.
###############
Hallo Herr C.,
In meinem Visio-2007-Buch beschreibe ich Kommentare und QuickInfos ab Seite 139. Achtung: das was in Excel ein Kommentar ist, heißt in Visio „QuickInfo“ ;-(
schöne Grüße
Rene Martin
VBA
Hallo Zusammen!
Ich arbeite zur Zeit an der Generierung eines Cross-Functional-Charts mit VBA & Visual Studio 2010.
Ich bin mittlerweile soweit, dass ich aus einer Excel-Tabelle meine Pages und die dazugehörigen Swimlanes erstellen kann.
Nun möchte ich Prozess-Shapes in die Swimlanes legen, habe aber noch keine Lösung dazu gefunden.
habe es schon mit der ContainerProperties.AddMember Methode versucht. Die Shapes werden zwar den richtigen Swimlanes zugeordnet, werden aber nicht im Swimlane sondern daneben und übereinander positioniert.
Hat vielleicht jemand eine IDee/Code-Beispiele/Link-Tipps, um diesem Problem Herr zu werden?
Außerdem würde ich mich über ein paar Link-Tipps zum Thema Visio-Koordinatensystem und die Positionierung von Shapes interessieren.
Ich verstehe nicht, was es mit den einheitenlosen Angaben beim Drop-befehl auf sich hat.
Wo positioniert Visio ein Shape wenn ich folgenden Befehl eingebe?
Page.Drop(master, 2.5, 4.5)
Millimeter-Angaben können es ja nicht sein, wenn ich sie nicht explizit angebe.
Ich danke im Voraus schon mal für jede Hilfe und wünsche allen einen angenehmen Tag.
Viele Grüße
B.
###############
Hallo Herr B.,
Sie sollten in Visio immer die Maßeinheit dazu schreiben. Leider verwendet er häufig cm, manchmal allerdings inch.
Der Befehl
ActivePage.Drop(mastObj, 2, 3.5)
positioniert das Shape – genauer: den Pin des Shapes (meistens Mitte/Mitte – steht im ShapeSheet) an die x-Position 2 inch und die y-Position 3,5 inch – IMMER gemessen von der linken unteren Ecke des Zeichenblattes. Das Shape können und sollten Sie danach dorthin platzieren, wo Sie es haben wollen.
Beispiel:
Sub Shape_Aus_Schablone02()
Dim stnObj As Document
Dim mastObj As Master
Dim shpObj As Shape
If SchabloneOffen(„BASFLO_M.vss“) = False Then
Documents.OpenEx „BASFLO_M.VSS“, visOpenDocked
End If
If GibtEsMastershape(„BASFLO_M.VSS“, „Start/Ende“) = False Then
MsgBox „Das Shape „“Start/Ende““ existiert nicht.“
Exit Sub
End If
Set stnObj = _
Documents(„BASFLO_M.VSS“)
Set mastObj = stnObj.Masters(„Start/Ende“)
Set shpObj = ActivePage.Drop(mastObj, 2, 3.5)
shpObj.Cells(„PinX“).Result(visMillimeters) = 100
shpObj.Cells(„PinY“).Result(visMillimeters) = 60
shpObj.Text = „Ich bin der Terminator!“
End Sub
Function SchabloneOffen(Schablonenname As String) As Boolean
Dim stnObj As Document
Dim blnOffen As Boolean
blnOffen = False
For Each stnObj In Application.Documents
If Schablonenname = stnObj.Name Then
blnOffen = True
Exit For
End If
Next
SchabloneOffen = blnOffen
End Function
Function GibtEsMastershape(Schablonenname As String, _
Mastershapename As String) As Boolean
Dim stnObj As Document
Dim blnVohanden As Boolean
Dim mastObj As Master
blnVohanden = False
Set stnObj = Application.Documents(Schablonenname)
For Each mastObj In stnObj.Masters
If mastObj.Name = Mastershapename Then
blnVohanden = True
Exit For
End If
Next
GibtEsMastershape = blnVohanden
End Function
oder hier noch zwei Beispiele zum exakten Platzieren:
Sub ZellWerteSchreiben01()
Dim shpRechteck As Shape
Set shpRechteck = ActivePage.DrawRectangle(0, 0, 0, 0)
With shpRechteck
.Cells(„Width“).Result(„mm“) = 40
.Cells(„Height“).Result(„mm“) = 20
.Cells(„Angle“).Result(visDegrees) = 0
.Cells(„PinX“).Result(visMillimeters) = 100
.Cells(„PinY“).Result(visMillimeters) = 60
End With
End Sub
Sub ZellWerteSchreiben02()
Dim shpRechteck As Shape
Set shpRechteck = ActivePage.DrawRectangle(0, 0, 0, 0)
With shpRechteck
.Cells(„Width“).Result(„mm“) = 40
.Cells(„Height“).Result(„mm“) = 20
.Cells(„LocPinX“).Formula = „=Width*0.75“
.Cells(„LocPinY“).Formula = „=Height*0.75“
.Cells(„Angle“).Result(visDegrees) = 0
.Cells(„PinX“).Result(visMillimeters) = 100
.Cells(„PinY“).Result(visMillimeters) = 60
End With
End Sub
Auf meiner Seite visio-training.de finden Sie unter Beispiele / Programmierung einige Beispiele zum exakten Positionieren: Autorennen, Papierfabrik, Viertaktmotor
viel Spaß mit Visio wünscht Ihnen
Rene Martin
VBA
Guten Abend,
Ich habe da ein kleines Problem mit Visio und VBA und hoffe, dass mir jemand weiter helfen kann.
Mein selbst erstelltes Shape besteht aus 5 Textfeldern, die untereinander liegen. Quasi eine Tabelle mit 5 Zeilen und 1 Spalte. Ich schaffe es, auf das Shape per VBA zuzugreifen und den Text des Shapes zu manipulieren, jedoch gelingt mir das nicht mit den einzelnen Textfeldern.
Jedem Textfeld habe ich einen Namen vergeben, um nicht unbedingt über die ID darauf zugreifen zu müssen.
Leider hat das nicht geklappt.
Über Tipps oder Links zu hilfreichen Seiten würde ich mich sehr freuen und bedanke mich im Voraus für die Mühe.
Viele Grüße
###############
Hallo Herr B.,
ich vermute, Sie haben die Shapes gruppiert. Angenommen, die Gruppe heißt „Gruppe“ (in Visio 2010 kann ich dies in der Registerkarte „Entwicklertools“ Shape-Name einstellen – bis Visio 2007 in „Format / Objektdaten“. Angenommen die Shapes heißen T1, T2, … T5
Sie greifen auf die Shapes immer über die Hierarchie zu, also beispielsweiseweise folgendermaßen:
Sub TexteSchreiben()
Dim i As Integer
For i = 1 To 5
ActivePage.Shapes(„Gruppe“).Shapes(„T“ & i).Text = „Hallo ich bin es!“
Next
End Sub
Oder einzeln:
Sub MehrTexteSchreiben()
Dim vsDok As Document
Dim vsSeite As Page
Dim vsGruppe As Shape
Dim vsKasten As Shape
Set vsDok = ActiveDocument
Set vsSeite = vsDok.Pages(„Zeichenblatt-1“)
Set vsGruppe = vsSeite.Shapes(„Gruppe“)
Set vsKasten = vsGruppe.Shapes(„T1“)
vsKasten.Text = „ich bin der erste“
Set vsKasten = vsGruppe.Shapes(„T2“)
vsKasten.Text = „und ich der zweite“
Set vsKasten = vsGruppe.Shapes(„T3“)
vsKasten.Text = „und ich der dritte“
‚ […]
End Sub
Übrigens: kennen Sie mein Visio-Programmierbuch?
Microsoft Visio 2010-Programmierung: Visio 2010 effizient anpassen und erweitern [Gebundene Ausgabe]
schöne Grüße
Rene Martin