• Moin Moin zusammen.

    Ich bin gerade dabei mal wieder die ganzen Exceltabellen auf den Stand 2017 zu ändern. Gleichzeitig bin ich am überlegen, viele Sachen mit AutoIt zu scripten.
    Excelformeln sind ja echt etwas feines, aber wenn ich das was ich in Excel erstellt habe, in AutoIt scripten möchte, dann ist das echt irgendwann ganz schön ?( .

    Also erst mal in Excel komplett fertig stellen und dann meine ich ist es wohl das Beste, sich alle Formelm und Feldinhalte auszudrucken um dann zu sehen, wie ich
    das evtl. in AutoIt umsetzen kann.

    Gibt es eigentlich irgend einen hier, der mal eine leere Exceltabelle in AutoIt erstellt hat, wo man dann sagen kann (im Script oder in einer *.ini), A2 = B2*C2 (Bsp.:).
    Wenn, dann erbitte ich die Quelle, wo ich es beziehen könnte. ;) Das wäre doch etwas, auch wenn ich bis zu 52 Tabellenblätter bei einigen Tabellen habe. ;)

    Hebt die Hand, wenn Ihr etwas wisst. Nee, Ihr dürft einfach in den Raum sprechen. :klatschen:

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Genau dafür gibt es doch die Excel-UDF von Water :)

    https://www.autoitscript.com/wiki/Excel_UDF

    https://www.autoitscript.com/autoit3/docs/l…0Management.htm

    _Excel_BookNew
    _Excel_RangeInsert
    _Excel_RangeRead
    _Excel_RangeWrite

    dürfte das sein was du suchst :)
    Ich habs aber noch nie benutzt. Mag kein Excel und besitz auch nur für Notfälle OpenOffice ;)

  • Ja genau. Beispiel:
    Schreib die Formel "=B1+2" in die Zellen B5 bis F6

    Code
    ; *****************************************************************************
    ; Fill a range in the active sheet in the active workbook with a formula
    ; *****************************************************************************
    _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "=B1+3", "B5:F6", False)
  • Ich habe mich wohl falsch ausgedrückt.
    Ich meine Excelformeln ohne Excel, also eine GUI.

    Sorry, habe derezeitig den Kopf so voll, da kann
    es mal zu Übermittungsproblemen zwischen meinem
    Gehirn und meinen Fingern kommen. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Warum kommt Excel oder OpenOffice Calc nicht in Betracht?
    Das selbst zu coden scheint mir ein ziemlicher Aufwand zu sein.

  • Moin Moin Water.

    Excel kommt schon in Betracht und ich glaube ich belasse es erst einmal bei Excel.

    Ich würde aber gerne via Script die Variablen aus den Feldern B3:T8 in eine INI Datei speichern, damit ich sie dann via GUI bearbeiten kann. Wenn ich dann ein Button drücke, möchte ich es dann nämlich wieder zurück in die Felder schreiben. Problem ist als erstes, der Tabellenblattschutz. Bekomme ich den raus und wieder rein, via Script? Und dann ist die Frage, muss ich jedes der Felder nacheinander abfragen und in die INI speichern, oder kann man das irgendwie besser kären?

    Ja, es ist nicht leicht die beste und richtige Lösung zu finden.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Geht easy:

    Code
    #include <Excel.au3>
    Global $oExcel = _Excel_Open()
    Global $oWorkbook = _Excel_BookNew($oExcel)
    Global $sPasswort = "123"
    $oExcel.ActiveSheet.Protect($sPasswort)   ; Schützen
    $oExcel.ActiveSheet.UnProtect($sPasswort) ; Schutz aufheben
  • so lfunktioniert es bei mir:

    AutoIt
    #include <Excel.au3>
    
    
    Local $oExcel = _Excel_Open()
    Local $sFilePath1 = @ScriptDir & "\tteesstt.xlsx"
    Global $oWorkbook = _Excel_BookOpen($oExcel, $sFilePath1,Default,True,Default,Default,Default)
    Global $sPasswort = "123"
    $oExcel.ActiveSheet.Protect($sPasswort)   ; Schutz aktiv
    $oExcel.ActiveSheet.UnProtect($sPasswort) ; Schutz deaktiv

    water: Danke

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • ^^

  • Ich habe noch etwas ausprobiert.
    Sieht nun so aus, das befüllen der Felder im Vordergrund dieses Beitrags gesehen:

    Das wird ganz schöne Arbeit. Sind ca. 3900 Felder.
    Hier bin ich gerade dabei und befülle den Block D6:S21. Ich habe viele solcher Blöcke auf den vier Tabellenblättern.

    Das wir ein "Spaß". Diese Sarkasmus immer zu später Stunde. ;) Hab Euch auch lieb (platonisch).

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • 1570 Formeln bzw. Angaben werden schon mal ordentlich via Script in die Tabellen eingetragen.
    Fehlen noch ca. 40% bis 45% und dann noch vier Scripte, die dann die Dummydaten einsetzt, damit ich es erst einmal in den ganzen Funktionen testen kann, was ich da in Excel gemacht habe. Also es funktioniert einwandfrei, aber wenn ich via Script befüllen lasse, muss ich auch prüfen ob es danach genauso gut ist. Und das geht am besten mit Dummywerten und da es jedes mal 290 + 17 sind, sollte das Script binnen einer Stunde (maximal) fertig sein. Die 17 sind nicht zusammenhängig, die anderen acht Blöcke (hier Spalten) sind jeweils 290 mal der gleiche Inhalt. Kann man also mit einer Zeile scripten.

    Und da ich hier gelernt habe foul zu sein, habe ich beim Scripten Excel verwendet !
    Ja, ihr lest richtig. Excel war und ist meine Scripthilfe. Und zwar so:

    [_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, '][2000] [', '] [D6] [', False)]
    Spalte-A, -C und -E sind ja immer gleich, also muss ich hier nichts tippen.
    Spalte-B und -D verändern sich und nur das kommt via C&P rein.

    Einfacher geht es ja nun wirklich nicht, ohne noch ein Script zu schreiben, das mir die Formeln & Daten auslist.

    Und bis jetzt, wenn ich immer mal wieder teste, funktioniert es ja auch. Ab und an muss ich noch händisch (heißt das so???) das eine oder andere anpassen, aber wenn ich den Grund gefunden habe, kann ich es gleich im Script ändern. War so eine Sache, wenn in Formeln / Textfeldern die Anführungszeichen (") sind, dann dürfen es nicht die doppelten sein, sondern wie oben gezeigt. So kleine Fallen gibt es immer wieder mal, aber wenn die Formeln z. T. so sehr verschaltelt und dann auch noch in einem Textfeld ein oder mehrere einfache Anführungszeichen sind, dann wird es kompliziert ab und an. Aber sonst? Es läuft, würde meine Mum nun sagen. ;)


    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl