Gestern begann in München das 181 Oktoberfest. Ich mache mich auf die Suche nach einem Maßkrug für Visio und werde auf der Seite
http://www.visguy.com/
fündig, wo auch noch viele andere Visio-Shapes zum Download bereit stehen. Über das Kontextmenü kann man übrigens den Schaum ein- und ausblenden.
Übrigens: Während in München zirka 7.000.000 Liter Bier getrunken (eigentlich nur verkauft – ich bin nicht sicher, ob alle Maßkrüge einen Liter Bier enthalten und ob sie bis zum Ende getrunken werden), benötigen diese 3.200 Shapes mehr als 5 MByte Speicherplatz.
Man kann auch per Programmierung Bierkrüge erzeugen.
Dazu wird das Shape in einer Schablone abgespeichert. Das Mastershape trägt den Namen „Maßkrug“, die Schablone heißt „Bier“.
Um per Programmierung den Maßkrug auf das Zeichenblatt zu ziehen, benötigt man folgende Codezeilen:
Sub EinBier()
Dim vsSchablone As Document
Dim vsMaster As Master
Set vsSchablone = Application.Documents(„Bier.vssx“)
Set vsMaster = vsSchablone.Masters(„Maßkrug“)
ActivePage.Drop vsMaster, 1, 5
End Sub
Zur Erklärung:
das Objekt vsSchablone verweist auf die Schablone, das Objekt vsMaster auf das darin befindliche Mastershape. Die Methode Drop, angewandt auf die Seite, „zieht“ das Mastershape auf das Blatt. Es wird an den Positionen X = 1 und Y = 5 platziert. Die Einheiten dieser Koordinaten in Inch.
Zugegeben: Man müsste noch überprüfen, ob das Mastershape in der Schablone vorhanden ist, bzw. ob die Schablone überhaupt offen ist.
Übrigens: auf dem Oktoberfest verteilen zirka 1.600 Kellnerinnen und Kellner Bier. Hoffentlich lassen sie es nicht fallen!
Ein Shape alleine ist witzlos. Man kann mit einer Schleife mehrere Shapes erzeugen. Damit die Shapes zufällig auf der Seite angeordnet werden, verwende ich die Funktion Rnd. Sie liefert eine Zahl zwischen 0 und 1. Diese Zahl wird mit der Seitenbreite und Seitenhöhe multipliziert:
Sub VieleBiere()
Dim i As Long
Dim vsSchablone As Document
Dim vsMaster As Master
Dim vsShape As Shape
Dim dblX As Double
Dim dblY As Double
Set vsSchablone = Application.Documents(„Bier.vssx“)
Set vsMaster = vsSchablone.Masters(„Maßkrug“)
Randomize
For i = 1 To ANZAHLBIERE
dblX = Rnd * ActivePage.PageSheet.Cells(„PageWidth“).Result(„in“)
dblY = Rnd * ActivePage.PageSheet.Cells(„PageHeight“).Result(„in“)
Set vsShape = ActivePage.Drop(vsMaster, dblX, dblY)
Next
End Sub
Übrigens: Auch in diesem Jahr werden zirka sieben Millionen Besucher auf dem Oktoberfest erwartet, von denen die meisten Bier trinken werden.
Wenn man die Konstante erhöht, beispielsweise auf 2.000, also folgendermaßen, dann sieht die Zeichnung beispielsweise wie folgt aus.
Übrigens nennt Manfred Schauer, der das älteste Geschäft auf dem Oktoberfest betreibt – das Schichtl – das Oktoberfest schlicht „Intersuff“.
Bei den Shapes steht die Höhe im Verhältnis zur Breite. In der Zelle Width befindet sich die Formel:
=BOUND(25.4 mm,0,0,Height*4/3,Height*1000)
Deshalb kann man die Größe zufällig berechnen lassen, indem man folgende Codezeilen einfügt:
dblGröße = Rnd * 10
Set vsShape = ActivePage.Drop(vsMaster, dblX, dblY)
vsShape.Cells(„Height“).Result(„in“) = vsShape.Cells(„Height“).Result(„in“) * dblGröße
Das Ergebnis bei ANZAHLBIERE As Long = 200 sieht man im Screenshot.
Übrigens: Für die nötigen Bedürfnisse der Besucher des Oktoberfestes stehen rund 1800 Klosetts und Urinale zur Verfügung.
Natürlich sollte man die Shapes löschen. Das kann man mit einer Schleife oder schneller mit dem Befehl:
ActiveWindow.SelectAll
ActiveWindow.Selection.Delete
Dann kann man das Programm erneut starten lassen.
Übrigens: Die Augustiner Brauerei verwendet als einzige noch die traditionellen Holzfässer, die so genannten Hirschen, zur Lagerung des Bieres.
dblWinkel = Rnd * 360
vsShape.Cells(„Angle“).Result(„deg“) = dblWinkel
Führt man den Befehl aus, wird der Bildschirm erst nach Beendigung des Makros aktualisiert.
Mit dem Befehl DoEvents kann man sich die einzelnen Schritte des Makros anzeigen lassen, während es läuft.
Übrigens: Speziell für das Münchner Oktoberfest wird von den Münchner Brauereien ein eigenes Bier (Wiesn-Mätzn) mit mehr Stammwürze und somit auch mehr Alkoholgehalt gebraut.