Makro in Excel umwandeln zu autoit

  • moin moin,


    habe ein problem mit einem Makro.
    Es soll jede zweite Zeile ab einer bestimmten in einer anderen Farbe darstellen.
    Kann dieses nicht umwandeln in ein autoit skript.

    [autoit]

    Sub Makro1()
    '
    ' Makro1 Makro
    ' Makro am 14.04.2010 von oh-ha aufgezeichnet
    Rows("9:39").Select
    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
    "=REST(TEILERGEBNIS(3;$A$9:$A9);2)=0"
    Selection.FormatConditions(1).Interior.ColorIndex = 41
    Range("H18").Select
    ActiveWindow.SmallScroll Down:=2
    End Sub

    [/autoit]


    Könnte mir mal bitte einer sagen wie ich das umwandeln kann ?.


    mfg
    oh-ha

    Edit: Titel geändert

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

    2 Mal editiert, zuletzt von oh-ha (16. April 2010 um 22:37)

  • oh da habe ich mich wohl etwas fasch ausgedrückt.
    Möchte die Tabelle nur mit Autoit bearbeiten.
    Normal zeichne ich ein Makro in der Tabelle auf und schreibe es mir dann in Autoit um so das ich mit Autoit meine Tabelle
    bearbeiten kann.
    Das würde in dem Fall dann so aussehen:

    [autoit]


    $Zeilenanzahlab = $oExcel.ActiveSheet.Cells($oExcel.Rows.Count, 1).End(-4162).Row ; -4162 = xlUp
    $oExcel.Rows("9:" &$Zeilenanzahlab).Select
    $oExcel.Selection.FormatConditions.Delete
    $oExcel.Selection.FormatConditions.Add.Type = 2
    $oExcel.Formula1 = "=REST(TEILERGEBNIS(3;$A$9:$A9);2)=0"
    $oExcel.Selection.FormatConditions(1).Interior.ColorIndex = 34

    [/autoit]


    nur geht es halt nicht.
    Es wird nur der bereich markiert aber nichts weiter.


    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

  • puh, ok probiere ich mal

    [autoit]

    $sFilePath1 = @ScriptDir & "\Skripte\Start\" & $fileallgemein ; Pfad festlegen
    $oExcel =_ExcelBookOpen ($sFilePath1, $fVisible = 1) ; Tabelle öffnen
    $Zeilenanzahlab = $oExcel.ActiveSheet.Cells($oExcel.Rows.Count, 1).End(-4162).Row ; -4162 = xlUp ; Zeilenende feststellen
    $oExcel.Rows("9:" &$Zeilenanzahlab).Select ; Bereich makieren der bearbeitet werden soll
    $oExcel.Selection.FormatConditions.Delete
    $oExcel.Selection.FormatConditions.Add.Type = 2 ; Typ2 ist bei Bedingter Formatierung = Format ist
    $oExcel.Formula1 = "=REST(TEILERGEBNIS(3;$A$9:$A9);2)=0" ; die Formel die mir jede zweite Zeile andersfarbig hinterlegt
    $oExcel.Selection.FormatConditions(1).Interior.ColorIndex = 34 ; die Farbe in der jede zweite Zeile eingefärbt werden soll

    [/autoit]

    In Excel : Format >> Bedingte Formatierung >> Formel ist >> "=REST(TEILERGEBNIS(3;$A$9:$A9);2)=0" >> Format >> Muster >> Farbe wählen.

    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

    • Offizieller Beitrag

    Ahh, jetzt verstehe ich.
    Aber das kann schon rein logisch nicht klappen. Du gibst die Funktion an, die das Makro ausführen würde. Dazu wird intern VBA aufgerufen. Dieser Schritt fehlt, wenn du es per AutoIt machst.
    Also du willst folgendes:
    - Eingabe: Startzeile
    - Ermitteln: letzte belegte Zeile
    - in diesem Bereich jede zweite Zeile mit gewählter Hintergrundfarbe ausfüllen

    Das meinte ich übrigens mit Pseudocode ;) - nicht das Kommentieren des Codes.
    Wenn du das so möchtest, werde ich mal eine AutoItvariante dazu erstellen.

  • sorry das ich mich da ein wenig dumm ausgedrückt habe. :rolleyes:
    Das mit dem Pseudocode werde ich mir für die nächsten male merken ;)
    Wäre echt nett von dir mir das umzusetzen.
    Hänge da schon ein paar Tage dran und komme null weiter.

    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

    • Offizieller Beitrag

    Das sollte so gehen:
    (In deinem Fall natürlich eine bestehende Datei öffnen.)

    [autoit]

    Local $oExcel = ObjCreate("Excel.Application")
    $oExcel.Visible = 1
    $oExcel.SheetsInNewWorkbook = 1 ; Anzahl der gewünschten Sheets beim Erstellen festlegen
    Local $oBook = $oExcel.Workbooks.Add ; im Excel-Objekt ein Workbook-Objekt erstellen
    Local $oSheet = $oBook.Sheets(1)
    Local $i = 9 ; <== Startzeile

    [/autoit][autoit][/autoit][autoit]

    $Zeilenanzahl = $oExcel.Worksheets(1).UsedRange.Rows.Count
    While $i <= $Zeilenanzahl
    $oSheet.Rows($i).Interior.ColorIndex = 34
    $i += 2
    WEnd

    [/autoit]
  • Danke dir, habe da echt in einer Schleife gehangen und bin da nicht mehr raus gekommen.


    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit