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

  • Zeile für Zeile (geht das irgendwie schneller?)

    • P1xelfehler
    • 28. November 2016 um 15:48

    Danke sehr! :)

  • Zeile für Zeile (geht das irgendwie schneller?)

    • P1xelfehler
    • 28. November 2016 um 14:50

    Vielen Dank! Nur verstehe ich das nicht so ganz:

    Code
    $sOutput = StringRegExpReplace($sInput, "(?m)^(.{7}).{5}(.{6}).{7}(.)$", "$1;$2;$3")
  • Zeile für Zeile (geht das irgendwie schneller?)

    • P1xelfehler
    • 28. November 2016 um 10:24

    Hallo,

    mein Programm soll Zeile für Zeile eine Datei durchlaufen, und in einem anderen Format in einer anderen Datei speichern.

    Aber es dauert eeeewig. Und als ich vorhin ausversehen die ganze Zeit die gleiche Zeile in die Zieldatei geschrieben habe, ging das wesentlich schneller.

    Geht das irgendwie schneller?
    Hier der Code:

    Code
    #include <File.au3>
    
    
    $Path = "C:\Users\testdatei.xyz"
    $Datei = FileOpen($Path)
    $Zieldatei = FileOpen("C:\Documents\Projekte\fertig_testdatei.xyz",1)
    $Lines = _FileCountLines ($Path)
    $Counter = 0
    
    
    While $Counter < $Lines
       $ZeileNow = FileReadLine($Datei,$Counter)
       $X = StringTrimRight($ZeileNow, 19)
       $Y = StringTrimLeft(StringTrimRight($ZeileNow, 8), 12)
       $Z = StringTrimLeft($ZeileNow, 25)
    
    
       FileWriteLine($Zieldatei, $X & ";" & $Y & ";" & $Z & @CRLF)
    
    
       $Counter = $Counter + 1
    WEnd
    Alles anzeigen
  • Excel-Modul löschen

    • P1xelfehler
    • 29. Februar 2016 um 13:26

    Ich melde mich hier doch nochmal ;)

    Habe das jetzt erstmal so gemacht (so wird nur neu importiert, wenn noch nicht importiert wurde - Idealfall also):

    C
    #include <Excel.au3>
    #include <ExcelConstants.au3>
    Opt("WinTitleMatchMode", 2)
    Global $oExcel = _Excel_Open()
    Global $__goCOMErrorHandler = ObjEvent("AutoIt.Error", "_COMErrFunc")
    HotKeySet("{ESC}","_Beenden") ;ESC-Taste zum Beenden
    Local $Pfad = RegRead("HKEY_CURRENT_USER\Software\VB and VBA Program Settings\ProjektExcel\Andere","Ordnerpfad") ;Ordnerpfad aus Registry auslesen
    $Title = WinGetTitle("Microsoft Excel") ;Titel auslesen
    Loeschen()
    
    
    Func _Beenden ()
       Exit
    EndFunc
    Func _COMErrFunc() ;Wenn ein Fehler auftritt...
       Importieren() ;Importiert deshalb nur, wenn noch nicht importiert wurde, also das Löschen fehlschlägt!
       Exit
    EndFunc   ;==>Template_COMErrFunc
    Func Loeschen()
       Global $oWorkbook = _Excel_BookAttach($Title,"Title")
       $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("mdl_Neubau"))
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\mdl_Neubau.bas")
    EndFunc
    Func Importieren()
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\mdl_Neubau.bas")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\mdl_Renovierung.bas")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\mdl_Reparatur.bas")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\mdl_Tabelle.bas")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\mdl_Sortieren.bas")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\FrmAnfangsdialog.frm")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\FrmSortierenFehler.frm")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\FrmTabellenAendern.frm")
    EndFunc
    Alles anzeigen

    Dass nur ein Fehler beim Löschen abgefangen wird, ist sehr gut. Jetzt möchte ich aber eine Fehlermeldung haben, wenn Excel nicht geöffnet ist, das Skript aber gestartet wurde. Wie mache ich das?

  • Skript beenden, wenn schon ein anderes mit seinem Namen läuft

    • P1xelfehler
    • 25. Februar 2016 um 12:18

    thx

  • Skript beenden, wenn schon ein anderes mit seinem Namen läuft

    • P1xelfehler
    • 25. Februar 2016 um 11:15

    Hallo,

    irgendwie stehe ich auf dem Schlauch... Das hier müsste doch das Skript beenden, wenn schon eines läuft oder? Aber es funktioniert nicht.


    Code
    If ProcessExists("Hilfsskript.exe") = 1 Then ;Beenden, falls schon ein Hilfsskript läuft!
       MsgBox(0,"","HALLO!")
       Exit
    EndIf

    Und ja, ich compiliere erst und starte die .exe. Das Programm steht auch als "Hilfsskript.exe" im Task Manager...

    Danke im Voraus

  • Excel-Modul löschen

    • P1xelfehler
    • 23. Februar 2016 um 09:20

    Habs rausgefunden!!!!

    Man muss es so machen, dann gehts:

    Code
    Global $oWorkbook = _Excel_BookAttach($Title,"Title")

    Hier nochmal der komplette Code (bisschen aufgeräumter):


    C
    #include <Excel.au3>
    #include <ExcelConstants.au3>
    Opt("WinTitleMatchMode", 2)
    Global $oExcel = _Excel_Open()
    Global $__goCOMErrorHandler = ObjEvent("AutoIt.Error", "_COMErrFunc")
    HotKeySet("{ESC}","_Beenden") ;ESC-Taste zum Beenden
    Local $Pfad = RegRead("HKEY_CURRENT_USER\Software\VB and VBA Program Settings\ProjektExcel\Andere","Ordnerpfad") ;Ordnerpfad aus Registry auslesen
    $Title = WinGetTitle("Microsoft Excel") ;Titel auslesen
    Loeschen()
    Importieren()
    
    
    Func _Beenden ()
       Exit
    EndFunc
    Func _COMErrFunc() ;Wenn ein Fehler auftritt...
       ;...nichts tun und mit Code fortfahren!
    EndFunc   ;==>Template_COMErrFunc
    Func Loeschen()
       Global $oWorkbook = _Excel_BookAttach($Title,"Title")
       $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("mdl_Neubau"))
       $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("mdl_Renovierung"))
       $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("mdl_Reparatur"))
       $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("mdl_Tabelle"))
       $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("mdl_Sortieren"))
       $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("FrmAnfangsdialog"))
       $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("FrmSortierenFehler"))
       $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("FrmTabellenAendern"))
    EndFunc
    Func Importieren()
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\mdl_Neubau.bas")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\mdl_Renovierung.bas")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\mdl_Reparatur.bas")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\mdl_Tabelle.bas")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\mdl_Sortieren.bas")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\FrmAnfangsdialog.frm")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\FrmSortierenFehler.frm")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\FrmTabellenAendern.frm")
    EndFunc
    Alles anzeigen
  • Excel-Modul löschen

    • P1xelfehler
    • 23. Februar 2016 um 08:40

    Hm... Es funktioniert weiterhin nur bei der ungespeicherten Mappe1.

    Code:

    C
    #include <Excel.au3>
    #include <ExcelConstants.au3>
    Opt("WinTitleMatchMode", 2)
    Global $oExcel = _Excel_Open()
    Global $__goCOMErrorHandler = ObjEvent("AutoIt.Error", "_COMErrFunc")
    Func _COMErrFunc() ;Wenn ein Fehler auftritt...
       ;...nichts tun und mit Code fortfahren!
       $a = 1
    EndFunc   ;==>Template_COMErrFunc
    ;Ordnerpfad aus Registry auslesen
    Local $Pfad = RegRead("HKEY_CURRENT_USER\Software\VB and VBA Program Settings\ProjektExcel\Andere","Ordnerpfad")
    $a = 0
    ;Titel auslesen
    $Title = WinGetTitle("Microsoft Excel")
    $Title = StringTrimLeft($Title,18)
    Global $oWorkbook = _Excel_BookAttach($Title)
    Loeschen()
    If $a = 1 Then
       $Title = StringTrimRight($Title,5)
       Global $oWorkbook = _Excel_BookAttach($Title)
       Loeschen()
    EndIf
    Importieren()
    
    
    Func Loeschen()
    $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("mdl_Neubau"))
    $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("mdl_Renovierung"))
    $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("mdl_Reparatur"))
    $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("mdl_Tabelle"))
    $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("mdl_Sortieren"))
    $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("FrmAnfangsdialog"))
    $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("FrmSortierenFehler"))
    $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("FrmTabellenAendern"))
    
    
    EndFunc
    
    
    Func Importieren()
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\mdl_Neubau.bas")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\mdl_Renovierung.bas")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\mdl_Reparatur.bas")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\mdl_Tabelle.bas")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\mdl_Sortieren.bas")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\FrmAnfangsdialog.frm")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\FrmSortierenFehler.frm")
       $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import ($Pfad & "\Module\FrmTabellenAendern.frm")
    EndFunc
    Alles anzeigen

    Gibt es hier eigentlich "nur" water im forum?^^

  • Excel-Modul löschen

    • P1xelfehler
    • 17. Februar 2016 um 16:54

    Nicht ganz:

    Wenn ich die Datei nicht gespeichert habe, geht es, da im Titel nur z.B. "Mappe1" steht

    Wenn ich allerdings eine gespeicherte Datei öffne, geht es nicht mehr, da im Titel "Mappe1.xlsx" steht. Rechts die Endung abschneiden hat seltsamerweise auch nichts gebracht. Ich prüfe morgen mal, ob es am Leerzeichen im Dateinamen liegt. Heute ist erstmal Feierabend ;)

  • Excel-Modul löschen

    • P1xelfehler
    • 17. Februar 2016 um 12:20

    Du bist ein Gott! :)

    Danke, funktioniert jetzt so wie ich es will! :):party::thumbup:

  • Excel-Modul löschen

    • P1xelfehler
    • 17. Februar 2016 um 12:11

    "C:\Users\peter\Documents\AutoIT\test 5.au3" (18) : ==> The requested action with this object has failed.:
    $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("Modul1"))
    $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject^ ERROR
    >Exit code: 1 Time: 0.3428

    Also, dass er das Modul nicht findet im Grunde.

  • Excel-Modul löschen

    • P1xelfehler
    • 17. Februar 2016 um 12:07

    So? Der Fehler kommt jedenfalls noch immer.

    Code
    Global $__goCOMErrorHandler = ObjEvent("AutoIt.Error", "_COMErrFunc")
    
    
       ;Löschen des Moduls
       $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("Modul1"))
       MsgBox(0,"","Das Modul wurde gelöscht.")
    
    
    Func Template_COMErrFunc()
        ; Do nothing special, just check @error after suspect functions.
    EndFunc   ;==>Template_COMErrFunc
    Alles anzeigen
  • Excel-Modul löschen

    • P1xelfehler
    • 17. Februar 2016 um 11:48

    v3.3.14.1

  • Excel-Modul löschen

    • P1xelfehler
    • 17. Februar 2016 um 11:36

    Ohne Abragen gibt es doch auch einen Fehler? Wie soll man den denn nicht abragen?^^

    Code
    #include <Excel.au3>
    Opt("WinTitleMatchMode", 2)
    
    
    Global $oExcel = _Excel_Open()
    
    
    $Title = WinGetTitle("Microsoft Excel")
    $Title = StringTrimLeft($Title,18)
    
    
    Global $oWorkbook = _Excel_BookAttach($Title)
    ;Import
    ;$oExcel.Application.VBE.ActiveVBProject.VBComponents.Import(@MyDocumentsDir & "\Modul1.bas")
    ;MsgBox(0,"","Ist es jetzt importiert??")
    
    
    ;Löschen des Moduls
    $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("Modul1"))
    MsgBox(0,"","Ist das Modul jetzt wieder gelöscht?")
    Alles anzeigen
  • Excel-Modul löschen

    • P1xelfehler
    • 17. Februar 2016 um 11:08

    hm...

    Kann ich auch machen, dass AutoIT die Fehler ignoriert? Sprich: Wenn das Modul noch nicht importiert ist, kann er es nicht löschen. Diesen Fehler soll er ignorieren.

    Das ganze dient dazu, dass wenn das Modul doppelt ist, es nicht gestartet werden kann. Also soll es vorher gelöscht werden.

  • Excel-Modul löschen

    • P1xelfehler
    • 17. Februar 2016 um 10:59

    Lol, hab es hingekriegt :D :D

    Code
    #include <Excel.au3>
    Opt("WinTitleMatchMode", 2)
    
    
    Global $oExcel = _Excel_Open()
    
    
    $Title = WinGetTitle("Microsoft Excel")
    $Title = StringTrimLeft($Title,18)
    
    
    Global $oWorkbook = _Excel_BookAttach($Title)
    ;Import
    $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import(@MyDocumentsDir & "\Modul1.bas")
    MsgBox(0,"","Ist es jetzt importiert??")
    
    
    ;Umbenennung des Moduls (hab nicht genau verstanden, warum man das vorher machen muss
    $oWorkbook.VBProject.VBComponents("Modul1").Name = "Test99"
    
    
    ;??? Er schreibt den Fehler in die Konsole, aber wie sehe ich das??
    ConsoleWrite(@error & @CRLF)
    
    
    ;Löschen des Moduls
    $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("Test99"))
    
    
    ;??? Er schreibt den Fehler in die Konsole, aber wie sehe ich das??
    ConsoleWrite(@error & @CRLF)
    
    
    MsgBox(0,"","Ist das Modul jetzt wieder gelöscht?")
    Alles anzeigen
  • Excel-Modul löschen

    • P1xelfehler
    • 17. Februar 2016 um 10:08
    Code
    #include <Excel.au3>
    Global $oExcel = _Excel_Open()
    Global $oWorkbook = _Excel_BookAttach("Excel")
    ;Import
    $oExcel.Application.VBE.ActiveVBProject.VBComponents.Import(@MyDocumentsDir & "\Modul1.bas")
    MsgBox(0,"","Ist es jetzt importiert??")
    
    
    ;Umbenennung des Moduls (hab nicht genau verstanden, warum man das vorher machen muss
    $oWorkbook.VBProject.VBComponents("Modul1").Name = "Test99"
    
    
    ;??? Er schreibt den Fehler in die Konsole, aber wie sehe ich das??
    ConsoleWrite(@error & @CRLF)
    
    
    ;Löschen des Moduls
    $oWorkbook.VBProject.VBComponents.Remove($oWorkbook.VBProject.VBComponents("Test99"))
    
    
    ;??? Er schreibt den Fehler in die Konsole, aber wie sehe ich das??
    ConsoleWrite(@error & @CRLF)
    
    
    MsgBox(0,"","Ist das Modul jetzt wieder gelöscht?")
    Alles anzeigen

    Importieren klappt schon mal. Beim Umbenennen (Zeile 9) kommt dann der Fehler:

    "C:\Users\peter\Documents\AutoIT\test 5.au3" (9) : ==> Variable must be of type "Object".:
    $oWorkbook.VBProject.VBComponents("Modul1").Name = "Test99"
    $oWorkbook^ ERROR
    >Exit code: 1 Time: 7.388

    Ach ja, und danke bis hier her schon mal für deine Hilfe :)

    Was will dieses "_Excel_BookAttach" denn als Wert haben? Den Namen des Workbooks? Also wie die Excel-Datei heißt? kann man das aus dem Fenstertitel auslesen und da einfügen?

  • Excel-Modul löschen

    • P1xelfehler
    • 16. Februar 2016 um 16:42

    Hab halt alles mögliche probiert und es geht einfach nicht. Kannst du mal ein bisschen rumprobieren, bitte, bis es klappt?

    Bin halt immer noch ein AutoIT Noob ;)

  • Excel-Modul löschen

    • P1xelfehler
    • 16. Februar 2016 um 16:33

    Irgendwie bekomme ich es nicht hin :(

  • Excel-Modul löschen

    • P1xelfehler
    • 15. Februar 2016 um 16:20

    Dann gibt es ein kleines Problem: Der Pfad ist immer ein anderer, also will ich die geöffnete Datei nehmen ... :D sorry^^

    Wenn nichts hilft, könnte man ja den Namen des Fensters auslesen und von da den Dateinamen ableiten.

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™