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. P1xelfehler

Beiträge von P1xelfehler

  • Excel-Modul löschen

    • P1xelfehler
    • 15. Februar 2016 um 15:51

    Nope..

    Bilder

    • Error.PNG
      • 6,18 kB
      • 764 × 70
  • Excel-Modul löschen

    • P1xelfehler
    • 15. Februar 2016 um 15:45

    Irgendwie nicht, da das auf der Seite ja innerhalb von Excel ist. Sowas hab ich schon mehrmals gefunden. Nur weiß ich nicht, wie ich das in AutoIT schreiben soll.

    Das hier geht zumindest nicht:

    Code
    $oExcel.Application.VBE.ActiveVBProject.VBComponents.Remove $oExcel.Application.VBE.ActiveVBProject.VBComponents("Kopieren")


    Das hier auch nicht:

    Code
    $oExcel.ThisWorkbook.VBProject.VBComponents.Remove $oExcel.ThisWorkbook.VBProject.VBComponents("Kopieren")
  • Excel-Modul löschen

    • P1xelfehler
    • 15. Februar 2016 um 15:25

    Hallo,

    Ich importiere mit Hilfe von AutoIT VBA-Module in Excel.

    ich würde gerne,dass das AutoIT-Skript entweder:
    A) Erkennt, dass das Modul schon vorhanden ist und dieses nicht importiert
    ODER
    B) Das Modul in jedem Fall vorher löscht und es dann erst importiert

    Wie mache ich das?

    Vielen Dank im voraus!

    Code:

    C
    #include <Excel.au3>
    #include <ExcelConstants.au3>
    Global $oExcel = _Excel_Open()
    ;Hier löschen oder erkennen, ob vorhanden???
    $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ("C:\Users\peter\Desktop\mdl_Kopieren.bas")
    $oExcel.Application.Run("Kopieren")
  • Teilweisen Namen eines Fensters auslesen

    • P1xelfehler
    • 20. Januar 2016 um 09:13
    Zitat von BugFix

    Du kannst das, was das Makro macht (VBA-Code), in den meisten Fällen unkompliziert nach AutoIt portieren

    Irgendwie finde ich da bei Google nichts zu oder bin ich blöd? Wie ginge das?

    Und danke erstmal bis hierher :)

  • Teilweisen Namen eines Fensters auslesen

    • P1xelfehler
    • 19. Januar 2016 um 17:24

    Passt zwar eigentlich nicht mehr hier rein, aber:

    Kann man auch in der momentan geöffneten Excel-Datei mit einem AutoIT-Befehl direkt ein Makro importieren und evtl. direkt ausführen?

    Das ausführen habe ich bereits mit einer Tastenkombination im Makro gelöst, die AutoIT dann einfach ausführt, aber geht das auch anders?

  • Teilweisen Namen eines Fensters auslesen

    • P1xelfehler
    • 19. Januar 2016 um 17:08

    Okay danke, habe Möglichkeit a probiert und es geht:

    Code
    #include <StringConstants.au3>
    Opt("WinTitleMatchMode", 2)
    $aArray = StringSplit(WinGetTitle("Microsoft Excel"), ' - ', $STR_ENTIRESPLIT)
    MsgBox(0,"",$aArray[2])

    Oder ist b schneller/besser?

  • Teilweisen Namen eines Fensters auslesen

    • P1xelfehler
    • 19. Januar 2016 um 16:20

    Nö, hierbei kommt immer noch raus: "Microsoft Excel - Mappe 1":

    Code
    Opt("WinTitleMatchMode", 2)
    $Title = WinGetTitle("Microsoft Excel")
    MsgBox(0,"",$Title)

    Ich will halt den Namen der Datei haben, ohne dass AutoIT den Dateipfad wissen muss.

  • Teilweisen Namen eines Fensters auslesen

    • P1xelfehler
    • 19. Januar 2016 um 16:12

    Hallo,

    mit $Title = WinGetTitle("") kann man ja den Titel eines Fensters auslesen. Jetzt will ich das bei einem Excel-Fenster machen. Das heißt dann z.B. "Microsoft Excel - Mappe 1".

    Ich will jetzt aber nur dieses "Mappe 1" ohne den Rest als Variable haben! Wie?

    Danke im Voraus

  • Standard-Zeit zwischen den Befehlen? (statt sleep)

    • P1xelfehler
    • 18. Januar 2016 um 08:58

    @water nochmals danke an dich :)

  • Standard-Zeit zwischen den Befehlen? (statt sleep)

    • P1xelfehler
    • 15. Januar 2016 um 14:04

    der rot unterstrichene hier:

    Bilder

    • ControlID.PNG
      • 31,06 kB
      • 304 × 458
  • Standard-Zeit zwischen den Befehlen? (statt sleep)

    • P1xelfehler
    • 15. Januar 2016 um 13:59

    Jetzt hab ich das Problem, dass sich eine bestimmte ControlID bei jedem Start des Programms ändert...

    @water Kann man nicht, statt mit den Controls, einfach nur mit den Koordinaten im Fenster arbeiten? Oder wie kann man das lösen?

  • Standard-Zeit zwischen den Befehlen? (statt sleep)

    • P1xelfehler
    • 14. Januar 2016 um 12:11

    Danke dir :)

  • Standard-Zeit zwischen den Befehlen? (statt sleep)

    • P1xelfehler
    • 14. Januar 2016 um 11:56

    @water
    Aus einem speziellen Programm in unserer Firma sollen Berichte (meistens so 50 oder mehr) einzeln angeklickt und in eine Excel-Datei exportiert werden. Ich hab das ganze jetzt soweit verbessert, dass ich in Excel selbst alles mit VBA löse (ausgelöst durch Autoit mit strg+k). Geht schon mal sehr viel schneller.

    Hab mir ControlClick mal angeschaut. Wo bekomme ich denn die ControlID her? Klingt ja erstmal super, da es dann nicht mehr alles kaputt macht, wenn ich das Fenster verschiebe :D

    Und lese ich das richtig raus, dass man dann auch noch gleichzeitig irgendwas anderes am Rechner machen kann und das im Hintergrund läuft?

  • Standard-Zeit zwischen den Befehlen? (statt sleep)

    • P1xelfehler
    • 13. Januar 2016 um 14:14

    Bin noch selbst auf eine Idee gekommen - eine eigene Funktion:


    Code
    Func _ClicknWait($key,$x,$y,$clicks,$time)
       MouseClick($key,$x,$y,$clicks)
       Sleep($time)
    EndFunc

    Funktioniert auch soweit! Trotzdem danke!

  • Standard-Zeit zwischen den Befehlen? (statt sleep)

    • P1xelfehler
    • 13. Januar 2016 um 13:57

    danke, hilft trotzdem sehr viel (weil 95% der Befehle eben diese sind^^)

    Edit: aber handelt nicht "MouseClickDelay" - wenn ich das richtig lese - nur den Zeitabstand zwischen doppel (oder mehr) Klicks in einem Befehl? Und nicht vor oder nach dem Befehl?

  • Standard-Zeit zwischen den Befehlen? (statt sleep)

    • P1xelfehler
    • 13. Januar 2016 um 13:50

    Hallo,

    ich habe ein Script, das verschiedene Dinge abarbeitet (hauptsächlich mit der Maus) und habe zwischen den Befehlen jeweils (fast) immer die gleiche Wartezeit (500ms) drin. Dadurch wird das ganze unnötig lang und unübersichtlich.

    Kann man AutoIT nicht irgendwie sagen, es soll immer 500ms zwischen den Befehlen warten??

    Danke im Voraus

  • Warum geht das nicht?! (Tastenkombinationen)

    • P1xelfehler
    • 16. Oktober 2015 um 10:40

    DANKE @Bioshade !

  • Warum geht das nicht?! (Tastenkombinationen)

    • P1xelfehler
    • 16. Oktober 2015 um 09:49

    Er wechselt zwar in das Excel-Fenster, aber Send("^{PAUSE}") "wirkt" irgendwie nicht... Das Excel-Skript läuft weiter. Wenn ich das selbst eingebe, geht es aber.

  • Warum geht das nicht?! (Tastenkombinationen)

    • P1xelfehler
    • 16. Oktober 2015 um 09:33

    Hallo,

    dieses Skript soll einfach nach Drücken von SHIFT + ESC das laufende Excel-Makro pausieren (was mit STRG + PAUSE geht) und mein anderes (mit Visual Basic erstelltes) Programm schließen.

    Die andere Tastenkombination (nur ESC) zum killen von allen Prozessen funktioniert.

    Bin ich blind?

    Danke im Voraus
    ~P1xel

    AutoIt
    #include <File.au3>
    
    
    ;ESC-Taste um alles sofort abzubrechen
    HotKeySet("{ESC}","_AllesAbbrechen") ;Killt Project Excel und Excel selbst und beendet sich
    Func _AllesAbbrechen ()
       ProcessClose("Projekt Excel.exe")
       ProcessClose("EXCEL.EXE")
       ProcessClose("Excel einstellen.exe")
       ProcessClose("Excel zurückstellen.exe")
       ProcessClose("Makro Bloecke starten.exe")
       ProcessClose("Makro KostenNeubau starten.exe")
       ProcessClose("Makro KostenRenovierung starten.exe")
       ProcessClose("Makro Reparaturkosten starten.exe")
       ProcessClose("Makro SpaltenAusblenden.exe")
       ProcessClose("Makro SpaltenEinblenden.exe")
       ProcessClose("Makros importieren (fertig).exe")
       ProcessClose("Makro Sortieren starten.exe")
       Exit
    EndFunc
    
    
    HotKeySet("+{ESC}", "ProjectExcelAbbrechen")
    
    
    Func ProjectExcelAbbrechen () ;Stoppt das laufende Modul und killt NUR Project Excel!
    
    
    	;Projekt Excel killen
    	ProcessClose("Projekt Excel.exe")
    
    
       ;Excel-Fenster auswaehlen
        Opt("WinTitleMatchMode", 2)
        WinActivate("Microsoft Excel")
        WinWaitActive("Microsoft Excel")
    
    
    	;Laufendes Excel-Modul stoppen
    	Sleep(500)
    	Send("^{PAUSE}")
    
    
       Exit
    EndFunc
    
    
    $a = 1
    
    
    While $a = 1
       Sleep(1000)
    WEnd
    Alles anzeigen
  • Dateien und Ordner zählen

    • P1xelfehler
    • 15. Oktober 2015 um 13:13

    siehe Edit, geht doch, war mein Fehler...

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™