1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. dirkrid

Beiträge von dirkrid

  • In Excel Variable finden?

    • dirkrid
    • 6. Juni 2014 um 08:31

    Ich muss leider auf meine Ursprüngliche Frage zurück kommen, da ich es nicht geschafft habe, sie zu lösen.
    Mit VBA funktioniert es folgendermaßen:

    Code
    Sub moveto()
        Dim lngZ(1 To 2) As Long
        With Workbooks("ergebnis.csv").Worksheets(1)
            lngZ(2) = .Cells(.Rows.Count, 2).End(xlUp).Row
            lngZ(1) = .Cells(.Rows.Count, 1).End(xlUp).Row - lngZ(2)
            If lngZ(1) Then
                Workbooks("rohdaten.csv").Worksheets(1).Cells(2, 1).Resize(lngZ(1), 12).Copy .Cells(lngZ(2) + 1, 2)
                Workbooks("rohdaten.csv").Worksheets(1).Cells(2, 1).Resize(lngZ(1), 12).Delete xlUp
            End If
        End With
    End Sub
    Alles anzeigen


    Ich schaffe es aber nicht, diesen Code statt mit VBA mit AutoIt auszuführen.
    Kann mir jemand helfen?

  • Wie finde ich die Elemente auf der Webseite?

    • dirkrid
    • 21. Mai 2014 um 16:25
    Zitat von chip

    iMacros und Autoit sind ja auch zwei komplett verschiedene Dinge. Ist wie Äpfel und Birnen zu vergleichen.

    Stimmt, denn zum Automatisieren von Firefox zur Datenein- und ausgabe in einer csv Datei ist iMacros ein mächtiges, einfaches, benutzerfreundliches Werkzeug. AutoIt dagegen eine Baustelle auf der sich Werkzeuge befinden, die Millionen Wert sind, aber keiner da ist, der diese sortiert..

    https://addons.mozilla.org/de/firefox/add…os-for-firefox/

  • Wie finde ich die Elemente auf der Webseite?

    • dirkrid
    • 21. Mai 2014 um 11:23

    Danke. Es ist also, wie ich es befürchtet hatte, doch viel umständlicher als mit iMacros.

  • Ich bekomme beim Schreiben keine Calltips angezeigt

    • dirkrid
    • 21. Mai 2014 um 11:18

    Danke.
    Nach dem Verschieben der api in den Ordner C:\Program Files\AutoIt3\SciTE werden die User-Calltips angezeigt.

  • Wie finde ich die Elemente auf der Webseite?

    • dirkrid
    • 20. Mai 2014 um 22:43

    Hallo nochmals,

    ich steige von iMacros um möchte AutoIt nutzen. Wie spreche ich einzelne Elemente an?

    Mit iMacros Macrorecorder kann ich einfach auf ein Element klicken und weiß dann, welches Element wie angesprochen werden soll. Es gibt nämlich die Möglichkeit unter Record Optionen verschiedene Möglichkeiten, ein Element anzusprechen.
    Bsp:

    Code
    URL GOTO=google.de
    'entweder so:
    TAG POS=1 TYPE=INPUT:TEXT FORM=ID:gbqf ATTR=ID:gbqfq CONTENT=test
    'oder so:
    EVENT TYPE=CLICK SELECTOR="#gbqfq" BUTTON=0
    EVENTS TYPE=KEYPRESS SELECTOR="#gbqfq" CHARS="test"
    'oder so:
    CLICK X=268 Y=327
    EVENTS TYPE=KEYPRESS SELECTOR="#gbqfq" CHARS="test"


    Wie gehe ich bei AutoIt vor? Muss ich jedes Element mit im Quelltext suchen (mit der Firefox Konsole &/ Firebug) und dann das entsprechende Ereignis zuweisen?

    Gruß,
    Dirk

  • Ich bekomme beim Schreiben keine Calltips angezeigt

    • dirkrid
    • 20. Mai 2014 um 22:23

    Hallo Zusammen,

    wie bekomme ich für FF.au3 die Calltips?
    AutoIt Version: 3.3.11.5 (Beta), Windows 7

    Ich habe den Code von http://www.thorsten-willert.de/Themen/FFau3/V…ltips.api.txt?a als au3.user.calltips.api in dem Ordner C:\Program Files\AutoIt3\SciTE\api gespeichert, Scite neu gestartet.
    Leider bekomme ich beim Schreiben keine Calltips. Woran kann das liegen?
    [Blockierte Grafik: http://oi62.tinypic.com/258usg2.jpg]

    Schöne Grüße,
    Dirk

  • In Excel Variable finden?

    • dirkrid
    • 19. Mai 2014 um 21:01

    Das Verschieben der Daten innerhalb der csv Dateien waren das einzige Problem.
    Jetzt hast du mir weitere Probleme aufgetischt, die ich mit C&P, SuFu und learning by doing selbst zu lösen versuche. ;)

    :)

  • In Excel Variable finden?

    • dirkrid
    • 19. Mai 2014 um 18:33

    Den Browser-UDF brauche ich, um für mich relevante Daten zu suchen und diese auszuwerten.
    Danke dir.

  • In Excel Variable finden?

    • dirkrid
    • 19. Mai 2014 um 16:03

    Danke dir. Ich kannte bis letzter Woche AutoIt nicht und iMacros hat für mich den Vorteil, dass es sehr einfach ist, damit zu arbeiten.
    Ich werde versuchen den iMacros Skript mit AutoIt und der FF.au3 UDF zu realisieren.

  • In Excel Variable finden?

    • dirkrid
    • 19. Mai 2014 um 14:20

    Hallo qwert23,

    die Daten werden mit iMacros von rohdaten.csv abgelesen und in ergebnis.csv eingetragen.
    Es ist damit leider nicht möglich (ich kenne keine Möglichkeit) die rohdaten.csv direkt in die ergebnis.csv zu schreiben.
    rohdaten.csv: [Blockierte Grafik: http://oi57.tinypic.com/of1ox0.jpg]
    ergebnis.csv: [Blockierte Grafik: http://oi58.tinypic.com/24dj95s.jpg]
    Wie auf dem Beispiel-Bild zu sehen ist, sind in der ergebnis.csv 5 mit iMacros erstellte Zellen (A8:A12).
    Jetzt müsste ich genauso so viele Zeilen von rohdaten.csv (A2:L6) in die ergebnis.csv (B8:M12) verschieben.

    Wie weiß ich aber, dass in der ergebnis.csv genau 5 Zellen existieren und diese verschoben werden sollen?

  • In Excel Variable finden?

    • dirkrid
    • 17. Mai 2014 um 18:10

    Hallo,
    Mit folgendem Code von "water" werden Zeilen von rohdaten.csv in ergebnis.csv verschoben:

    Spoiler anzeigen
    [autoit]

    #include <Excel.au3>
    $oExcel = _Excel_Open()
    $oRohdaten = _Excel_BookOpen($oExcel, @ScriptDir & "\rohdaten.csv")
    $oErgebnis = _Excel_BookOpen($oExcel, @ScriptDir & "\ergebnis.csv")
    $iTargetColumn = $oErgebnis.ActiveSheet.Usedrange.Columns.Count + 1
    $oTargetRange = $oErgebnis.ActiveSheet.Range("B" & $iTargetColumn)
    _Excel_RangeCopyPaste($oRohdaten.Activesheet, "A8:L16", $oTargetRange)
    _Excel_RangeDelete($oRohdaten.Activesheet, "A8:L16", $xlShiftUp)

    [/autoit]

    Wenn die Spalte A statt 8 Zellen bspw. nur 5 Zellen enthalten, wie gehe ich dann vor?
    - Wenn in "ergebnis.csv" nur 6 neue Zeilen beschrieben sind, brauche ich aus "rohdaten.csv" auch nur A8:L13. Wenn 3 Zeilen beschrieben sind, A8:L10.

    Schritt 1:
    Dann müsste ich in der "ergebnis.csv" wie bisher in Spalte B die letzte leere Zelle suchen:

    [autoit]

    $iTargetColumn = $oErgebnis.ActiveSheet.Usedrange.Columns.Count + 1
    $oTargetRange = $oErgebnis.ActiveSheet.Range("B" & $iTargetColumn)

    [/autoit]


    Schritt 2:
    Danach in der "ergebnis.csv" in Spalte A die beschriebenen Zellen zählen und als Variable speichern.

    [autoit]

    $iTargetColumn = $oErgebnis.ActiveSheet.Usedrange.Columns.Count
    $oTargetRange = $oErgebnis.ActiveSheet.Range("A" & $iTargetColumn)

    [/autoit]


    Schritt 3:
    Aus der Quelle, also "rohdaten.csv" genauso viele Zellen kopieren, wie hoch die Variable gezählt wurde.

    [autoit]

    _Excel_RangeCopyPaste($oRohdaten.Activesheet, "Variable?", $oTargetRange)

    [/autoit]


    Schritt 4:
    Löschen mit Variable.

    [autoit]

    _Excel_RangeDelete($oRohdaten.Activesheet, "Variable", $xlShiftUp)

    [/autoit]

    Wie lege ich diese Variable fest? Oder habe ich einen Denkfehler?
    Schöne Grüße

  • AutoIt WM 2014 Tipp Spiel 12.06.2014 - 13.07.2014

    • dirkrid
    • 16. Mai 2014 um 10:45

    Ich bin auf dem 1. Platz ;)

  • Zeilen innerhalb von 2 csv-Dateien verschieben.

    • dirkrid
    • 15. Mai 2014 um 08:05

    Ich finde leider kein hilfreiches Beispiel. Wie wende ich die Funktion $oWorksheet.Usedrange.Rows.Count an?
    So bin ich vorgegangen:
    Ich deklariere eine lokale Variable $iLastRow. Diese hat die Funktion UsedRange.Rows.Count.
    Dann frage ich mit einer Schleife ab, ob $iLastRow leer ( "" ) ist, wenn ja, dann soll _Excel_RangeCopyPaste angewendet werden.

    [autoit]

    ; *****************************************************************************
    ; Copy cells from another workbook. Pass the source range as object.
    ; *****************************************************************************
    Local $cRange = $oWorkbook2.ActiveSheet.Range("A1:L8")
    Local $iLastRow = $oExcel.Activesheet.UsedRange.Rows.Count
    If $iLastRow.Value = "" Then
    _Excel_RangeCopyPaste($oWorkbook1.Worksheets(1), $iLastRow)
    EndIf
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeCopy Example 1", "Error copying cells." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

    [/autoit]
  • Zeilen innerhalb von 2 csv-Dateien verschieben.

    • dirkrid
    • 14. Mai 2014 um 10:57

    Ich meine den letzten benutzten Bereich. (Beispiel: Letzte Zeile mit Inhalt = 51, daher nach Zeile 52 schreiben)

  • Zeilen innerhalb von 2 csv-Dateien verschieben.

    • dirkrid
    • 14. Mai 2014 um 10:12

    Vielen Dank für eure Hilfe.
    Ich benutze jetzt die Beta-Version. Mit folgendem Code werden die Daten richtig übertragen:

    Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.11.5 (Beta)
    Author: myName

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here

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

    #include <Array.au3>
    #include <Excel.au3>
    #include <MsgBoxConstants.au3>

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

    ; Create application object and open an example workbook
    Local $oAppl = _Excel_Open()
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeCopy Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

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

    ; Open Workbook 2
    Local $oWorkbook2 = _Excel_BookOpen($oAppl, @ScriptDir & "\rohdaten.csv")
    If @error Then
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeCopy Example", "Error opening workbook '" & @ScriptDir & "\rohdaten.csv'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oAppl)
    Exit
    EndIf

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

    ; Open Workbook 1
    Local $oWorkbook1 = _Excel_BookOpen($oAppl, @ScriptDir & "\ergebnis.csv")
    If @error Then
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeCopy Example", "Error opening workbook '" & @ScriptDir & "\ergebnis.csv'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oAppl)
    Exit
    EndIf

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

    ; *****************************************************************************
    ; Copy cells from another workbook. Pass the source range as object.
    ; *****************************************************************************
    Local $cRange = $oWorkbook2.ActiveSheet.Range("A1:L8")
    _Excel_RangeCopyPaste($oWorkbook1.Worksheets(1), $cRange, "B1")
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeCopy Example 1", "Error copying cells." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    ; *****************************************************************************
    ; Delete a range on the active worksheet
    ; and shift the cells up.
    ; *****************************************************************************
    _Excel_RangeDelete($oWorkbook2.ActiveSheet, $cRange, $xlShiftUp)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeDelete Example 1", "Error deleting cells." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

    [/autoit]

    Mir ist im nachhinein aufgefallen, dass ich die Daten, die bereits richtig übertragen werden, gelöscht werden, wenn ich diesen Skript erneut ausführe.
    Ich möchte nun in der Datei "ergebnis.csv" in Spalte B nach der nächst leeren Zelle suchen und dort die zu verschiebende Zellen von "rohdaten.csv" hineinkopieren, bevor sie gelöscht werden.
    Autoit bietet hierzu die Funktion _Excel_Rangefind
    Mit der Hilfe kam ich leider nicht zurecht. Wie gebe ich an, dass die leere Zellen gesucht werden sollen?
    Mein Versuch scheiterte leider:

    [autoit]

    Local $aResult = _Excel_RangeFind($oWorkbook1, "", "B", $xlFormulas, $xlWhole)

    [/autoit]
  • Zeilen innerhalb von 2 csv-Dateien verschieben.

    • dirkrid
    • 13. Mai 2014 um 15:30

    Hallo Zusammen,

    Mein Vorhaben:
    Ich möchte bestimmte Zeilen von einer .csv Datei in eine andere verschieben.
    Es gibt 2 Dateien mit den Namen "ergebnis.csv" und "rohdaten.csv". Die Zeilen 8 bis 16 in "rohdaten.csv" möchte ich in die "ergebnis.csv" ab Spalte B verschieben, Da Spalte A Daten enthält.
    Meine Vorgehensweise:
    Ich lasse von Autoit "rohdaten.csv" auslesen und in "ergebnis.csv" eintragen. Jedoch scheitere ich daran, dass die Daten nicht übertragen werden. Vielleicht habe ich noch nicht verstanden, wie man Arrays handhaben müsste.

    Wie muss ich vorgehen, um die Zeilen 8 bis 16 in "rohdaten.csv" nach "ergebnis.csv" ab Spalte B, Zeile 1 und jeweils drunter zu verschieben?

    Ich wäre für eure Hilfe sehr dankbar.
    Folgend mein Versuch:

    [autoit]


    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.10.2
    Author: myName

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here

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

    ; ergebnisse zum kopieren bereitstellen
    #include <Excel.au3>
    #include <MsgBoxConstants.au3>

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

    Local $sFilePath1 = @ScriptDir & "\rohdaten.csv" ;This file should already exist
    Local $oExcel = _ExcelBookOpen($sFilePath1)
    Local $aArray = $oExcel

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

    If @error = 1 Then
    MsgBox($MB_SYSTEMMODAL, "Error!", "Unable to Create the Excel Object")
    Exit
    ElseIf @error = 2 Then
    MsgBox($MB_SYSTEMMODAL, "Error!", "File does not exist - Shame on you!")
    Exit
    EndIf
    _ExcelSheetActivate($oExcel, "rohdaten") ; Richtigen Reiter aktivieren

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

    ;Von Ergebnisse Daten von Excel auslesen Beginnen bei Zeile 8, Spalte A, Zelle 1
    _ExcelReadArray ( $oExcel, 8, 1, 1 )

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

    For $i = 8 To 16 ; Schleife um von Zeile 8 bis 18 auszulesen
    _ExcelReadArray($oExcel, $i, $i, 1)
    Next

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

    ;Daten jetzt übertragen
    Local $sFilePath1 = @ScriptDir & "\ergebnis.csv" ;This file should already exist
    Local $oExcel = _ExcelBookOpen($sFilePath1)

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

    If @error = 1 Then
    MsgBox($MB_SYSTEMMODAL, "Error!", "Unable to Create the Excel Object")
    Exit
    ElseIf @error = 2 Then
    MsgBox($MB_SYSTEMMODAL, "Error!", "File does not exist - Shame on you!")
    Exit
    EndIf
    _ExcelSheetActivate($oExcel, "ergebnis") ; Richtigen Reiter aktivieren
    _ExcelWriteArray( $oExcel, 1, 2, $aArray) ; Ergebnisse neben Zelle B1 usw. eintragen

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

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™