VBA – die besten Beiträge

Bashskript Problem?

Ich habe hier ein Bashskript, welches Dateien überwacht (noch nicht vollständig und absolut unoptimiert). Ich weiß, dass es Tools gibt, aber es ist ein Projekt für die Uni und deshalb ist Optimierung und Effizienz nicht wirklich wichtig. Ich möchte damit die Grundlagen des Shellscriptings einfach etwas lernen.

Das ist bisher das Script:

#!/bin/bash


echo "Das Skript wurde gestartet. Der Typ Ihres Betriebssystem ist "\"$OSTYPE\""."


# If-Abfrage, die das Betriebssystem erkennt und den Pfad zum überwachten Ordner oder Datei festlegt # HIER BITTE DIE PFADE ZUM ZU ÜBERWACHENDEN ORDNER EINTRAGEN   
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
    BASE_DIRECTORY=" " # Übergibt dem überwachten Ordner eine Variable, wenn Betriebssystem = Linux
elif [[ "$OSTYPE" == "darwin"* ]]; then
    BASE_DIRECTORY="/Users/name/Library/CloudStorage/GoogleDrive-email@gmail.com/Meine Ablage/Uni/TestOrdner" # Übergibt dem überwachten Ordner eine Variable, wenn Betriebssystem = MacOs
elif [[ "$OSTYPE" == "win32" || "$OSTYPE" == "msys" || "$OSTYPE" == "cygwin" ]]; then
    BASE_DIRECTORY="/g/Meine Ablage/Uni/TestOrdner" # Übergibt dem überwachten Ordner eine Variable, wenn Betriebssystem = Windows
else    
    echo "Das Betriebssystem ist unbekannt." # Wenn das Betriebssystem unbekannt ist, wird eine Fehlermeldung ausgegeben
    exit 1
fi


DIRECTORY="$BASE_DIRECTORY" # Pfad zum Ordner
FILE="$BASE_DIRECTORY/Datei.txt" # Pfad zur Datei   
FILE2="$BASE_DIRECTORY/Datei2.txt" # Pfad zur Datei2 


cd "$BASE_DIRECTORY" || {
    echo "Wechsel zu $BASE_DIRECTORY fehlgeschlagen!" # Wechselt in den TestOrdner oder gibt eine Fehlermeldung aus
    exit 1;
}



# Funktion, um zu überprüfen, ob Dateien gelöscht wurden
checkIfDeleted() {
    if [ ! -f "$FILE" ]; then 
        echo "Die Datei \"$(basename "$FILE")\" wurde gelöscht, umbenannt oder verschoben."
    elif [ ! -f "$FILE2" ]; then
        echo "Die Datei \"$(basename "$FILE2")\" wurde gelöscht, umbenannt oder verschoben."
    elif [ ! -d "$DIRECTORY" ]; then
        echo "Der Ordner \"$(basename "$DIRECTORY")\" wurde gelöscht, umbenannt oder verschoben."
    fi
}


# Speichert den "ursprünglichen" Hash-Wert der Dateien
ORIGINAL_HASH=$(md5 -q "$FILE")
ORIGINAL_HASH2=$(md5 -q "$FILE2")


checkIfEdited() {
    if [ ! -f "$FILE" ]; then # Wenn $FILE nicht existiert, dann wird das Skript hier beendet
    return
    fi


    if [ ! -f "$FILE2" ]; then # Wenn $FILE2 nicht existiert, dann wird das Skript hier beendet
    return
    fi


    if [ ! -d "$DIRECTORY" ]; then # Wenn $DIRECTORY nicht existiert, dann wird das Skript hier beendet
    return
    fi


    # Berechnet den aktuellen Hash-Wert der Dateien
    CURRENT_HASH=$(md5 -q "$FILE")
    CURRENT_HASH2=$(md5 -q "$FILE2")


    # Hash-Werte werden verglichen
    if [ "$CURRENT_HASH" != "$ORIGINAL_HASH" ]; then
        echo "Die Datei \"$(basename "$FILE")\" wurde bearbeitet."
        # Ursprünglicher Hash-Wert wird für zukünftige Überprüfungen aktualisiert
        ORIGINAL_HASH="$CURRENT_HASH"
    elif [ "$CURRENT_HASH2" != "$ORIGINAL_HASH2" ]; then
        echo "Die Datei \"$(basename "$FILE2")\" wurde bearbeitet."
        # Ursprünglicher Hash-Wert wird für zukünftige Überprüfungen aktualisiert
        ORIGINAL_HASH2="$CURRENT_HASH2"
    fi
}


while true; do # Endlosschleife, die die Funktionen "checkIfDeleted" und "checkIfEdited" alle 10 Sekunden ausführt
    checkIfDeleted
    checkIfEdited
    sleep 10
done

Ja, ich weiß, welche Probleme das Skript mit sich bringt, aber ich habe ein anderes Problem:

Wenn jemand das Skript nutzen möchte, muss er die Pfade seiner Dateien einfügen und sogar neue Variablen definieren.

Man könnte das doch so machen, dass das Skript die Liste des Ordners einliest und dann auf alle Dateien direkt zugreifen muss, ohne dass man sie in das Skript einfügen muss.

Also irgendwie mit dem Befehl "ls". Ich weiß aber nicht, wie ich das implementieren soll.

Kann mir wer helfen bitte?

Visual Basic, Linux, HTML, Webseite, VBA, Bash, Batch, cmd, Code, lua, MySQL, PHP, Programmiersprache, Python, Script, Python 3

Sicherheitsrisiko von Office-Makros im Privaten- vs. Unternehmensumfeld

Die Sicherheit von Makros ist vor allem im Unternehmensumfeld stark umstritten bzw. das Risiko hinter der Nutzung eindeutig und klar. Trotz der unterschiedlichen Methoden wie Passwörter oder Signaturen verzichten viele Unternehmen komplett auf Makros und sperren diese komplett, z.B. via Policies.

Persönlich ist Office bzw. Makros einfach zu bequem und vorteilhaft: Office ist ein weit verbreitetes Tool, zukunftssicherer Support, keine zusätzliche Installation von Software etc. ... Da bösartige Makros oft bereits den Schadcode enthalten und im Rahmen von Phishing oder aus dem Internet in Unternehmen gelangen und Schaden anrichten, frage ich mich wie es mit der Sicherheit dem Einsatz im persönlichen Gebrauch aussieht.

Meiner Meinung nach sind Makros hauptsächlich im Unternehmensumfeld sicherheitskritisch und auch meistens nur dann, wenn diese von nicht-vertrauenswürdigen Quellen (z.B. dem Internet) stammen. Im persönlichen Gebrauch (inkl. Absicherungen wie Passwörter und Signaturen) sehe ich kein großes Sicherheitsproblem die Makros wegen allgemeinen Umstrittenheit komplett zu meiden. Wie seht ihr das?

Zu folgenden Fragen (im privaten Gebrauch) bin ich Froh um eure Meinungen und Input:

  • Kann ich mich mit einem Makro-Passwort gut absichern oder sind diese mittlerweile zu leicht zu knacken?
  • Reicht eine Signatur von Markos aus?
  • Welche weiteren Einstellungen kann ich vornehmen, wenn ich Makros sicher einsetzen möchte?
  • Sehr komplexes und fortgeschrittenes Szenario: Gibt es die Gefahr, dass ich mir Schadsoftware herunterlade welche bereits vorhandene (gutartige) Makros auf meinem PC erkennt und diese dann so manipuliert dass diese Schadcode ausführen können? Ist das realistisch?
Microsoft Excel, Microsoft Office, Makro, VBA

Ich verzweifle: Ich versuche seit Stunden in Notion einen Fortschrittskreis (Progress Circle) zu machen, der sich automatisch aus einer Datenbank aktualisiert?

Ich möchte in Notion auf meinem Dashboard einen echten Fortschrittskreis (Progress Circle / Donut-Chart), der automatisch den Fortschritt meines Zielgewichts zeigt – also wie viel % ich von meinem Ziel (zunehmen oder abnehmen) bereits geschafft habe.

Ich habe bereits eine Tabelle erstellt mit:

  • Start Weight
  • Goal Weight
  • Current Weight
  • eine berechnete Spalte Progress (%)
  • und Remaining (%)

Was ich will:

  • Ich möchte, dass dieser Fortschritt in einem einzigen Kreischart (Donut Chart) dargestellt wird
  • Der Kreis soll live anzeigen, wie weit ich bin (z. B. 72 % gefüllt)
  • Das Ganze soll automatisch aktualisiert werden, wenn ich mein Gewicht ändere

Was ich NICHT will:

  • Ich will keinen statischen Kreis, bei dem ich manuell Prozentwerte eintrage
  • Ich will keinen Balken, keine Emoji-Lösung
  • Auch Tools wie ChartBase und Common Ninja haben nicht funktioniert:
  • Notions eingebauter Donut-Chart funktioniert nur für Verteilungen, nicht für echte Progress Circles (soweit ich weiß, funktioniert der Donut Chart nur über eine einzige Spalte, aber ich habe ja mehrere Spalten, einmal Progress und einmal Remaining)
  • Synced Blocks, Relations, Rollups, get(), Formeln – alles ausprobiert, funktioniert auch nicht
Internet, Microsoft, Microsoft Excel, Technik, Microsoft Office, VBA, Datenbank, Formel, Planung, Produktivität, Tabellenkalkulation, Datenbankabfrage, Datenbanksystem, Excel-Formel, Office 365, Notion, Datenbankmodell

Meistgelesene Beiträge zum Thema VBA