Mittwoch, 16. Dezember 2009

VBA Code konforportabel versionieren mit Bazaar: Von hinten durch die Brust ins Auge

Erster Post, na denn ...

Overtüre

Als Werkstudent eines erfolgreichen deutschen Multifastillionen-Konzerns merkt man schnell: Der Kitt in den Fugen heisst Excel *fanfarentirilli*

Man merkt anschliessend an der ständig wachsenden Schlange interessierter Kollegen dass jegliche Fähigkeiten die über das aufzeichnen von Makros hinausgehen heissbegehrt sind. Anfangs macht das zusammenhacken von Makros ja auch noch Spass und die Wünsche sind meist recht schnell erfüllt (Wobei man der Paarung von "VBA" und "Spass" natürlich immer Skeptisch gegenüberstehen sollte). Da wird dann das kleine Angebots-Makro von gestern schnell zum Universal Offer Tool Framework V5.6

Spätestens hier hört der Spass auf, denn dafür war VBA nie gedacht (Wobei die Paarung von "VBA" und "Denken" ... ach wie müßig). Man reisst sich also am Riemen und fängt erst mal an hie und da Kommentare einzustreuen und alles mehr oder weniger sinnvoll zu ordnen. Dabei kann man mit 100%iger Sicherheit sagen dass irgendwas in die Binsen geht. Wie gut dass man ja immer "n Backup macht" (Sprich: Klick auf XLS, Strg + C, Strg + V, Umbenennen).

Machen wirs kurz: Nach dem Urlaub hat man keinen blassen Schimmer mehr welches Backup welchen Stand der Dinge wiederspiegelt und man nimmt sich fest vor: "Ab jetzt wird versioniert!".

Versionierungssoftware

Ich will jetzt keinen Glaubenskrieg entfachen denn ich suche mir meine Werkzeuge nach folgendem einfachen Prinzip aus: "Check ich? Ja! Funzt? Ja! Kost was? Nö! Geilo!"

Aus der Uni kenne ich SVN was meine o.g. Prinzipien voll erfüllt. Das Problem ist dass ich wahrscheinlich erst mit Charly nach Candymountain reisen muss bin bis ich von der IT nen SVN Server aufgesetzt bekomme. Ausserdem kann ich mir kein TortoiseSVN installieren weil ich keine Adminrechte habe (Messer, Gabel, Schere, Root tut dem Werksstudent nicht gut) Aber halt, gab es da nicht sowas wie ...

Bazaar + PortablePython = Geilo²

Bazaar ist ein verteiltes Versionierungssystem. Soweit so unklar. Das tolle ist, dass es lokal d.h. ohne dedizierten Server verwendet werden kann: Ohne Installation! Wow! Aber man kann seinen Branch (working copy) auch mit anderen teilen, abgleichen, mergen, zentral ablegen, verteilt bearbeiten ... Alles kann nichts muss ... super, kein Plan! Gut dass Bazaar eine super Dokumentation hat mit dem selbst meine ungeduldige Wenigkeit zurecht kommt (Guter Einstieg: Bazaar in five minutes).

Nach kurzer Lektüre fand ich folgendes toll:
  1. Ich muss nix installieren
  2. Ich kann sofort lokal losversionieren (commit)
  3. Ich kann auf Arbeit die Änderungen auf ein zentrales Repository (Auf nem popeligen Windows Share) "pushen", zur Sicherheit falls meine Kiste mal abraucht.
  4. Der Kommandozeilenclient ist einfach zu bedienen
  5. Eine GUI ist aber gleich dabei (Bazaar Explorer) *freu*

Kleine Hürde: Ich brauch dazu Python weil Bazaar darauf basiert. Gut dass es sein einiger Zeit Portable Python gibt. Portable Python ist für mich was das Bowie-Messer für Crocodile Dundee ist: Die Allzweckwaffe! Ohne Admin-Rechte scripten bis der Arzt kommt!

21. Jahrhundert: Ich komme! Wäre da nicht noch ein klitzekleines Problem ...

XLS Dateien sind binär: Doh!

Warum nur !? Jetzt kann ich zwar frühere Versionen wiederherstellen aber ich hab keine Ahnung was geändert wurde, da der VBA code natürlich nicht im Klartext in den XLS Dateien liegt sondern brav ver10t wurde. Es gibt zwar Plugins für Bazaar mit denen man Änderungen im Dokument (Sprich in den Zellen) darstellen kann, die kümmern sich aber nicht um den code!

Da hilft nur eins: Ärmel hochkrempeln und selber was programmieren! Aber mehr dazu im nachsten Post.