Versteckte Berechnungen innerhalb einer ExcelTabelle

  • Sonstige

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von alchimist.

    Versteckte Berechnungen innerhalb einer ExcelTabelle

    Hallöchen.

    Ich habe bereits eine (meinen Vorstelungen entsprechende) Tabellenkalkulation hochgezogen, die auch ganz gut funktioniert.
    Mich stört nur noch, dass der User (die Tabelle ist nicht für mch) die Funktionen, die innerhalb der Zellen stehen, einsehen kann.
    Da dacht ich mir, dass es doch möglich sein muss, dieses Problem mittels VBA zu lösen.

    Ich stell mir das irgendwie so vor:
    cells(a,b).hiddenfunc("=anzahl("A3:A18")")

    Ich möchte aber nicht die Funktion: cells.formulaR1C1 verwenden, da diese ja einfach nur die Formel in die Zelle schreibt und Excel losrechnet.

    Es sollen quasi nur die Funktion aus Excel (=anzahl(...), =mittelwert(...), ...) in VBA implementiert werden. Gibt es da eventuell auch ne universal einsetzbare "Interpreter"-Funktion ?
    Hallo Cephalon,

    was spricht gegen den einfachen Blattschutz, dabei können Formeln ausgeblendet werden, mögliche Befehle dazu:
    Beim Rage-Object die FormularHidden-Eigenschaft auf True und die Protect-Methode eines Worksheets.

    Gruß Markus
    Gute Idee ... ABER (und jetzt kommts :) )
    Das ermöglicht dem User aber nach wie vor de Eingabe eines beliebigen Wertes. Dieses möchte ich vermeiden, indem das VBASkript nach jedem Zellenwechsel (Worksheet_SelectionChange) meiner Zelle die eigentliche Funktion erneut zuweist (und damit die Usereingabe überschreibt)

    Die einfache Kalkulation, die per Hand in die Zelle geschrieben werden kann lautet (zum Beispiel):
    =ANZAHL("E5:V5") (steht in Zelle E30)

    der entsprechende VBA-Code hierfür wäre:
    Cells(5, 30).Formula = "=COUNT(RC[-21]:RC[-2])"

    nach diesem Schema bräuchte ich nur die Anweisung für eine 2=MITTELWERT", "=IF" und "=SUMME"-anweisung.

    PS: wie kann ich dem worksheet eine protected-Eigenschaft setzen? worksheet.protect is nich
    Hallo Cephalon,

    evtl solltest du dir das nächste Mal mehr als 25 Minuten Zeit nehmen und die Hilfe in Ruhe studieren, hier mal ein Tipp:

    Quellcode

    1. Sub test()
    2. Dim oWks As Worksheet
    3. Set oWks = ActiveSheet
    4. Dim r As Range
    5. oWks.Cells(1, 1) = 5
    6. oWks.Cells(1, 2) = 6
    7. oWks.Cells(1, 3).Formula = "=A1+B1"
    8. 'Vom Blattschutz befreien
    9. oWks.Range("A1:B1").Locked = False
    10. 'Formel ausblenden
    11. oWks.Cells(1, 3).FormulaHidden = True
    12. oWks.Protect "geheim"
    13. Set oWks = Nothing
    14. End Sub


    Gruß Markus
    Vielen Dank Markus.

    Jetzt hab ich's so hinbekommen, wie ich mir das vorgestellt habe:
    Der User kann nur noch auf die für ihn zugelassenen Zellen zugreifen und seine Werte eintragen, der Rest ist überhaupt nicht anklickbar.
    Jetzt hab' ich auch endlich mal richtig begriffen, wie mächtig die "Blatt schützen" und "Arbeitsmappe schützen"-Funktion eigentlich ist.

    Noch eine letzte Frage: Ich möchte mein Projekt nicht nur im aktuellen Formal (XL2000), sondern auch für XL97 verfügbar machen. Wie, ist mir schon klar: "Speichern unter > Dateityp: Excel97...", jedoch kann in diesem Format der Makro-Code nicht gegen Einsehen geschützt werden. Ist das Richtig? und wie kann ich das umgehen? Warscheinlich garnicht, sonst wär's ja möglich :)

    Nochmal Vielen Dank - Cephalon

    PS: kannst dir ja mal das finale Endergebnis ansehen (und noch n bisschen rumnörgeln :)) parasun.de/mech/zverw13.rar
    Hallo,

    jedoch kann in diesem Format der Makro-Code nicht gegen Einsehen geschützt werden. Ist das Richtig?
    Wie kommst du denn darauf? Wie schützt du es denn? So ein Schutz ist sowieso nur einen recht eingeschrägkte Schutzmaßnahme.

    Unter Excel97 kann ich VBA-Quelltext ausblenden, habe gerade kein Excel2000 verfügbar, auf der Arbeit sind höhere Versionen installiert.

    Gruß Markus
    Ich nenne es schützen, wenn ich verhindern kann, dass der User sich den SourceCode ansehen kann ... *grübelgrübel*
    Im VBAEditor: Projektfenster - Rechtsklick auf Projekt - Eigenschaften von Projekt - Reiter: Schutz - Checkbox "Projekt für die Anzeige sperren" + Passwort
    Das fordert den User auf ein Passwort zur Eingabe zu bringen, sobald der Code geöffnet werden soll. Für mich ist das eine recht sichere Maßnahme.
    Wenn ich das Projekt speichern will (für X97) verweigert mir das Programm dies, solange bewusstes Häkchen gesetzt ist
    Sorry - hab mich geirrt - Es handelt sich bei meiner ExcelVersion nicht um die 2000er, sondern um Excel2003.
    Hallo Cephalon,

    ich kann zumindest unter Excel97 problemlos im gewünschten Format (wie lautet die Bezeichnung des Dateityps denn genau?) speichern. Ich kann das evtl. auf einem anderen System ausprobieren (frühestens morgen).

    Gruß Markus
    Ich versteh die Frage "wie lautet .. genau?" nicht wirklich *kopfnuss*.
    Die zu speichernde Datei ist nachwievor *.XLS - Ein ExceLSheet eben.
    Ich möchte nicht den VBACode selbst irgendwohin exportieren (wozu auch?), sondern einfach die komplette ExcelArbeitsmappe (inklusive VBASource) in eine X97-fähige Version konvertieren, in der der User NICHT den Quellcode einsehen (oder gar verändern) kann.
    Hallo Cephalon,

    ich konnte diese Problematik noch nicht an meinem Arbeitsplatz austesten (XL2003) aber an meinem heimischen Rechner sehe ich foldendes:



    Wie du siehst, haben verschiedene Dateitypen dieselbe Endung.

    Gruß Markus
    Das ist richtig: ... " XLS = XLS " ... vorerst.
    Unter Excel2003 sieht das auch nicht viel anders aus.
    Das auf deinem Screenshot markierte Feld, erzeugt eine XLS-Datei in der aktuellsten Version, die dem Programm bekannt ist (bei dir X97, bei mir X2003).
    Mit anderen Worten ... " XLS<>XLS " ... wenn es um die Dateiversion geht. Zumal "meine" X2003-Datei 141kByte, und meine X97-Datei fast 200kByte lang ist, lässt mich Schlussfolgern, das dieser NICHT der Knackpunkt ist.
    Kannst du unter X97 (wie ich beschrieben habe) den VBACode mit Passwort gegen Einsicht des Users schützen? Wenn nämlich nicht, dann unterstützt X97 diese Funktion garnicht und ich muss in dieser Richtung einen Kompromiss eingehen.

    (PS ich würd' gern ebenfalls einen Screenshot einbinden ... wie geht n das?)
    Hi,

    mit Excel 2000 kann ich problemlos den Makroschutz verwenden.

    Folgende Versionen verwenden das selbe Dateiformat:
    aus Speichern Dialog von Excel 2000

    Microsoft Excel 97-2000 & 5.0/95 Arbeitsmappe


    Selbst wenn der Makroschutz bei Dir funktioniert, ist es für jemanden der es einsehen möchte möglich, den Schutz innerhalb von nur 5 Minuten auszuhebeln. Darum macht es nicht wirklich Sinn deswegen Stundenlange Diskussionen zu führen, ab welcher Version das nun geht oder auch nicht.


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de
    (PS ich würd' gern ebenfalls einen Screenshot einbinden ... wie geht n das?)

    Dafür benötigst du Webspace. Einfach Bild irgendwo hochladen und hier als Bild verlinken....
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    @ LaMa5
    Mir ist durchaus klar , dass jeder, der es unbedingt darauf anlegt, mit Hilfe eines kleinen HackingTools, Zugang zu der Datei erlangen kann. Das ist mittlerweise ja leider viel zu leicht möglich.
    Ebenso ist mir klar, dass die von dir zitierten Dateitypen die gleiche Dateiversion beinhalten. (Sonst wären ja auch verschiedene Auswahlmöglichkeiten gegeben.) Aber genau das macht mich auch stutzig: Wie wir gerade festgestellt haben, verfügt die X2000 und X97-Version über gleiche Versionsnummern (doppelt gemoppelt, sorry). Du hast aber gesagt, dass du unter X2000 den Makroschutz aktivieren kannst. Das Problem: Ich kann (unter X2003) selbigen NICHT für Eine X97-Version verwenden. Excel spuckt mir dann folgende Meldung aus:


    (Thx@Agent)

    Entferne ich daraufhin den Schutz, funktionert das Speichern tadellos.
    Ich hab mich ach schon zwei Sunden mit der Hilfe rumgeprügelt. Diese wollte mir aber auch nicht so richtig weiterhelfen ... Ist mein Problem wirklich so abwegig?

    Edit by Agent: Wenn du statt URL den IMG-tag nimmst, spart man sich das Klicken auf den Link...

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Agent“ ()

    Hi,

    ich habe eben mal schnell versucht mit Excel 2000 eine Excel 4.0 !! Tabelle mit aktiviertem Makroschutz zu speichern. Dies schlug fehl !!!. Ich kann also auch mit Excel 2000 keine vorherige Dateiversion mit Makroschutz speichern.

    Ich könnte mir gut vorstellen das das auch unter Excel 2003 so ist. :(

    Was passiert wenn Du die Datei untel Excel 2003 OHNE Schutz speicherst, dann unter Excel 97 öffnest und MIT Schutz speicherst !!! Funktioniert es dann ???


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de
    Interessante Idee ... Leider kann ich dieses "Experiment" nicht durchfüren, da ich nicht über Excel97 verfüge. Ich könnte allerdings ...

    parasun.de/img/versuch_x2003_ohne.xls

    So. Diese Datei hab ich unter X2003 erstellt und OHNE Makroschutz gespeichert. ("Tabelle1" reagiert auf "Activate" mit der Darstellung einer Messagebox.)
    Wär nett, wenns mal einer mit X97 versuchen würde zu öffnen und MIT Makroschutz wieder zu speichern.
    Sollte das gehen, würde es sich doch mal richtig lohnen ne "böse" Mail an Mcrosoft zu schreiben.
    Hi,

    ich konnte Deine Besipieldatei problemlos mit einem Makroschutz versehen und wieder speichern. Allerdings habe ich "nur" Excel 2000 greifbar.

    http://home.arcor.de/.../versuch_x2000_MIT.xls

    Aber:
    Leider kann ich dieses "Experiment" nicht durchfüren, da ich nicht über Excel97 verfüge.

    Warum soll dann die Datei unbedingt im "alten" Excel97 Format gespeichert werden, wenn Du eh mit Excel2003 arbeitest ??? *grübel* *überleg* *verwirrt sein* ;)


    bye...

    LaMa5.

    P.S. Passwort für den Makroschutz ist "1".
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „LaMa5“ ()

    Nun ... Das was ich machen will entsteht im Rahmen einer Aufagabe, die ich für die Ausbildung bearbeiten soll: Eine Zensurenverwaltung für angehende Mechatroniker.
    Und so, wie's momentan in unserem Schulsystem aussieht ... also recht düster ... hat die meine ausschließlich eine Mehrfachlizenz für Office 97. Und so ist es notwendig, das ganze für Excel97 zu portieren, leider.
    OK ... nun wissen wir, dass es unter X2000 funktioniert. Gesucht wird, nach wie vor, ein "Versuchskarnickel" mit Excel97 !!! :)
    Hallo Cephalon,

    unter Umständen habe ich es schlecht beschrieben:
    Unter Excel97 kann ich VBA-Quelltext ausblenden
    soll heißen, ich bin das Versuchskaninchen, bei mir geht es probremlos, ich kann unter Excel97 sowohl ein Projekt schützen als auch so speichern.

    Aber wie es schon mehrfach anklang, dieser Schutz ist ein sehr einfacher.

    Gruß Markus