Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1884to1888
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro/Modul Überwachung

Makro/Modul Überwachung
09.06.2022 12:27:57
Mike
Hallo zusammen,
lässt sich ein Makro oder das gesamte Modul auf Änderungen prüfen und somit überwachen?
Also wenn zum Beispiel eine Zeile im Programmcode verändert, gelöscht etc. wird, soll eine Aktion ausgeführt werden.
Ich könnte mir vorstellen das mit einem Workbook_BeforeSave eine entsprechende Prüfung angestoßen wird.
Lässt sich sowas überschaubar realisieren? Und wenn ja wie?
Gruß
Mike

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro/Modul Überwachung
09.06.2022 12:54:06
Fennek
Hallo,
es sollte gehen:
Den hash des VBProjects.bin berechnen und speichern. Für eine Kontrolle erneut berechnen.
Als Beispiel wie das gehen könnte (Powershell)

if ($zip.Entries[$i].name -eq 'sheet1.xml') {
$isht = $zip.Entries[$i]
$stream = $isht.Open()
$reader = New-Object IO.StreamReader($stream)
[string]$Sht = $reader.ReadToEnd()
$stringAsStream = [System.IO.MemoryStream]::new()
$writer = [System.IO.StreamWriter]::new($stringAsStream)
$writer.write($Sht)
$writer.Flush()
$stringAsStream.Position = 0
$Hsh = (Get-FileHash -Algorithm MD5 -InputStream $stringAsStream | Select-Object Hash)
[xml]$Sheet = $reader.ReadToEnd()
$reader.Close()
$stream.Close()
Anstelle "sheets(1)" müsste das VBProject.bin übergeben werden.
Die Frage könnte etwas ungewöhnlich sein und deswegen keine Codes auf Lager geben.
mfg
Anzeige
AW: Makro/Modul Überwachung
09.06.2022 13:55:29
Mike
Hallo Fennek,
Danke für deinen Vorschlag. Das scheint mir ein durchaus professioneller Ansatz zu sein.
Der Ansatz von Nepumuk sieht mir dagegen so genial einfach aus das ich diesen wohl zu erst testen werde.
Gruß
Mike
AW: Makro/Modul Überwachung
09.06.2022 13:18:16
Nepumuk
Hallo Mike,
das VBA-Projekt digital signieren. Wird am Code etwas geändert, verfällt das Zertifikat. Das kannst du einfach abfragen:

If ThisWorkbook.VBASigned Then
"Alles OK"
Gruß
Nepumuk
AW: immer True
09.06.2022 13:48:15
Fennek
Hallo Nepumuk,
der Vorschlag sieht so genial aus, das musste ich gleich einmal mit dem eingebauten Zertifikat testen.
Leider war auch nach Änderungen im Code "Debug. Print ThisWorkbook.VBASigned = true"
Was habe ich falsch gemacht?
mfg
Anzeige
AW: immer True
09.06.2022 13:53:26
Mike
Hallo Fennek,
ich glaube es liegt daran:
Wenn Code in einem signierten Makroprojekt in irgendeiner Weise geändert wird, wird seine digitale Signatur entfernt. Wenn Sie jedoch über das gültige digitale Zertifikat verfügen, das zuvor zum Signieren des Projekts auf Ihrem Computer verwendet wurde, wird das Makroprojekt beim Speichern automatisch erneut signiert.
Gruß
Mike
AW: immer True
09.06.2022 13:57:48
Nepumuk
Hallo Mike,
ich habe meine Zertifikate mit einem Kennwort geschützt. Wer das nicht hat tut sich schwer das Projekt mit meinem Zertifikat neu zu signieren.
Gruß
Nepumuk
AW: immer True
09.06.2022 13:54:05
Nepumuk
Hallo Fennek,
dann speichere erst mal.
Gruß
Nepumuk
Anzeige
AW: hier mein Beispiel
09.06.2022 14:38:05
Fennek
Hallo,

Die Datei https://www.herber.de/bbs/user/153490.xlsm wurde aus Datenschutzgründen gelöscht


in dieser Datei gab es zuerst nur eine Zeile in Sub T_1, dann (nach speichern und neu öffnen) eine zweite Zeile. Trotzdem war .VBAsigned immer noch war.
Möchte es jemand testen?
mfg
AW: hier mein Beispiel
09.06.2022 14:53:30
Nepumuk
Hallo Fennek,
beim 1. Test gibt mir die T_2 True zurück. Nachdem ich in T_1 etwas geändert und gespeichert habe (dort musste ich bestätigen, dass die Signatur verworfen wird), gibt mir T_2 False zurück. Also genau wie geplant.
Ich habe deine Mappe neu signiert, teste selbst mal damit: https://www.herber.de/bbs/user/153491.xlsm
Gruß
Nepumuk
Anzeige
AW: hier mein Beispiel
09.06.2022 15:06:45
Fennek
Hallo,
ja, der Schutz wirkt nur bei fremden Dateien, nicht wenn der Besitzen Änderungen vornimmt.
mfg
PS: ein Lob an Microsoft, ich habe es fast nicht geschafft, VBA zu aktivieren. Es ging nur nachdem im Trustcenter "Alle Makros zulassen" gewählt war. Mit meiner normalen Einstell "Mit Benachrichtigung deaktivieren" ging nicht, auch nach Bestätigigung in den Eigenschaften im Explorer
AW: hier mein Beispiel
09.06.2022 15:13:45
Nepumuk
Hallo Fennek,
ja, ging mir auch so, da deine Signatur bei mir als nicht vertrauenswürdig eingestuft wird.
Gruß
Nepumuk

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige