wbTag Dokumentation

Information & Dokumentation zum VBA Makro wbTag

Inhalt

wbTag – Generelle Funktionsweise

wbTag Variablen

wbTag Funktionen

wbTag Call

wbTag_installer – Generelle Funktionsweise

wbTag – Generelle Funktionsweise

In einem sequentiellen Ablauf ist die Funktionsweise von wbTag straight forward.

  1. Performt der Arbeitsmappen-Nutzer ein Excel-Event (Speichern, SheetChange, Öffnen, Neues Sheet) wird die funktion des wbTags unter Übergabe des Event-Type Parameters über eine Call Funktion gestartet.
  2. Die wbTag-Funktion erstellt ein Array mit Informationen zum Event und zum User. Dazu zählen z.B. das aktive Sheet, ein Timestamp, Betriebssystem des Nutzers.
  3. Das wbTag ruft dann die Datenbank-Handler Funktion und übergibt das generierte Array an die Funktion.
  4. Der Datenbank-Handler schreibt die Informationen in das vorher definierte _wbtagDB-Sheet in die jeweils nächste leere Zeile und kreiert so eine Art Mini-Datenbank.
  5. Die Mini-Datenbank kann als Pivot oder Datenquelle zu Analyse-Zwecken verwendet werden.

wbTag Variablen

Weil für die _wbtagDB eine Reihe von Dimensionen und Metriken benötigt werden, gibt es innerhalb des Moduls eine Reihe Variablen, die hier aufgeführt werden.

VariableTypeBeschreibung
CountIntegerKonstante Variable, die für jeden Datensatz 1 ist und somit SUM() Funktionen in der Analyse ermöglicht.
dataLineArray / VariantArray, das alle Tracking-Dimensionen und -Metriken sammelt, um sie an die Database-Funktion zu übergeben.
datasetArray / VariantParameter der wbTag2Database() Funktion. Wird im Fall von wbTag mit dem dataLine-Array gefüllt.
datasetLengthIntegerHilfsvariable zur Bestimmung der Anzahl der dataLine Array Items. Beendet den Loop beim Schreiben des Datenbank-Items.
eventTypeStringDimension, die den Typ eines getrackten Events beinhaltet. Enthält save, open, pageview, newpage.
eventsIntegerMetrik, die den Wert 0 oder 1 pro Event hat. Wird = 1, wenn der EventType = „event“.
iIntegerHilfsvariable für den Loop, der das dataLine Array in die _wbtagDB schreibt.
ID String Versucht eine einzigartige ID für jedes Event zu erheben, um ANZAHL() Funktionen in der Analyse zu enablen. Setzt sich zusammen aus dem Timestamp im Format „YYYYMMDDhhmmss“ und dem ersten Buchstaben des eventType.
lastRowIntegerHilfsvariable, die die letzte Reihe im _wbtagDB Sheet definiert, um die nächste beschreibbare Zeile daraus abzuleiten.
nextRowInteger Hilfsvariable, die die nächste Reihe im _wbtagDB Sheet basierend auf der letzten nicht-leeren Reihe definiert, um darin weitere Zeilen schreiben.
opensIntegerMetrik, die für den eventType = „open“ die Anzahl 1 annimmt. Erlaubt mehr-dimensionale Auswertungen in Pivot.
OSStringVariable für das Betriebssystem des Nutzers. Wird aus der VBA-Funktion Application.OperatingSystem bezogen.
pageAddIntegerMetrik, die für den eventType = „pageAdd“ die Anzahl 1 annimmt. Erlaubt mehr-dimensionale Auswertungen in Pivot.
pageviewsIntegerMetrik, die für den eventType = „pageview“ die Anzahl 1 annimmt. Erlaubt mehr-dimensionale Auswertungen in Pivot.
savesIntegerMetrik, die für den eventType = „save“ die Anzahl 1 annimmt. Erlaubt mehr-dimensionale Auswertungen in Pivot.
TimestampDateMetrik zur Definition des Event-Zeitpunktes. Wird im Format „YYYYMMDDhhmmss“ mit Uhrzeit übergeben.
TheNowDateVariable zur einmaligen Erhebung der aktuellen Uhrzeit zum Event-Zeitpunkt. Wird zur Kalkulation des Timestamps und der ID verwendet.
thisWorkbookWorkbookWorkbook-Variable zur einmaligen Generierung des aktuell geöffneten Workbooks. Wird verwendet zur Bestimmung der URL / Sheetname Variable.
URLStringVariable zur Bestimmung des zum Event-Zeitpunkt aktiven Arbeitsblattes. Es wird ein Slash „/“ als Prefix verwendet, um es einer Webapplikaiton ähnlicher zu machen. Außerdem werden Leerzeichen in Sheet-Namen mit Bindestrichen ersetzt.
UserString Variable für den System-Nutzernamen des Nutzers. Wird aus der VBA-Funktion Application.UserName bezogen. Nutzernamen sind nicht immer Klarnamen, sondern können auch Gerätebezeichnungen oder Domainnamen sein.
wbtagDBWorksheetWorksheet-Variable, die den Pfad des _wbtagDB-Sheet für weitere Funktionen vorhält.

wbTag Funktionen

Das wbTag-Modul hat vier Kern-Funktionen, die innerhalb des Subs erledigt werden.

  1. Erhebung der Event- und Nutzer-Variablen
  2. Kalkulation der Eventtype basierten Metriken zur Erweiterung der Pivot-Analyse-Funktionalität
  3. Paketierung der Kennzahlen als Array
  4. Einfügen des Datasets in die Mini-Datenbank mithilfe der wbTag2Database Funktion

Erhebung der Event- und Nutzer-Variablen

'Define variables to be used
    eventType = usageType
    Timestamp = Format(TheNow, "DD.MM.YYYY hh:mm:ss")
    Url = "/" & Replace(ActiveSheet.Name, " ", "-")
    ID = Format(TheNow, "YYYYMMDDhhmmss") & Left(eventType, 1)
    Count = 1
    User = Application.UserName
    OS = Application.OperatingSystem

Kalkulation der Eventtype basierten Metriken zur Erweiterung der Pivot-Analyse-Funktionalität

'Calculate numeric / sum values for datamodel / I hate Pivot Tables
    If eventType = "pageview" Then pageviews = 1
    If eventType = "event" Then events = 1
    If eventType = "open" Then opens = 1
    If eventType = "save" Then saves = 1
    If eventType = "newpage" Then pageAdd = 1

Paketierung der Kennzahlen als Array

'Bundle the acquired information in an array
    dataLine = Array(ID, Timestamp, eventType, Url, Count, User, OS, pageviews, events, opens, saves, pageAdd)

Einfügen des Datasets in die Mini-Datenbank mithilfe der wbTag2Database Funktion

'print dataset to last row in wbTagDB table
    For i = 0 To datasetLength
        wbTagDB.Cells(nextRow, i + 1).Value = dataset(i)
    Next i

wbTag Call

Das Tracking-Pixel des wbTag Moduls ist ein einfacher „Call“ eines Subs in Excel VBA. Wichtig ist, dass der Call innerhalb eines Built-In-Events in Excel eingefügt wird. So beginnt, das Private Sub Workbook_SheetActivate(ByVal Sh As Object) z.B. an zu arbeiten, wenn der Nutzer das Sheet wechselt.

Wichtig innerhalb des Call ist, dass ein String mit einem beliebigen Event-Type als Parameter hinterlegt wird.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Call workbookTag("pageview")
End Sub
' Beispiel des pageview-Calls für den Wechsel eines Sheets innerhalb einer Arbeitsmappe

wbTag_installer – Generelle Funktionsweise

Das Installer-Modul von wbTag funktioniert wie folgt:

  1. Der Nutzer startet das Sub aus dem VBA-Editor.
  2. Das Skript prüft alle Tabellenblätter der Arbeitsmappe, ob ein Sheet mit dem Namen „_wbtagDB“ vorhanden ist.
  3. Ist noch kein Sheet vorhanden wird ein neues Sheet mit dem Namen „_wbtagDB“ erstellt.
  4. Dann wird die erste Zeile des neuen Sheets mit den Default Dimensionen befüllt und die erste Zeile zudem visuell angepasst, um sich von den Datensätzen abzuhaben.
  5. Der Nutzer erhält eine Meldung über die erfolgreiche Installation.
  6. Sollte bereits ein Sheet mit dem Namen „_wbtagDB“ vorhanden sein, wird der Installer abgebrochen.
  7. Der Nutzer erhält dann eine Meldung über den Abbruch und das Vorhandensein des Arbeitsblattes.

wbTag_installer – Variablen

Die folgenden Variablen werden im wbTag_installer Modul verwendet:

VariableTypeBeschreibung
addedDBWorksheetSheet-Objekt, das als Variable zum Einfügen und Benennen des _wbtagDB-Sheets verwendet wird und als Referenz zum Einfügen der Headline und dem Umstyling verwendet wird.
HeadlinesArray / VariantArray, das alle Spalten-Überschriften des _wbtagDB-Sheets als Default-Werte beinhaltet.
HeadlinesLengthIntegerLänge des Headlines-Arrays, zur Beendigung des Loops, der die Überschriften in das _wbtagDB-Sheet einfügt.
iIntegerHilfsvariable für den Loop, der die Überschriften in das _wbtagDB-Sheet einfügt.
installedBooleanStatus-Variable, die protokolliert, ob das_wbTagDB-Sheet bereits vorhanden ist. Entscheidet somit über Fortgang oder Abbruch des Installationsprozesses. Default-Wert: False. Vor der Initiierung der Prüfung.
installerObsoleteStringText, der in der MsgBox angezeigt wird, wenn die Installation nicht durchgeführt wurde, weil das Worksheet „_wbtagDB“ bereits in der Arbeitsmappe vorhanden ist.
installerSuccessStringText, der in der MsgBox nach einer erfolgreichen Installation von wbTag angezeigt wird.
pagesheetWorksheetHilfsvariable zur Erstellung eines Sheet-Elements im For-Each-Loop.
sheetCountIntegerHilfsvariable, die den Loop zur Prüfung auf Vorhandensein des _wbtagDB-Sheets beendet.
thisWorkbookWorkbookWorkbook-Variable zur einmaligen Generierung des aktuell geöffneten Workbooks. Wird verwendet zur Erstellung des neuen Datenbank-Sheets und Katagolisierung aller Sheets im Workbook.

wbTag_installer – Funktionen

Die Kern-Funktionen innerhalb des wbTag_installer Moduls sind

  • Die Prüfung auf Vorhandensein des _wbtagDB-Sheets in der aktuellen Arbeitsmappe
  • Das Hinzufügen des _wbtagDB-Sheets und die Vorbelegung bzw. farbliche Anpassung
  • Die Rückmeldungen an den Nutzer nach Beendidung des Installationsassistenten

Prüfung auf Vorhandensein des _wbtagDB-Sheets in der aktuellen Arbeitsmappe

Loope durch jedes Sheet in der Arbeitsmappe. Wenn _wbtagDB bereits vorhanden ist, beende die Installation.

'loop through each sheet to see wether there is a _wbTagDB sheet
    For Each pageSheet In thisWorkbook.Worksheets
                
        'if the sheet is althisready there set installed to true and prompt the user
        If pageSheet.Name = "_wbTagDB" Then
            installed = True
            MsgBox installerObsolete
            
            'Exit installer if DB-sheet is already present
            Exit Sub
        End If
                
    Next pageSheet

Hinzufügen, Schreiben und Stylen des _wbtagDB-Sheet

Füge eine Sheet mit dem Namen wbtagDB am Ende des Workbooks ein, belege die erste Tabellenzeile mit Spaltenüberschriften und mache die erste Zeile optisch unterschiedlich zu den anderen (Bold, Backgroung = grey).

'if the check reveals that there is no _wbTagDB sheet ad it an pre-fill the column headlines
    If installed = False Then
        Set addedDB = thisWorkbook.Sheets.Add(, thisWorkbook.Sheets(sheetCount))
        addedDB.Name = "_wbTagDB"
        addedDB.Cells(1, 1).EntireRow.Font.Bold = True
        addedDB.Cells(1, 1).EntireRow.Interior.ColorIndex = 15
        
        For i = 0 To HeadlinesLength
            addedDB.Cells(1, i + 1).Value = Headlines(i)
        Next i
        
        'Prompt user for end of installation.
        MsgBox installerSuccess
    
    End If

Die Rückmeldungen an den Nutzer nach Beendidung des Installationsassistenten

Es gibt Outcomes für das Ende des Installers.

Sag dem Nutzer die Installation war erfolgreich und ist nun abgeschlossen.

'Prompt user for end of installation.
        MsgBox installerSuccess

Sag dem Nutzer die Installation wurde beendet, weil sie nicht erforderlich war.

'Prompt user for end of installation.
        MsgBox installerSuccess