Office: (Office 2007) Checksum auf bestimmte bereiche in einem Sheet

Helfe beim Thema Checksum auf bestimmte bereiche in einem Sheet in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Forum. Ich habe ein sehr kompliziertes Anliegen, ich hoffe ihr könnt mir weiterhelfen. Ich habe ein Spreadsheet mit mehreren Worksheets. In... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Xebtria, 10. Mai 2017.

  1. Checksum auf bestimmte bereiche in einem Sheet


    Hallo Forum. Ich habe ein sehr kompliziertes Anliegen, ich hoffe ihr könnt mir weiterhelfen.

    Ich habe ein Spreadsheet mit mehreren Worksheets.

    In manchen Worksheets sind nur Berechnungen mit sehr komplizierten Formeln (auch über mehrere Worksheets hinweg), in anderen Worksheets sind Bereiche zur Eingabe von Werten.

    Ich möchte sicherstellen, dass niemand an dem Sheet etwas ändert. Ich werde hierfür natürlich Zellen sperren und auch das Sheet selbst nochmal mit Passwort versehen.

    Theoretisch kann es sein, dass jemand der das Passwort weiß, die Zellen entsperrt, etwas an den Formeln ändert, und dann wieder sperrt, um es so aussehen zu lassen, als wäre es von Anfang an so gewesen.

    Um dem entgegenzuwirken, war die Idee eine Checksum auf das Sheet zu generieren, allerdings ist die Checksum wertlos, sobald in den Eingabebbereichen Werte drin stehen.

    Es besteht also die Frage, ob ich (vielleicht auch innerhalb von Excel) Checksums nur auf bestimmte Bereiche (die Zellen mit den Formeln) generieren kann? Dann könnte man auch wenn das Sheet ausgefüllt ist, auf den "Formelbereich" eine Checksum generieren und diese mit einer vorher anderweitig gespeicherten Checksum vergleichen, und somit sicherstellen, dass die Formeln unverändert sind.

    Ist so etwas in irgendeiner Form möglich? Ich bin offen für Vorschläge *Smilie

    Danke!
    Xebtria

    :)
     
    Xebtria, 10. Mai 2017
    #1
  2. Hallo,

    man kann für alle Zellen, die Formeln enthalten eine Checksumme (z. B. MD5) berechnen und in eine externe Datei schreiben bzw die geschriebenen Werte vergleichen.

    Infos z.B. zur MD5-Berechnung: Cryptography articles and software

    Auswählen von Zellen, die nur Formeln enthalten geht mit Specialcells: https://msdn.microsoft.com/en-us/lib.../ff196157.aspx

    Mit For ... Each kann man die Zellen dann "abklappern", den Hashwert auf .Formula der Zelle berechnen, mit .Address die Adresse der Zelle auslesen um das ganze dann in eine Tablle zu schreiben.
     
    Der Steuerfuzzi, 11. Mai 2017
    #2
  3. Hi!

    Danke. Ich nehme an, das geht dann per VBA.... kannst du mir vielleicht ein
    Beispielcode zusammenschreiben mit dem das für sagen wir mal 2 worksheets mir die Zellen mit formeln ausliest und in ein weiteres sheet schreibt?

    Ich bin leider nicht wirklich bewandert in VBA, aber wenn ich einen solchen "Beispielcode" hätte, würde ich mir schon zutrauen, das an mein Sheet anzupassen.

    Vielen Dank trotzdem schon mal, immerhin gut zu wissen dass es eine Möglichkeit gibt, wenn auch vermutlich über umwege.

    Gruß
    Xeb
     
    Xebtria, 11. Mai 2017
    #3
  4. Checksum auf bestimmte bereiche in einem Sheet

    Hallo,

    der folgende Code erstellt ein "User-Defined-Function", die genauso wie die von xl bereitgestellten Funktionen (z.B. =Summe(A1:A10)) genutzt werden kann.


    PHP:
             Public Function BASE64SHA1(ByVal sTextToHash As String)

    Dim asc As Object
    Dim enc 
    As Object
    Dim TextToHash
    () As Byte
    Dim SharedSecretKey
    () As Byte
    Dim bytes
    () As Byte
    Const cutoff As Integer 5

    Set asc 
    CreateObject("System.Text.UTF8Encoding")
    Set enc CreateObject("System.Security.Cryptography.HMACSHA1") .SHA512 / .SHA512Managed /.SHA256 / .SHA256Managed

    TextToHash 
    asc.GetBytes_4(sTextToHash)
    SharedSecretKey asc.GetBytes_4(sTextToHash)
    enc.Key SharedSecretKey

    bytes 
    enc.ComputeHash_2((TextToHash))
    BASE64SHA1 EncodeBase64(bytes)
    BASE64SHA1 Left(BASE64SHA1cutoff)

    Set asc Nothing
    Set enc 
    Nothing

    End 
    Function

    Private Function 
    EncodeBase64(ByRef arrData() As Byte) As String

    Dim objXML 
    As Object
    Dim objNode 
    As Object

    Set objXML 
    CreateObject("MSXML2.DOMDocument")
    Set objNode objXML.createElement("b64")

    objNode.DataType "bin.base64"
    objNode.nodeTypedValue arrData
    EncodeBase64 
    objNode.text

    Set objNode 
    Nothing
    Set objXML 
    Nothing

    End 
    Function
     
    Fennek11, 11. Mai 2017
    #4
  5. Ein Minimalbeispiel mit SHA1:
    Diese beiden Codes in ein Modul einer Tabelle, die die Hashwerte aufnehmen soll
    Code:
    Bitte den Namen der Datei (ggf. erweitert um den Dateipfad) und des Tabellenblatts an die eigenen Bedürfnisse anpassen.
    Code:
    Wird jetzt nur ein Zeichen der Formel geändert, so entsteht ein komplett anderer Hash-Wert.
     
    Der Steuerfuzzi, 12. Mai 2017
    #5
  6. Hallo Fennek,

    Das hört sich zwar vielversprechend an, aber nach einiger Überlegung passt die Methode von Michael dann doch besser. Trotzdem danke für deine Mühen. :-)

    Hallo Michael,

    habe das Ganze mal ausprobiert, und auch wenn die Liste der Hashwerte ellenlang wird, kann ich damit was anfangen, Danke! Ich muss nur noch einige Sachen erweitern damit ich die ergebnisse weiterverwenden kann, aber grundsätzlich funktioniert es.

    Vielen Dank!
     
    Xebtria, 15. Mai 2017
    #6
