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. Ice-Tee

Beiträge von Ice-Tee

  • Fehler im AutoIt-wiki entdeckt

    • Ice-Tee
    • 14. Februar 2016 um 09:53

    Ach son 'S' sollte man immer in petto haben, falls hinten mal ein eines fehlt :)

  • NetzwerkSkript: Ist das mit AutoIt umsetzbar und/oder habe ich was vergessen

    • Ice-Tee
    • 14. Februar 2016 um 08:23

    MoinMoin,

    ja der ist wirklich gut und schnell. Nutzte für mal einen MalEbenScan in der Firma.

    Naja war erstmal ein grober Abriss was das Programm können sollte

    Gruss Ice-Tee

  • NetzwerkSkript: Ist das mit AutoIt umsetzbar und/oder habe ich was vergessen

    • Ice-Tee
    • 13. Februar 2016 um 00:49

    Thx für deine schnelle antwort...

    Ich hatte da mal was zusammen gebastelt Ich glaube das war der letzte Code, ansonsten aufm FirmenServer

    Spoiler anzeigen


    #include <Array.au3>

    Local $sRangeMin = "10.0.0.1"
    Local $sRangeMax = "10.255.255.254"
    Local $sIPAdress, $aIPRueckgabe[1]
    Local $iOkt1 = 0, $iOkt2 = 0, $iOkt3 = 0, $iOkt4 = 0
    Local $ms[1], $error = @error, $var
    Local $aProzess = ProcessList()
    Local $sGroesse = UBound($aProzess)
    $aRangeMin = StringSplit($sRangeMin, ".")
    $aRangeMax = StringSplit($sRangeMax, ".")

    _OktettDurchlauf($aRangeMin, $aRangeMax)

    ;~ ; Otett Durcklauf mit gültiger IP ins Array - Rückgabe
    Func _OktettDurchlauf($aRangeMin, $aRangeMax)
    For $iOkt1 = $aRangeMin[1] To $aRangeMax[1]
    If $aRangeMin[1] < $aRangeMax[1] Then
    $aRangeMax[2] = 255
    EndIf
    For $iOkt2 = $aRangeMin[2] To $aRangeMax[2]
    If $aRangeMin[2] < $aRangeMax[2] Then
    $aRangeMax[3] = 255
    EndIf
    For $iOkt3 = $aRangeMin[3] To $aRangeMax[3]
    If $aRangeMin[3] < $aRangeMax[3] Then
    $aRangeMax[4] = 255
    EndIf
    For $iOkt4 = $aRangeMin[4] To $aRangeMax[4]
    $sIPAdress = $iOkt1 & "." & $iOkt2 & "." & $iOkt3 & "." & $iOkt4
    _Ping($sIPAdress)
    #cs
    Select $var
    Case = 0
    ToolTip(@error)
    Case = 1
    _ArrayAdd($aIPRueckgabe, $sIPAdress)
    Case > 1
    _ArrayAdd($aIPRueckgabe, $sIPAdress)

    EndSelect
    #ce
    Next
    Next
    Next
    Next
    EndFunc ;==>_OktettDurchlauf

    _ArrayDisplay($aIPRueckgabe, "Info")
    _ArrayDisplay($ms, "MilliSekunden")

    Func _Ping($sIPAdress)
    $var = Ping($sIPAdress, 1)
    ;_DatenSammeln($var)
    Return $var
    ;MsgBox(0, "Hinweis", $var & "....." & $error)
    EndFunc ;==>_Ping

  • NetzwerkSkript: Ist das mit AutoIt umsetzbar und/oder habe ich was vergessen

    • Ice-Tee
    • 13. Februar 2016 um 00:19

    MoinMoin,

    so ich wollte mal ein privates Projekt starten. Nun hab ich mir mal eine kleine Gedächnisstütze geschrieben.
    Meine Frage an euch ist: kann man das mit AutoIt umsetzen und/oder hab ich was vergessen?

    Spoiler anzeigen


    - Suche nach allen IP’s (IP Scan…10.0.0.1 – 10.255.255.254)
    - Wurde eine IP gefunden erstelle ein neues Objekt (Kann AutoIt Objekte? Wenn nicht alternative?)
    Etabliere ClientSoftware (User:DomAdmin)

    ;ClientSoftware sollte können…

    - Frage ‚alle‘ Daten ab (MAC, Modell, Last User…)

    ;Wieder an Server

    - Vergleiche gewonnene Daten mit evt. vorhandenen Daten auf Basis der MAC-Adresse
    - Ist die MAC nicht mehr im SubNetz – kill den alten Eintrag.

    Sonst aktualisiere Daten

    - Frage Router/Switch nach dem Port auf dem die MAC antwortet. Füge es den zu speichernden Daten hinzu.
    - Speichere die Daten in ??? (Daten verschlüsseln)(*.csv, *.txt, *.db, *.xml, *.ini)
    - Hat User Email Account?

    Nein ..auf Exchange einen erstellen

    Und ..sonst

    Richte Outlook ein
    Und ..sonst
    Sende Daten an Email-Adresse

    - Nimm Daten und erstelle eine Grafik (von AD/DC über Switch über Router zum Client)
    - Wenn auf Grafik = {Klick} interagiere mit Client

    ;Weiteres nicht ausgeschlossen.

    ----- ACHTUNG: SpeicherMeduim -> Handy,Tab u.s.w. dürfen die ausgelesen werden, wenn nicht Firma?

    Ist eine Interaktion mit Cisco-ASA möglich?

  • Grafik an Mauszeiger anhängen..

    • Ice-Tee
    • 3. Februar 2016 um 05:14

    Thx für die Antwort autoBert.

    Das wird 'n Tag dauern bis ich da durch bin :)

    Sieht aber schon mal sehr cool aus

  • Grafik an Mauszeiger anhängen..

    • Ice-Tee
    • 2. Februar 2016 um 20:19

    MoinMoin,

    gibt es eine Möglichkeit, eine Grafik am Mauszeiger anzuhängen?

    Hintergrund: Ich möchte gerne ein ico, png oder so? Anklicken {Links}festhalten und diese frei durch die GUI ziehen. Loslassen {Links}klick. Pos-Daten stehen zur Abfrage bereit. Ich würde gern ein Objekt in der GUI erzeugen, welches ich ansprechen und verändern kann. GDIPlus scheint eine Lösung zu sein. Nur die Grafiken bekomme ich auch nicht bewegt.

    gruss Ice-Tee

  • AusbildungsnachweisBot

    • Ice-Tee
    • 31. Januar 2016 um 05:15

    Moin Alina,

    mit der Unterschrift hast recht.

    Zu meiner Zeit musste ich auch alles per Hand schreiben. Ich weiss das, ich musste 3 Monate beim Chef im Büro nachschreiben. Nebs Fachzeichnung und oder Fachbericht ;(

    mfg Ice-Tee

  • AusbildungsnachweisBot

    • Ice-Tee
    • 30. Januar 2016 um 00:49

    :) thx ..

    hängt hinten dran.

    Dateien

    Ausbildungsnachweis.rar 11,28 kB – 424 Downloads
  • AusbildungsnachweisBot

    • Ice-Tee
    • 29. Januar 2016 um 23:18

    Ach Meno... Ich bekomme die ExcelTabelle nicht hochgeladen. DatenFormat?

  • AusbildungsnachweisBot

    • Ice-Tee
    • 29. Januar 2016 um 22:59

    Moin Moin,

    um mich in AutoIt einzuarbeiten hab ich für unsere Auszubildende einen Ausbildungsnachweis Bot erstellt. Also ich muss dazu sagen ich bin kein Programmierer, ich bin FiSi und wollt AutoIt u.a. zur Unterstützung meines Deployment nehmen.
    Naja, um mich mit der Sprache auseinander zusetzen und nicht den ganzen Tag 'Hallo Welt' schreiben zu müssen, kann ich halt auf die Idee.

    Geht sicher schlanker und eleganter, aber der Skript läuft :)
    Der Skript erstellt zwei zusätzliche Dateien eine INI in der die persönlichen Daten gespeichert werden und eine TXT Datei. Die beinhaltet die Arbeiten. Ich stell mal alles hier rein. Würde mich über eure Meinung freuen

    AutoIt
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_Comment=Datei zum automatischen erstellen von Ausbildungsnachweisen
    #AutoIt3Wrapper_Res_Fileversion=0.1
    #AutoIt3Wrapper_Res_LegalCopyright=Andreas Urbschat
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Run_Tidy=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    
    #include <Excel.au3>
    #include <ExcelConstants.au3>
    #include <Array.au3>
    #include <MsgBoxConstants.au3>
    #include <file.au3>
    #include <ButtonConstants.au3>
    #include <DateTimeConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Date.au3>
    #include <GUIDateTimePicker.au3>
    
    
    Global $Array[10]
    Global $sExcelblock, $s, $Excelfind, $ExcelDelete, $Excel
    Local $oExcel = _Excel_Open()
    If @error Then Exit MsgBox(0, "Fehler", "Excel Objekt kann nicht erstellt werden")
    Local $aDatei, $i, $sWert, $iRandom, $q, $aPruefen[0], $iTage, $DateTime, $aDatumHeute
    Local $iAbNr
    Local $bUnterschrift = @ScriptDir & "\Unterschrift.jpg"
    Local $sFilePath = @ScriptDir & "\Taetigkeiten.txt"
    Local $sExcelDatei = @ScriptDir & "\Ausbildungsnachweis.xlsx"
    Local $sINIDatei = @ScriptDir & "\Ausbildungsnachweis.ini"
    Local $iZeilenanfang, $iZeilenende
    
    
    ; Erstellt mit Koda, ging schneller und war schneller was Optik angeht
    $Ausbuldungsnachweis = GUICreate("Ausbuldungsnachweis Bot", 1035, 470, 194, 126)
    $Date1 = GUICtrlCreateMonthCal("", 256, 192, 257, 164, 0);GUICtrlCreateDate
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    $Label1 = GUICtrlCreateLabel("ab Datum:", 16, 256, 237, 17)
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    $Name = GUICtrlCreateInput("", 256, 40, 257, 24)
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("Name:", 16, 40, 235, 17)
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    $Firma = GUICtrlCreateInput("", 256, 76, 257, 24)
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("Praktikum bei der Firma:", 16, 80, 235, 17)
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    $Menge = GUICtrlCreateInput("", 256, 112, 49, 24, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER))
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    $Label4 = GUICtrlCreateLabel("wie viele Ausbildungsnachweise", 16, 120, 235, 17)
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    $Taetigkeiten = GUICtrlCreateEdit(FileRead($sFilePath), 520, 40, 489, 385)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label5 = GUICtrlCreateLabel("anschliessend Drucken", 16, 368, 144, 20)
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    $AusbNr = GUICtrlCreateInput("", 256, 152, 49, 24, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER))
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    $Label6 = GUICtrlCreateLabel("ab Ausbildungsnachweisnummer", 16, 160, 235, 17)
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    $Drucken = GUICtrlCreateCheckbox("Drucken", 256, 368, 17, 33)
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    $OK = GUICtrlCreateButton("OK", 8, 408, 177, 41)
    $Ende = GUICtrlCreateButton("Beenden", 256, 408, 177, 41)
    GUISetState(@SW_SHOW)
    
    
    _Voreinstellung()
    _GUIAuslesen()
    _ExcelAnzahl()
    MsgBox(0, "Beenden", "Programm wird jetzt beendet")
    _Excel_Close($oExcel, Default, True)
    
    
    #cs
    Diese Funktion nimmt aus der GUI die Anzahl der zu erstellenden
    Ausbildungsnachweise und erstellt die entsprechende Menge
    #ce
    Func _ExcelAnzahl()
    	For $i = 1 To GUICtrlRead($Menge)
    		_neuesExcelSheet()
    		_AktivitaetenWoche()
    		_ExcelBefuellen()
    		If (GUICtrlRead($Drucken)) = $GUI_CHECKED Then _Drucken($oExcel, $Excel)
    		$DateTime = @MDAY & @MON & @YEAR & "-" & @HOUR & @MIN & @SEC
    		_ExcelSaveAsEX($oExcel, "xlsx", @ScriptDir & "\" & $DateTime)
    		$NewDate = _DateAdd('d', 7, GUICtrlRead($Date1))
    		GUICtrlSetData($Date1, $NewDate)
    		GUICtrlSetData($AusbNr, GUICtrlRead($AusbNr) + 1)
    		GUISetState(@SW_SHOW)
    	Next
    EndFunc   ;==>_ExcelAnzahl
    
    
    #cs
    Erstellt einen neuen ExcelSheet
    #ce
    Func _neuesExcelSheet()
    	Global $Excel = _Excel_BookOpen($oExcel, $sExcelDatei)
    	Return
    EndFunc   ;==>_neuesExcelSheet
    
    
    #cs
    Jedes Feld der GUI wird ausgelesen. Wenn ein ein Feld nicht ausgefüllt wurde kommt
    eine entsprechende Meldung
    #ce
    Func _GUIAuslesen()
    	While 1
    		$msg = GUIGetMsg()
    		Select
    			Case $msg = $OK
    				If GUICtrlRead($Name) = "" Then
    					MsgBox(0, "Name?", "Deine Name fehlt!")
    				EndIf
    				If GUICtrlRead($Firma) = "" Then
    					MsgBox(0, "Firma?", "Deine Firma fehlt!")
    				EndIf
    				If GUICtrlRead($Menge) = "" Then
    					MsgBox(0, "Menge?", "Bitte angeben wieviele Ausbilgungsnachweise erstellt werden sollen!")
    				EndIf
    				If GUICtrlRead($Taetigkeiten) = "" Then
    					MsgBox(0, "Taetigkeiten?", "Es sind keine Taetigkeiten vorhanden!")
    				EndIf
    				If (GUICtrlRead($Drucken)) <> $GUI_CHECKED Then
    					MsgBox(0, "Drucken?", "Die Ausbildungsnachweise werden nur gespeichert nicht gedruckt!")
    				EndIf
    				_GUIDatenSpeichern()
    				ExitLoop
    			Case $msg = $GUI_EVENT_CLOSE
    				MsgBox(0, "GUI Event", "Du hast auf CLOSE geklickt! Programm wird beendet...")
    				_GUIDatenSpeichern()
    				_Ende()
    			Case $msg = $Ende
    				MsgBox(0, "GUI Event", "Du hast auf CLOSE geklickt! Programm wird beendet...")
    				_GUIDatenSpeichern()
    				_Ende()
    		EndSelect
    	WEnd
    EndFunc   ;==>_GUIAuslesen
    
    
    #cs
    Stellt zufällig 4-6 Tätigkeiten aus dem GUIEdit zusammen.
    entfernt doppelte Einträge aus dem Arbeitstag und stellt sie als ExcelBlock zur Verfügung.
    Hintergrund: Die Arbeitswoche beträgt bei uns 5 Arbeitstage, nun soll ja nicht jeder Tag gleich aussehen.
    Die Ausbildungsnachweisvorlage der IHK sieht max. 6 Einträge je Arbeitstag vor.
    Die Tätigkeiten sollten min. 20 verschiedene beinhalten, da die Zusammenstellung sonst zulange dauern würde.
    Tätigkeiten < = 4 führen zwangsweise zu einer Endlosschleife
    #ce
    Func _AktivitaetenWoche()
    	For $iTage = 1 To 5 ;Anzahl der Arbeitstage
    		;
    		For $i = 0 To $s ;Jeder Eintrag das Array in der Vorherigenschleife wird gelöscht
    			_ArrayDelete($aPruefen, 0)
    		Next
    		$sWert = ""
    		$s = 0
    		$q = ""
    		$iRandom = ""
    
    
    		_FileReadToArray($sFilePath, $aDatei) ;Datei in Array einlesen
    		_ArrayDelete($aDatei, 0)
    		$sWert = UBound($aDatei) ;Bestimmen wie gross das Array ist
    		$s = Random(4, 6, 1) ;$Pruefen soll zwischen 4 und 6 Eintraege haben
    
    
    		;Zufaellig Eintraege in ein neues Array einfuegen
    		Do
    			$iRandom = Random(0, $sWert, 1) - 1
    			If $iRandom = -1 Then $iRandom = 0
    			$q = $aDatei[$iRandom]
    			_ArrayDelete($aPruefen, _ArraySearch($aPruefen, $q, 0, 0)) ;Loescht doppelten Eintrag
    			_ArrayAdd($aPruefen, $q) ;fuegt den neuen Eintrag hinzu
    
    
    		Until UBound($aPruefen) = $s
    		_NaechtenExcelBlockBerechen($s, $iTage)
    		_ExcelBefuellen()
    	Next
    EndFunc   ;==>_AktivitaetenWoche
    
    
    #cs
    	Berechnet den nächsten ExcelBlock.
    	Es wird davon ausgegangen, dass es unterschiedliche 6 Arbeiten am Tag gibt.
    #ce
    Func _NaechtenExcelBlockBerechen($s, $iTage)
    	Select ;sollte aus irgend einem Grund $iTage(Arbeitswoche) <1 oder >6 sein wird alles auf 0 gesetzt
    		Case $iTage < 1
    			$iZeilenanfang = 0
    			$iZeilenende = 0
    		Case $iTage > 6
    			$iZeilenanfang = 0
    			$iZeilenende = 0
    	EndSelect
    	$iZeilenanfang = $iTage * 6
    	$iZeilenende = $iZeilenanfang + $s - 1
    	$sExcelblock = "B" & $iZeilenanfang & ":B" & $iZeilenende
    	Return $sExcelblock
    EndFunc   ;==>_NaechtenExcelBlockBerechen
    
    
    
    
    Func _ExcelBefuellen()
    	Local $sStyle = "yyyy"
    	_Excel_RangeWrite($Excel, $Excel.Activesheet, GUICtrlRead($Name), "E1:E1")
    	_Excel_RangeWrite($Excel, $Excel.Activesheet, GUICtrlRead($Firma), "C2:C2")
    	_Excel_RangeWrite($Excel, $Excel.Activesheet, GUICtrlRead($Date1), "C3:C3")
    	_Excel_RangeWrite($Excel, $Excel.Activesheet, GUICtrlRead($AusbNr), "C1:C1")
    	;_Excel_RangeWrite($Excel, $Excel.Activesheet, $bUnterschrift, "Q32:Q32")
    	_Excel_RangeWrite($Excel, $Excel.Activesheet, $aPruefen, $sExcelblock) ;$sExcelblock) ; der Eintrag von $aPruefen wird in die Exceltabelle geschrieben
    EndFunc   ;==>_ExcelBefuellen
    
    
    Func _Voreinstellung()
    	If FileExists($sINIDatei) Then
    		GUICtrlSetData($Name, IniRead($sINIDatei, "Name", "Name", ""))
    		GUICtrlSetData($Firma, IniRead($sINIDatei, "Firma", "Firma", ""))
    		GUICtrlSetData($Menge, IniRead($sINIDatei, "Menge", "Menge", "1"))
    		GUICtrlSetData($AusbNr, IniRead($sINIDatei, "AusbNr", "AusbNr", ""))
    		GUICtrlSetData($Drucken, IniRead($sINIDatei, "Drucken", "Drucken", $GUI_CHECKED))
    		GUICtrlSetData($Date1, IniRead($sINIDatei, "Datum", "Datum", ""))
    		GUISetState(@SW_SHOW)
    	Else
    		_GUIDatenSpeichern()
    	EndIf
    EndFunc   ;==>_Voreinstellung
    
    
    Func _GUIDatenSpeichern()
    	IniWrite($sINIDatei, "Name", "Name", GUICtrlRead($Name))
    	IniWrite($sINIDatei, "Firma", "Firma", GUICtrlRead($Firma))
    	IniWrite($sINIDatei, "Menge", "Menge", GUICtrlRead($Menge))
    	IniWrite($sINIDatei, "AusbNr", "AusbNr", GUICtrlRead($AusbNr) + 1)
    	IniWrite($sINIDatei, "Drucken", "Drucken", GUICtrlRead($Drucken))
    	IniWrite($sINIDatei, "Datum", "Datum", GUICtrlRead($Date1))
    	FileDelete($sFilePath) ; Soll verhindern, dass eventuell doppelte Daten gespeichert werden
    	FileWrite($sFilePath, GUICtrlRead($Taetigkeiten))
    EndFunc   ;==>_GUIDatenSpeichern
    
    
    ;Drucken des aktuellen ExcelSheets
    Func _Drucken($oExcel, $Excel)
    	_Excel_Print($oExcel, $Excel, 1)
    EndFunc   ;==>_Drucken
    
    
    
    
    #cs
    Diese Funktion hab ich mir geklaut :)
    Es gab Probleme mit dem speichern der ExcelDateien
    An dieser Stelle DANKE TheLuBu
    #ce
    
    
    
    
    ; Function Name:   _ExcelSaveAsEX($oExcel, $Fileformat, $NewFilepath, $Close = True)
    ; Description:     Speichert eine Exceldatei in einem bestimmten Format ab
    ; Parameter(s):    $oExcel       Ein Excelobject, wie es von _ExcelbookOpen oder _ExcelbookNew zurückgegeben wird
    ;                  $Fileformat   Der Dateityp, in dem gespeichert werden soll (xlsx, xlsb, xlsm, xls, csv, txt, prn)
    ;                  $NewFilepath  Speicherort und Dateiname der neuen Datei
    ;                  $Close = True Soll nach dem Speichern das Objekt geschlossen werden? (Standard = True)
    ; Return Value(s): Erfolg  Gibt 1 zurück
    ;                  Fehler      @error  1 - $oExcel ist kein Objekt
    ;                                      2 - $Fileformat ist keine bekannte Dateiendung oder Formatnummer
    ; Author(s):       TheLuBu (LuBu@veytal.com)
    ; Copyright:       TheLuBu (LuBu@veytal.com)
    ;===============================================================================
    Func _ExcelSaveAsEX($oExcel, $Fileformat, $NewFilepath, $Close = False)
    	If Not IsObj($oExcel) Then Return SetError(1, 0, 0)
    	Switch $Fileformat
    		Case 51, "xlsx", ".xlsx"
    			$Fileformat = 51
    		Case 50, "xlsb", ".xlsb"
    			$Fileformat = 50
    		Case 52, "xlsm", ".xlsm"
    			$Fileformat = 52
    		Case 6, "csv", ".csv"
    			$Fileformat = 6
    		Case -4158, "txt", ".txt"
    			$Fileformat = -4158
    		Case 36, "prn", ".prn"
    			$Fileformat = 36
    		Case 56, "xls", ".xls"
    			$Fileformat = 56
    		Case Else
    			Return SetError(2, 0, 0)
    	EndSwitch
    	With $oExcel
    		.Application.DisplayAlerts = False ; Schaltet Fehlermeldungen bei Excel aus
    		.ActiveWorkBook.SaveAs($NewFilepath, $Fileformat)
    		If $Close Then
    			.ActiveWorkbook.Close ; Schließt die Tabelle
    			.Quit ; Schließt das Workbook
    		EndIf
    	EndWith
    	Return 1
    EndFunc   ;==>_ExcelSaveAsEX
    
    
    Func _Ende()
    	While 1
    		Exit
    	WEnd
    EndFunc   ;==>_Ende
    Alles anzeigen

    Dateien

    Teatigkeiten.txt 235 Byte – 447 Downloads
  • 2-3D Array per Schleife befüllen

    • Ice-Tee
    • 14. Januar 2016 um 20:53

    MoinMoin,

    Ja also 3D Array war 'n bisschen viel, wobei mir das gut zu passe kommen würde. 1D finde ich arg wenig. Könnte ich dann ja auch alles in eine *.txt schaufeln. Also 2D :) Array[n][y]. Nun muss ich mir noch Gedanken über die Range machen .. zu scannen ist 10.10.21.xy - 192.168.2.255 * gefühlte 100 Prozesse (Das nenn ich mal ne Hausnummer) :) Ich werde wohl alle Nullen killen, auch wenn sie in der AD vorhanden sind. Wollte das nur möglichst neutral halten, damit andere den Skript auch benutzen können ohne grosse Änderungen. Könnte sonst auch 10.10.79.0 -192.168.1.255 ausklammern :)

    Thx alpines für den Chat gestern abend.

    Gruss

    Ice-Tee

  • 2-3D Array per Schleife befüllen

    • Ice-Tee
    • 13. Januar 2016 um 21:15

    Hi AutoIt . Gruppe,

    ich hab folgendes Problem. Ich möchte gerne wissen, welchen Status die Clients einer Range haben .
    ---snipp--- Ping---
    Wenn die Funktion scheitert(also 0 zurückgibt), enthält @error weitere Informationen:
    1 = Der Computer ist offline
    2 = Der Computer ist nicht erreichbar
    3 = Falsche Adresse
    4 = Andere Fehler
    ---snippEnd ---Ping---

    sollte in etwa so aus sehn
    Array[1][1][1] ;[1] einfach nur ne Zahl
    10.10.21.130 1 = Der Client ist offline nur so
    10.10.21.131 3 = Falsche Adresse hast nix
    10.10.21.132 Client online ein Beispiel
    .
    .
    .

    Den Ping bekomm ich so hin s.Spoiler

    Hat jemand einen Gedankenansatz. Ich bekomm die 2 / 3 Dimension nicht hin.

    Spoiler anzeigen


    #include <Array.au3>

    Local $sRangeMin = "10.10.21.130"
    Local $sRangeMax = "10.10.21.200"
    Local $sIPAdress, $aIPRueckgabe[1][1]
    Local $iOkt1 = 0, $iOkt2 = 0, $iOkt3 = 0, $iOkt4 = 0

    $aRangeMin = StringSplit($sRangeMin, ".")
    $aRangeMax = StringSplit($sRangeMax, ".")

    _OktettDurchlauf($aRangeMin, $aRangeMax)


    Func _OktettDurchlauf($aRangeMin, $aRangeMax)
    For $iOkt1 = $aRangeMin[1] To $aRangeMax[1]
    If $aRangeMin[1] < $aRangeMax[1] Then
    $aRangeMax[2] = 255
    EndIf
    For $iOkt2 = $aRangeMin[2] To $aRangeMax[2]
    If $aRangeMin[2] < $aRangeMax[2] Then
    $aRangeMax[3] = 255
    EndIf
    For $iOkt3 = $aRangeMin[3] To $aRangeMax[3]
    If $aRangeMin[3] < $aRangeMax[3] Then
    $aRangeMax[4] = 255
    EndIf
    For $iOkt4 = $aRangeMin[4] To $aRangeMax[4]
    $sIPAdress = $iOkt1 & "." & $iOkt2 & "." & $iOkt3 & "." & $iOkt4
    _Ping($sIPAdress)
    _ArrayAdd($aIPRueckgabe, $sIPAdress)
    MsgBox(0, "Hinweis", @error)
    Next
    Next
    Next
    Next
    EndFunc ;==>_OktettDurchlauf

    _ArrayDisplay($aIPRueckgabe, "Info")


    Func _Ping($sIPAdress)
    Ping($sIPAdress, 250)
    EndFunc ;==>_Ping

  • Excel und Autoit Programm für Produkte

    • Ice-Tee
    • 10. Januar 2016 um 12:14

    Wie Lange umgehend so dauert :)

  • Problem mit _Excel_RangeDelete()

    • Ice-Tee
    • 27. Dezember 2015 um 09:33

    Hi water,

    thx für dein Tipp. Hab es nun dadurch gelöst, dass ich das Blockende um eins gekürzt habe:

    $iZeilenende = $iZeilenanfang + $s - 1

    :) lustig ... und ich hab immer noch nicht verstanden warum. Aber es geht.

    Thx
    Ice-Tee

  • Problem mit _Excel_RangeDelete()

    • Ice-Tee
    • 27. Dezember 2015 um 09:32

    Hi water,

    thx für dein Tipp. Hab es nun dadurch gelöst, dass ich das Blockende um eins gekürzt habe:

    $iZeilenende = $iZeilenanfang + $s - 1

    :) lustig ... und ich hab immer noch nicht verstanden warum. Aber es geht.

    Thx
    Ice-Tee

  • Colormixer

    • Ice-Tee
    • 26. Dezember 2015 um 14:15

    Hi BugFix,

    coole Sache. Schaut richtig gut aus..


    Gruß
    Ice-Tee

  • Problem mit _Excel_RangeDelete()

    • Ice-Tee
    • 26. Dezember 2015 um 11:51

    MoinMoin...

    ich hab ein Problem mit _Excel_RangeDelete(). Naja das eigentliche Problem liegt daran, dass beim Einfügen durch ein Array immer als letzter Eintrag #NV geschrieben wird.
    Nun versuche ich diesen Eintrag wieder zu löschen mittels _Excel_RangeDelete($sExcelDatei, _Excel_RangeFind($sExcelDatei, "#NV")). Leider ohne Ergebnis.
    Ich bekomme immer '0' zurück geliefert.

    Kennt ihr ne Möglichkeit #NV schnell zu löschen?

    Das Programm hab ich mal in einen Spoiler angehängt. (Soll mal ne Arbeitserleichterung für unsere Azubis werden)

    Danke und Gruß

    Ice-Tee

    Spoiler anzeigen


    AutoIt
    ; Script Start
    #include <Excel.au3>
    #include <ExcelConstants.au3>
    #include <Array.au3>
    #include <MsgBoxConstants.au3>
    #include <file.au3>
    Global $Array[10]
    Global $sExcelblock, $s, $Excelfind, $ExcelDelete
    Local $oExcel = _Excel_Open()
    If @error Then Exit MsgBox(0, "Fehler", "Excel Objekt kann nicht erstellt werden")
    Local $aDatei, $i, $sWert, $iRandom, $q, $aPruefen[0], $iTage, $DateTime
    Local $sFilePath = @ScriptDir & "\test.txt"
    Local $sExcelDatei = @ScriptDir & "\Ausbildungsnachweis.xlsx"
    Local $Excel = _Excel_BookOpen($oExcel, $sExcelDatei)
    Local $iZeilenanfang, $iZeilenende
    
    
    For $iTage = 1 To 5 ;Anzahl der Arbeitstage
    	;
    	For $i = 0 To $s ;Jeder Eintrag das Array un der Vorherigenschleife wird gelöscht
    		_ArrayDelete($aPruefen, $i + 1)
    	Next
    	$sWert = ""
    	$s = 0
    	$q = ""
    	$iRandom = ""
    
    
    	_FileReadToArray($sFilePath, $aDatei) ;Datei in Array einlesen
    	$sWert = UBound($aDatei) ;Bestimmen wie gross das Array ist
    	$s = Random(4, 6, 1) ;$Pruefen soll zwischen 4 und 6 Eintr�ge haben
    
    
    	;Zufaellig Eintraege in ein neues Array einfuegen
    	Do
    		$iRandom = Random(0, $sWert, 1) - 1
    		If $iRandom = -1 Then $iRandom = 0
    		$q = $aDatei[$iRandom]
    		_ArrayDelete($aPruefen, _ArraySearch($aPruefen, $q, 0, 0)) ;Loescht doppelten Eintrag
    		_ArrayAdd($aPruefen, $q) ;fuegt den neuen Eintrag hinzu
    	Until UBound($aPruefen) = $s
    
    
    	; Excel-Part von B6 bis B35 befüllen und dann speichern. Bestehendes Dokument als Vorlage nehemen
    	; und
    	; Datum und Zeit generieren
    	$DateTime = @MDAY & @MON & @YEAR & "-" & @HOUR & @MIN & @SEC
    
    
    	_NaechtenExcelBlockBerechen($s, $iTage)
    	_Excel_RangeWrite($Excel, $Excel.Activesheet, $aPruefen, $sExcelblock) ;$sExcelblock) ; der Eintrag von $aPruefen wird in die Exceltabelle geschrieben
    	_Excel_RangeDelete($sExcelDatei, _Excel_RangeFind($sExcelDatei, "#NV")) 
    	; If @error Then MsgBox(0, "Error _Excel_BookSaveAs", "@error= " & @error & @CRLF & "@extended= " & @extended)
    Next
    _ExcelSaveAsEX($oExcel, "xlsx", @ScriptDir & "\" & $DateTime)
    _Excel_BookClose($Excel)
    Sleep(2000)
    MsgBox(0, "Beenden", "Programm wird jetzt beendet")
    _Excel_Close($oExcel, Default, True)
    
    
    Func _NaechtenExcelBlockBerechen($s, $iTage)
    
    
    	Select
    		Case $iTage < 1
    			$iZeilenanfang = 0
    			$iZeilenende = 0
    		Case $iTage > 6
    			$iZeilenanfang = 0
    			$iZeilenende = 0
    	EndSelect
    
    
    	$iZeilenanfang = $iTage * 6
    	$iZeilenende = $iZeilenanfang + $s
    	$sExcelblock = "B" & $iZeilenanfang & ":B" & $iZeilenende
    
    
    	Return $sExcelblock
    EndFunc   ;==>_NaechtenExcelBlockBerechen
    
    
    
    
    ; Function Name:   _ExcelSaveAsEX($oExcel, $Fileformat, $NewFilepath, $Close = True)
    ; Description:     Speichert eine Exceldatei in einem bestimmten Format ab
    ; Parameter(s):    $oExcel       Ein Excelobject, wie es von _ExcelbookOpen oder _ExcelbookNew zurückgegeben wird
    ;                  $Fileformat   Der Dateityp, in dem gespeichert werden soll (xlsx, xlsb, xlsm, xls, csv, txt, prn)
    ;                  $NewFilepath  Speicherort und Dateiname der neuen Datei
    ;                  $Close = True Soll nach dem Speichern das Objekt geschlossen werden? (Standard = True)
    ; Return Value(s): Erfolg  Gibt 1 zurück
    ;                  Fehler      @error  1 - $oExcel ist kein Objekt
    ;                                      2 - $Fileformat ist keine bekannte Dateiendung oder Formatnummer
    ; Author(s):       TheLuBu (LuBu@veytal.com)
    ; Copyright:       TheLuBu (LuBu@veytal.com)
    ;===============================================================================
    Func _ExcelSaveAsEX($oExcel, $Fileformat, $NewFilepath, $Close = False)
    	If Not IsObj($oExcel) Then Return SetError(1, 0, 0)
    	Switch $Fileformat
    		Case 51, "xlsx", ".xlsx"
    			$Fileformat = 51
    		Case 50, "xlsb", ".xlsb"
    			$Fileformat = 50
    		Case 52, "xlsm", ".xlsm"
    			$Fileformat = 52
    		Case 6, "csv", ".csv"
    			$Fileformat = 6
    		Case -4158, "txt", ".txt"
    			$Fileformat = -4158
    		Case 36, "prn", ".prn"
    			$Fileformat = 36
    		Case 56, "xls", ".xls"
    			$Fileformat = 56
    		Case Else
    			Return SetError(2, 0, 0)
    	EndSwitch
    	With $oExcel
    		.Application.DisplayAlerts = False ; Schaltet Fehlermeldungen bei Excel aus
    		.ActiveWorkBook.SaveAs($NewFilepath, $Fileformat)
    		If $Close Then
    			.ActiveWorkbook.Close ; Schließt die Tabelle
    			.Quit ; Schließt das Workbook
    		EndIf
    	EndWith
    	Return 1
    EndFunc   ;==>_ExcelSaveAsEX
    Alles anzeigen


  • Ich glaub ich bin blind

    • Ice-Tee
    • 22. Dezember 2015 um 17:30

    MoinMoin,

    danke erstmal für den Tipp. Habe das Problem wie folgt gelöst Geht bestimmt eleganter funzt aber:
    #include <file.au3>
    #include <array.au3>
    Local $aDatei,$i , $sWert, $sFilePath = @ScriptDir & "\test.txt", $sTestWert, $q
    Local $aPruefen[0]
    _FileReadToArray($sFilePath, $aDatei) ;Datei in Array einlesen

    $sWert = UBound($aDatei) ;Bestimmen wie groß das Array ist

    ;Zufällig 5 Einträge in ein neues Array einfügen
    For $i = 1 To 5
    $sTestWert = Random(0, $sWert, 1)
    _ArrayAdd($aPruefen, $sTestWert)
    Next

    Gruss Ice-Tee

    PS: alpines hast Recht blöder Titel.

  • Ich glaub ich bin blind

    • Ice-Tee
    • 20. Dezember 2015 um 22:21

    Moin Ihr Alle,

    Da fang ich langsam mit Array's und Random an und ... voll reingegriffen..
    Was Soll dieses Skript machen. Es soll die Datei \Test.txt in ein Array laden
    Dann sollen 5 zufällige Zeilen des Array in ein anderes geschrieben werden.
    (später folgt noch, dass doppelte Einträge aus dem zweiten Array gelöscht werden sollen und am Ende sollten 5 zufällig zusammengestellte Einträge im Array sein)

    Schon der erste 'Test' hat mit einen Fehler ausgegeben den ich nicht verstehe:
    "C:\Users\andi2\Documents\File_lesen.au3" (12) : ==> Subscript used on non-accessible variable.:
    $aPruefen[$i] = $TestWert
    $aPruefen^ ERROR

    Ich hab die Variable doch bekannt gegeben?

    #include <file.au3>
    #include <array.au3>

    Local $aDatei, $aPruefen, $sWert, $sFilePath = @ScriptDir & "\test.txt", $sTestWert
    Local $i

    _FileReadToArray($sFilePath, $aDatei) ;Datei in Array einlesen

    $sWert = UBound($aDatei) ;Bestimmen wie groß das Array ist

    For $i = 1 To 5
    $sTestWert = Random(0, $sWert, 1)
    $aPruefen[$i] = $sTestWert
    Next

    Wenn ihr einen Tipp hättet ...Danke

    Ice-Tee

  • ImageSearch - Verständnisproblem

    • Ice-Tee
    • 17. Dezember 2015 um 14:58

    OK ... Danke alpines. :thumbup:

    vielleicht sollte das TUT angepasst werden. :rock:

    regsvr32 wollte nicht wirklich ... ich liefer sie mit ....

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™