Anonymisierungsscripte

Excel VBA-Skript zur Anonymisierung von Daten


Dieses VBA-Skript für Microsoft Excel ermöglicht die einfache Anonymisierung sensibler Daten in Tabellen. Der Benutzer wählt eine Spalte sowie Start- und Endzeile aus und bestimmt das gewünschte Format (Text, Datum, Währung oder Zahl). Anschließend ersetzt das Skript die vorhandenen Werte durch zufällig generierte Inhalte im gewählten Format – ideal für Schulungsdaten, Testumgebungen oder Datenschutzkonzepte. Der Code ist vollständig dokumentiert und sofort einsatzbereit.

Ablauf des Skriptes

Vorbereitung

Das Script unter Entwicklertools, VBA-Skript einfügen

Ablauf in Excel – am Beispiel dieser Tabelle:

Nun das Skript über Makros aufrufen:

Nun die Spaltenadresse eingeben, in unseren Beispiel nehmen wir den Namen also Spalte B

Als nächstes die Startzeile eingeben um Überschriften nicht zu verändern. Wir beginnen bei der Zeile 2

Mit der Endzeile wird die letzte zu bearbeitende Zeile eingegeben. In unseren Beispiel nehmen wir nur die ersten 5 Einträge, also Zeile 7.

Als letzte Eingabe wird das Format gewählt, in unseren Beispiel Text

Die gelb markierten Werte wurden nun anonymisiert.

Prompt um das Skript selbst zu erzeugen

Erstelle ein VBA-Skript für Excel, das die Anonymisierung von Daten unterstützt. Die Funktionsweise soll wie folgt sein:

Der Benutzer wird interaktiv aufgefordert, folgende Informationen einzugeben:

Den Buchstaben der Spalte, in der anonymisiert werden soll.

Die Startzeile und Endzeile für den zu anonymisierenden Bereich.

Das gewünschte Datenformat für die Ersetzung:

Text: Zufällige Zeichenfolgen

Datum: Zufällige Datumswerte im realistischen Bereich

Währung: Zufällige Geldbeträge mit zwei Dezimalstellen

Zahlen: Zufällige Ganzzahlen

Das Skript ersetzt anschließend in der gewählten Spalte und im definierten Zeilenbereich die Originalwerte durch entsprechend formatierte Zufallswerte, die dem gewählten Datentyp entsprechen.

Bitte schreibe sauberen, kommentierten VBA-Code, der robust und benutzerfreundlich ist.

VBA-Skript

Hinweis: Der Einsatz dieses Skriptes erfolgt auf eigene Gefahr!

' --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
' Datum 15.05.2025 | BKS | www.experte.org
' --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
' AnonymisiereSpalteMitZufallswerten
' --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
' Diese Funktion anonymisiert Daten in einer angegebenen Spalte, indem sie von der Start- bis zur Endzeile Zufallswerte einträgt. Das Format (Text, Datum, Währung oder Zahl) wird vom Benutzer gewählt.
' --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
' Parameter 
' --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
' spaltenAdresse    | String        | 3           | Adresse der zu anonymisierenden Spalte (z. B. "B")
' startZeile        | Long          | 10          | Erste Zeile des Datenbereichs
' endZeile          | Long          | 10          | Letzte Zeile des Datenbereichs
' formatTyp         | String        | 10          | Gewähltes Format für Zufallswerte ("Text", "Datum", "Waehrung", "Zahl")
' --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
' Variablen 
' --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
' i                 | Long          | 10          | Zählvariable für die Schleife
' zufallsText       | String        | 20          | Zufälliger generierter Text
' zufallsZahl       | Double        | 15          | Zufällig generierte Zahl
' zufallsDatum      | Date          | 10          | Zufällig generiertes Datum
' --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
' Versionsverlauf
' --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
' 15.05.2025 | Version 1 | Scripterstellung
' --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Sub AnonymisiereSpalteMitZufallswerten()

    Dim spaltenAdresse As String
    Dim startZeile As Long
    Dim endZeile As Long
    Dim formatTyp As String
    Dim i As Long
    Dim zufallsText As String
    Dim zufallsZahl As Double
    Dim zufallsDatum As Date
    
    ' Eingaben vom Benutzer einholen
    spaltenAdresse = InputBox("Geben Sie die Spaltenadresse ein (z.B. B):", "Spalte eingeben")
    startZeile = CLng(InputBox("Geben Sie die Startzeile ein:", "Startzeile"))
    endZeile = CLng(InputBox("Geben Sie die Endzeile ein:", "Endzeile"))
    formatTyp = InputBox("Geben Sie das gewünschte Format ein (Text, Datum, Waehrung, Zahl):", "Formatwahl")
    
    ' Schleife durch die Zellen
    For i = startZeile To endZeile
        Select Case LCase(formatTyp)
            Case "text"
                zufallsText = Chr(65 + Int(Rnd() * 26)) & Chr(65 + Int(Rnd() * 26)) & CStr(Int(Rnd() * 1000))
                Cells(i, spaltenAdresse).Value = zufallsText
            Case "datum"
                zufallsDatum = DateSerial(2000 + Int(Rnd() * 25), 1 + Int(Rnd() * 12), 1 + Int(Rnd() * 28))
                Cells(i, spaltenAdresse).Value = zufallsDatum
                Cells(i, spaltenAdresse).NumberFormat = "DD.MM.YYYY"
            Case "waehrung"
                zufallsZahl = Round(Rnd() * 10000, 2)
                Cells(i, spaltenAdresse).Value = zufallsZahl
                Cells(i, spaltenAdresse).NumberFormat = "#,##0.00 €"
            Case "zahl"
                zufallsZahl = Int(Rnd() * 10000)
                Cells(i, spaltenAdresse).Value = zufallsZahl
            Case Else
                MsgBox "Unbekanntes Format. Bitte verwenden Sie: Text, Datum, Waehrung oder Zahl.", vbCritical
                Exit Sub
        End Select
    Next i

    MsgBox "Anonymisierung abgeschlossen!", vbInformation

End Sub