Thema:

Checksum auf bestimmte bereiche in einem Sheet

Die Seite wird geladen...
  1. Checksum auf bestimmte bereiche in einem Sheet - Similar Threads - Checksum bestimmte bereiche

  2. XVERWEIS, SVERWEIS: Nur unter bestimmter Bedingung ausgeben, sonst weitersuchen

    in Microsoft Excel Hilfe
    XVERWEIS, SVERWEIS: Nur unter bestimmter Bedingung ausgeben, sonst weitersuchen: Moin, ich möchte mit einem S- oder XVERWEIS eine Tabelle auslesen. In der Spalte A (Suchmatrix) stehen verschiedene Namen, die jeweils mehrfach vorkommen. In der Spalte B (Ausgabematrix) sind die...
  3. 2 Tabellen nach bestimmten Kriterien synchronisieren

    in Microsoft Excel Hilfe
    2 Tabellen nach bestimmten Kriterien synchronisieren: Ich habe 2 identische Excel Dokumente -TB1 und TB2 haben gleiches Layout/ bedingte Formatierungen und Formeln enthalten -in TB1 Pflege ich alle Daten täglich (meine Daten) (mehrere Sheets) -in...
  4. eingehende Emails über bestimmtes Konto automatisch weiterleiten

    in Microsoft Outlook Hilfe
    eingehende Emails über bestimmtes Konto automatisch weiterleiten: Hallo! Ich würde gerne eingehende Emails automatisch (z.B) aus Outlook heraus an eine bestimmte Zieladresse weiterleiten. Das Programm von unserem Steuerbüro akzeptiert Rechnungen nur von einer...
  5. Ausgewählte Zelle auf einen bestimmten Platz springen lassen.

    in Microsoft Excel Hilfe
    Ausgewählte Zelle auf einen bestimmten Platz springen lassen.: Hallo mal wieder nach langer Zeit, vorab: ja ich habe gesucht, aber ich weiß nicht, wie ich mein Problem benennen soll. Folgendes Szenario: Eine Anwesenheitstabelle, zehn Namen, das Ganze Jahr...
  6. Bearbeitung nur für bestimmte User

    in Microsoft Excel Hilfe
    Bearbeitung nur für bestimmte User: Guten Morgen, ich versuche eine Excel die von einer großen Anzahl von Menschen eingesehen werden soll. Aber nur von einzelnen bearbeitet werden darf. Gleichzeitig sollte ein paralleler Zugriff...
  7. Stunden zwischen zwei bestimmten Uhrzeiten ausrechnen

    in Microsoft Excel Hilfe
    Stunden zwischen zwei bestimmten Uhrzeiten ausrechnen: Hallo habe folgendes Problem in Spalte A steht die Anfangszeit (03:00) in Spalte B steht die Endzeiz (23:00) in Spalte C soll jetzt die anzahl der Stunden zwischen 0:00 und 6:00 stehen in Spalte D...
  8. Werte ab bestimmtem Datum rechnen

    in Microsoft Excel Hilfe
    Werte ab bestimmtem Datum rechnen: Hallo Forum, folgendes Problem möchte ich gern lösen: Ich trage bestimmte wiederkehrende Daten eines Jahres im Vorhinein in eine Tabelle ein. Addiert werden sollen die Werte aber erst zu...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden