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

Beiträge von DasIch

  • Javascript? Javascript.

    • DasIch
    • 7. Juli 2016 um 16:44

    Xorianator: Ja, richtig aufgepasst. Hier der Ablauf.

    - User meldet über Webinterface ein Problem.
    - Dieses läuft bei uns im Ticketsystem ein (Sharepoint Seite) und wir haben die "Bearbeiter-Ansicht".
    - Wir tragen die Lösung in das Antwortfeld ein und
    - schließen das Ticket über ein formsubmit

    Realisierung mit Autoit ist sicher möglich, allerdings bin ich in autoit schon fit und da wäre es "nichts neues" das damit zu bewerkstelligen. Deshalb möchte ich es in Javascript machen :)

    Danke an alle Antworten bisher und entschuldigt die Verwirrung.

  • Javascript? Javascript.

    • DasIch
    • 7. Juli 2016 um 12:21

    Dennoch müsste ich die .js Dateien dann alle erstmal doppelklicken, um sie auszuführen. Da würden sie dann auch in einem neuen Tab ausgeführt werden statt einfach nur das Script. Zudem wüsste ich nicht, wie ich das richtige Browserfenster ansteuern kann (habe meist mehrfach Firefox gleichzeitig offen). Da kann ich auch bei unseren jetzigen .txt-Dateien bleiben. Ist dann im Prinzip genauso umständlich ^^

    Ich will unser Ticketsystem insoweit automatisieren, dass wir für Standardprobleme a la "citrix funktioniert nicht, eingeschränkte Konnektivität" o.ä. erstmal unsere Standardantworten zurückschicken können und das bequem per Tastendruck und ohne Copy & Paste. Und das ist ein gutes Thema zum Lernen der Sprache.

    Was ist ein x-Y Problem?

  • Javascript? Javascript.

    • DasIch
    • 7. Juli 2016 um 11:34

    Zum Beispiel hier:
    http://www.webworker.club/javascript-ler…rammiersprache/

    Hier wird Code geschrieben und noch in der selben Datei auch das script hinterlegt. Wenn ich das auf unserer Testseite allerdings mache, dann muss ich das Script ja über den Browser aufrufen, wodurch dieses dann ja im falschen Fenster ausgeführt wird. Deshalb frage ich mich, wie ich das anstelle, dass er das im aktuellen Fenster macht?

    Und warum sollte ich das nicht dürfen wollen? Wenn mein Teamleiter mich fragt ob ich das machen mag, soll ich dann sagen nö? Wenn es mich eigentlich interessiert javascript zu lernen?

    Nachtrag@Aspirin: Ja, Greasemonkey habe ich auch getestet, aber das Problem ist, dass dieser das bei einer bestimmten Website macht. Ich bräuchte es quasi "auf Knopfdruck", da wir ja verschiedene Templates haben für verschieden Standardantworten und diese nicht immer zum Einsatz kommen.

  • Javascript? Javascript.

    • DasIch
    • 7. Juli 2016 um 11:16

    Hallo zusammen,

    ich plane, nachdem ich recht fit mit Autoit bin, nun zusätzlich auch Javascript zu lernen. Hat hier jemand gute Tutorials die er empfehlen könnte? In keinem Tutorial das ich bisher finden konnte wird gezeigt, wie man mit Javascript Websites automatisiert, sondern immer nur wie man serverseitig Javascript ausführt. Es ist aber für mein Übungsprojekt so, dass ich die (test-) Intranetseite unserer Firma benutzen darf zum Lernen und folglich das script lokal ausgeführt wird und die Website so bearbeitet. Das soll deshalb so sein, da wir planen unser Ticketsystem, welches über eine Website funktioniert, mit Vorlagen schließen zu können bei Standardthemen.

    Ich habe mir mal iMacros angeschaut, weil ein Kollege meinte damit ließe sich vieles automatisieren und (eigentlich) auch javascript Code ausführen. Das ist aber nicht so, iMacros bringt immer nur Fehlermeldungen wenn ich das Script ausführen mag (in Firebug getestet und dort funktioniert es, also ist der Code ansich richtig..)

    Vielleicht kann mir jemand helfen.

    Wenn nicht, dann nicht :P

    LG,
    der Robert

  • [Gelöst] Aktuelle ff.au3

    • DasIch
    • 15. April 2016 um 21:22

    Hey AutoBert und sorry für die verspätete Antwort!

    Die au3 hat tadellos funktioniert. Ich brauchte wie gesagt nur die o.g. drei Funktionen. Aber danke auf jeden Fall nochmals für deine hilfreiche Antwort und die Auskunft zu dem Fehler in der Datei :)

  • [Gelöst] Aktuelle ff.au3

    • DasIch
    • 15. April 2016 um 13:59

    Super, lieben Dank! Ich werde berichten. Ich brauche nur _FFConnect(), _FFFormSubmit() und _FFSetValue(), von daher wirds schon passen. Zumindest für meine Bedürfnisse.

  • [Gelöst] Aktuelle ff.au3

    • DasIch
    • 15. April 2016 um 13:49

    Hallo zusammen,

    ich versuchte gerade die FF.au3 von dem Urheber https://autoit.de/www.thorsten-willert.de herunterzuladen. Leider funktioniert der Download dort nicht.

    Hat also jemand die aktuelle ff.au3 und würde sie mir freundlicherweise hier zur Verfügung stellen?

    Lieben Dank vorab und viele Grüße,

    der Robert

    P.S.: Sollte das hier das falsche Unterforum sein, bitte ich um Entschuldigung und ggf. Korrektur :P Danke!

  • Powershell und Autoit

    • DasIch
    • 14. Oktober 2015 um 15:33

    Es gibt bei einem Kunden das Problem, dass manche User explizit freigegeben sind für unterschiedliche Ordner, und das ist eine Altlast. Der Restrukturierung des Active Directories wegen wäre es somit nützlich, zu wissen welche Ordner in der Struktur für einzelne User freigegeben sind. Da die Ordnerstruktur recht tief ist, und auch weiter unten noch Berechtigungen vergeben wurden, ist das ein Mammutprojekt welches man durch dieses Skript deutlich verkürzen kann. Es soll geschaut werden, welche Userberechtigungen durch Gruppenberechtigungen ersetzt werden können, und welche Berechtigungen ohnehin sinnfrei sind.

    Ich schaue mir dein Skript gleich an und ergänze dann hier nochmals, falls ich Fragen habe. Danke jedenfalls für deine Hilfe!

  • Powershell und Autoit

    • DasIch
    • 14. Oktober 2015 um 14:44

    Damit geht es zwar, soweit ich weiß, kann icacls aber nicht beibringen, dass er ausschließlich Ordnerberechtigungen auslesen soll, oder?

    Ich habe das hier gefunden für WMI. Leider geht das nur für einen Ordner und nicht für alle unter "\\server\D$\Daten"...

    AutoIt
    On Error Resume Next
    
    
    Set wmiFileSecSetting = GetObject( _
     "winmgmts:Win32_LogicalFileSecuritySetting.path='\\server\D$\Daten'")
    
    
    RetVal = wmiFileSecSetting. _
    GetSecurityDescriptor(wmiSecurityDescriptor)
    
    
    If Err <> 0 Then
    	WScript.Echo "Fehler!" & VBCRLF & Err.Number & VBCRLF & Err.Description
    	WScript.Quit
    End If
    
    
    DACL = wmiSecurityDescriptor.DACL
    
    
    For each wmiAce in DACL
    
    
    	Set Trustee = wmiAce.Trustee
    	wscript.echo "Trustee Name: "    & Trustee.Name
    
    Next
    Alles anzeigen
  • Powershell und Autoit

    • DasIch
    • 14. Oktober 2015 um 13:36

    Alles klar, dann teste ich mal ein bisschen mit WMI. Ansonsten schau dir mal den Code oben an, vielleicht fällt dir noch ein, was man besser machen könnte.

    P.S.: AccessEnum braucht noch länger als mein script :P

  • Powershell und Autoit

    • DasIch
    • 14. Oktober 2015 um 12:21

    Danke dir vielmals! Die Accounts habe ich jetzt, aber das war ja nicht das eigentliche Problem :P Das Hauptproblem war ja, dass ich auslesen möchte, auf welche Ordner auf dem Fileserver ein User explizit Zugriff hat (statt über die Gruppe). Kann ich das auch damit abfragen?

  • Powershell und Autoit

    • DasIch
    • 14. Oktober 2015 um 12:05

    Danke für die Antwort!

    Ich habe es mir jetzt noch nicht angeschaut, aber soviel vorab: es handelt sich um Domainuser. Kann ich die damit auch abfragen? soweit ich weiß kann ich per WMI doch nur Rechner verwalten bzw. lokal angelegte user, oder?! Wenn ich mich irre, bin ich ruhig :P

  • Powershell und Autoit

    • DasIch
    • 14. Oktober 2015 um 11:17

    Hallo zusammen,

    ich habe ein Problem mit der Powershell in Kombination mit Autoit. Ich möchte mir über Powershell alle expliziten Rechte eines Benutzers auslesen und diese in einem Textfile speichern.

    Hierzu habe ich folgenden Code im Internet gefunden und angepasst:

    Code
    $path = "\\server\d$\daten"
    $list = get-childitem $path |get-childitem |where {$_.Psiscontainer}|foreach-object {$_.fullname}
    $ntfs = $list | foreach{$a = $_; (get-acl $_).access|format-list IdentityReference,@{label="Name"; expression={$a}  } }
    $ntfs >> C:\Users\testuser\Desktop\temp_user.txt


    Das Problem ist, dass ich hier nur eine Liste erstellt kriege mit ALLEN Berechtigungen des gesamten Fileservers, was ich ja nicht möchte. Naja, Problem erkannt und getestet. Das kam dabei raus:

    Spoiler anzeigen
    AutoIt
    Func _conFolderShow($iWo)
    	Switch $iWo
    		;Ordnerberechtigungen User
    		Case 0
    			local $input = InputBox("", "Bitte Geben Sie die Freigabe ein: ")
    
    			;Erstellen des Powershell Skriptes
    			FileWriteLine(@ScriptDir & "\folder.ps1", '$path = "' & $input & '"')
    			FileWriteLine(@ScriptDir & "\folder.ps1", '$list = get-childitem $path |get-childitem |where {$_.Psiscontainer}|foreach-object {$_.fullname}')
    			FileWriteLine(@ScriptDir & "\folder.ps1", '$ntfs = $list | foreach{$a = $_; (get-acl $_).access|format-list IdentityReference,@{label="Name"; expression={$a}  } }')
    			FileWriteLine(@ScriptDir & "\folder.ps1", '$ntfs >> ' & @ScriptDir & '\temp_user.txt')
    			local $1 = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noexit -command "
    			local $2 = ". "
    			local $3 = "'" & @ScriptDir & "\folder.ps1'"
    
    
    			While Not FileExists(@ScriptDir & "\folder.ps1")
    				Sleep(50)
    			WEnd
    
    
    			;Ausführen des Skriptes als Domain Admin
    			RunAs($frmDom_sUser, $frmDom_sDomain, $frmDom_sPassword, 2, $1 & $2 & $3, "", @SW_HIDE)
    
    			;Auslesen des Benutzernamen aus der Liste der User in der GUI
    			local $aUser = _GUICtrlListBox_GetSelItemsText($Ber_lstUserWahl)
    			If UBound($aUser) - 1 < 2 Then
    				If UBound($aUser) - 1 < 1 Then
    					MsgBox(0, "", "Bitte wählen Sie einen Benutzer aus!")
    				Else
    					_ArraySort($aUser, 0, 1)
    					_ArrayDelete($aUser, 0)
    					; SamAccountName des Users aus der Liste zur weiteren Verarbeitung
    					$sUser = _AD_GetObjectsInOU("", "(&(objectcategory=person)(displayname=" & $aUser[0] & "))", 2, "SamAccountName")
    					_FolderShowFilter($sUser[1])
    				EndIf
    			Else
    				MsgBox(0, "", "Bitte nur einen Benutzer auswählen!")
    			EndIf
    
    
    		;Ordnerberechtigungen Gruppen
    		Case 1
    
    
    	EndSwitch
    EndFunc ;==> _conFolderShow($iWo)
    
    
    Func _FolderShowFilter($user)
    	;Warten bis das Powershell Skript ausgeführt wurde
    	While Not FileExists(@ScriptDir & "\temp_user.txt")
    		Sleep(50)
    	WEnd
    
    	;Einlesen der Berechtigungen in ein Array
    	local $aWhole = FileReadToArray(@ScriptDir & "\temp_user.txt")
    
    	;frmDom_sDNS in der Form DC=Domain,DC=local
    	local $aDnsShort = StringSplit(StringTrimLeft($frmDom_sDNS, 3), ",")
    
    
    	;Löschen der leeren Zeilen aus dem Array
    	For $i = UBound($aWhole) - 1 To 0 Step - 1
    		If $aWhole[$i] = "" Then _ArrayDelete($aWhole, $i)
    	Next
    
    
    	If FileExists(@ScriptDir & "\auswertung_" & $user & ".txt") Then FileDelete(@ScriptDir & "\auswertung_" & $user & ".txt")
    
    
    	For $i = 0 To UBound($aWhole) - 1 Step 2
    
    		; Kürzen der Berechtigung auf den SamAccountNamen
    		local $sUserShorten = StringRight($aWhole[$i], (StringLen(StringTrimLeft($aWhole[$i], 20)) - StringLen($aDnsShort[1]) - 1))
    		$aWhole[$i] = $sUserShorten
    
    		; Eintragen der Benutzernamen in die Datei auswertung_username.txt
    		If StringLeft($sUserShorten, 1) <> "\" And $sUserShorten <> "" And $sUserShorten = $user Then
    			If FileExists(@ScriptDir & "\auswertung_" & $user & ".txt") Then
    				If StringLeft(FileReadLine(@ScriptDir & "\auswertung_" & $user & ".txt", 1), StringLen($user)) = $user Then
    					FileWriteLine(@ScriptDir & "\auswertung_" & $user & ".txt", "Berechtigungen von " & $sUserShorten & ":" & @CRLF)
    					FileWriteLine(@ScriptDir & "\auswertung_" & $user & ".txt", StringTrimLeft($aWhole[$i+1], 20))
    				Else
    					FileWriteLine(@ScriptDir & "\auswertung_" & $user & ".txt", StringTrimLeft($aWhole[$i+1], 20))
    				EndIf
    			Else
    				FileWriteLine(@ScriptDir & "\auswertung_" & $user & ".txt", "Berechtigungen von " & $sUserShorten & ":" & @CRLF)
    				FileWriteLine(@ScriptDir & "\auswertung_" & $user & ".txt", StringTrimLeft($aWhole[$i+1], 20))
    			EndIf
    		EndIf
    
    
    	Next
    
    
    	; Löschen der temporären Dateien
    	FileDelete(@ScriptDir & "\temp_user.txt")
    	FileDelete(@ScriptDir & "\folder.ps1")
    EndFunc ;==> _FolderShowFilter($user)
    Alles anzeigen

    Das Ende der Geschichte:
    Er braucht natürlich ewig zum Abgleichen, ob eine explizite Berechtigung des Benutzers auf die Ordner des Fileservers vorhanden ist.

    Kann ich irgendwie in dem Powershell Skript eintragen, dass er ausschließlich die expliziten Berechtigungen des Benutzers "xyz" als Datei speichern soll? Das würde das ganze Thema erheblich verkürzen und wäre eine deutlich "hübschere" Lösung.

    Vielen Dank vorab und LG,
    der Robert

  • Read file -> return Zeilennummer

    • DasIch
    • 25. September 2015 um 08:59

    Und wieder bist du zu müde :D

    Ich habe sie im ersten Post nicht abbrechen lassen, um aber das Skript schneller laufen lassen zu können habe ich im zweiten Post die Schleife abbrechen lassen :P

  • Read file -> return Zeilennummer

    • DasIch
    • 25. September 2015 um 08:48

    Das letzte Element wird in meinem Beispiel auch geprüft. Der Code ist voll funktionial. Allerdings wird die schleife nicht abgebrochen, wenn der Eintrag gefunden wurde. Daher hier nochmal angepasst:

    Ubound - 1 daher, dass das 0. Element im Array den Count des Arrays angibt und daher übersprungen wird. Du hast da wohl einen Denkfehler ;)

    AutoIt
    #include <file.au3>
    #include <array.au3>
    
    
    local $iLine, $aDatei, $sWert = "5Gehalt", $sFilePath = @ScriptDir & "\test.txt"
    
    
    _FileReadToArray($sFilePath, $aDatei) ;Datei in Array einlesen
    
    
    _ArrayDisplay($aDatei)
    
    
    For $i = 1 To UBound($aDatei) - 1
    	ConsoleWrite($i)
    	If $aDatei[$i] = $sWert Then
    		$iLine = $i ;Wenn der aktuelle Eintrag des Arrays mit dem Suchwort übereinstimmt, wird die Zeile in $iLine gespeichert.
    		ExitLoop
    	EndIf
    Next
    
    
    MsgBox(0, "", $iLine)
    Alles anzeigen
  • Read file -> return Zeilennummer

    • DasIch
    • 25. September 2015 um 08:30

    So würde ich es wohl machen:

    AutoIt
    #include <file.au3>
    #include <array.au3>
    
    
    local $iLine, $aDatei, $sWert = "5Gehalt", $sFilePath = @ScriptDir & "\test.txt"
    
    
    _FileReadToArray($sFilePath, $aDatei) ;Datei in Array einlesen
    
    
    _ArrayDisplay($aDatei)
    
    
    For $i = 1 To UBound($aDatei) - 1
    	If $aDatei[$i] = $sWert Then $iLine = $i ;Wenn der aktuelle Eintrag des Arrays mit dem Suchwort übereinstimmt, wird die Zeile in $iLine gespeichert.
    Next
    
    
    MsgBox(0, "", $iLine)
    Alles anzeigen


    LG,
    der Robert

  • RunAs startet das Programm nicht

    • DasIch
    • 22. September 2015 um 18:09

    Nur, indem man die UAC eine Stufe tiefer stellt oder deaktiviert. Da es aber ein Firmennetzwerk ist, sollte dieser Schritt entsprechend abgeklärt sein.

    Evtl. gibt es noch andere Wege, hier können dir bestimmt die hießigen Profis (andy, chip, raupi und co.) weiterhelfen :)

  • RunAs startet das Programm nicht

    • DasIch
    • 22. September 2015 um 17:52

    Schau dir evtl mal das Thema #RequireAdmin an :)

  • RunAs startet das Programm nicht

    • DasIch
    • 22. September 2015 um 15:18

    Local $iPID = RunAs($sUserName, "MyDOM", $sPassword, 2, "C:\Temp\Dameware\DameWare-MRC64-v10.0.0.exe", "", @SW_SHOWMAXIMIZED)

    hast du bei dem unterstrichenen Teil auch den Domänennamen von dir angepasst? Zudem würde ich hinter dem $sPassword eine "2" nehmen, aber theoretisch sollte auch eine 0 gehen.

  • Multiple Arrays befüllen...

    • DasIch
    • 22. September 2015 um 15:00

    Hab mal ein bisschen rumgetestet. Meinst du so?

    Spoiler anzeigen
    AutoIt
    #cs ----------------------------------------------------------------------------
    
    
     AutoIt Version: 3.3.14.2
     Author:         Björn Alles
    
    
     Script Function:
    	Template AutoIt script.
    
    
    #ce ----------------------------------------------------------------------------
    
    
    ; Script Start - Add your code below here
    
    
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <array.au3>
    #include <Excel.au3>
    
    
    #Region Neuer Fall
    $GUI_Neuer_Fall = GUICreate("F4 - Erfassung eines neuen Falls", 710, 624, 192, 124)
    $Miete_text = GUICtrlCreateLabel("Miete:", 16, 16, 33, 25)
    $Miete_input = GUICtrlCreateInput("", 56, 16, 49, 21)
    $NKO = GUICtrlCreateLabel("NKO:", 136, 16, 30, 17)
    $nko_input = GUICtrlCreateInput("", 168, 16, 65, 21)
    $Whg_Nr_txt = GUICtrlCreateLabel("Whg#Teil#:", 272, 16, 61, 17)
    $Whg_Nr = GUICtrlCreateInput("", 336, 16, 113, 21)
    $Priv_Nr_Txt = GUICtrlCreateLabel("Priv#:", 472, 16, 32, 17)
    $Priv_Nr_Input = GUICtrlCreateInput("", 504, 16, 33, 21)
    $Datum_txt = GUICtrlCreateLabel("Datum:", 552, 16, 38, 17)
    $Datum_Input = GUICtrlCreateInput("", 592, 16, 65, 21)
    $Status_Txt = GUICtrlCreateLabel("Status:", 8, 48, 37, 17)
    $tButton = GUICtrlCreateButton("einlesen",200, 200, 100, 25)
    $tButton2 = GUICtrlCreateButton("speichern",310, 200, 100, 25)
    GUISetBkColor(0xA6CAF0)
    GUISetState(@SW_DISABLE, $GUI_Neuer_Fall)
    #EndRegion Neuer Fall
    
    
    #Region Grundfenster
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Grundfenster = GUICreate("F4 - Startfenster", 615, 437, 192, 124)
    $neuer_fall = GUICtrlCreateButton("Neuer Fall", 24, 24, 145, 41)
    $fall_suchen = GUICtrlCreateButton("Fall Suchen", 24, 72, 145, 41)
    GUISetBkColor(0xA6CAF0)
    GUISetState(@SW_SHOW,$Grundfenster)
    #EndRegion Grundfenster
    
    
    #Region Variablen
    ;~ $filepath = @ScriptDir & "\test.xlsx" ; Pfad der Exceldatei
    $filepath = 'U:\test2.xlsx' ; Pfad der Exceldatei
    
    
    ;-------------------------------------ARRAYS ERZEUGEN----------------------------------------;
    
    
    Dim $array_Miete[1] ;dynamisches Array wird erzeugt ------ MIETE
    Dim $array_NKO[1] ;dynamisches Array wird erzeugt ------  NKO
    Dim $array_Priv[1];dynamisches Array wird erzeugt ------ PRIV
    Dim $array_Date[1];dynamisches Array wird erzeugt ------ DATE
    Dim $array_Status[1];dynamisches Array wird erzeugt ------ STATUS
    Dim $array_Asyla[1];dynamisches Array wird erzeugt ------ ASYLA
    Dim $array_Folge[1];dynamisches Array wird erzeugt ------ FOLGE
    Dim $array_Tel[1];dynamisches Array wird erzeugt ------ TEL
    Dim $array_PKSneu[1];dynamisches Array wird erzeugt ------ PKSneu
    Dim $array_Schuld[1];dynamisches Array wird erzeugt ------ SCHULD
    Dim $array_Geb[1];dynamisches Array wird erzeugt ------ GEB
    Dim $array_PKSalt[1];dynamisches Array wird erzeugt ------ nationalitaet
    Dim $array_Personen_Ges[1];dynamisches Array wird erzeugt ------ PERSONEN_GES
    Dim $array_Attest[1];dynamisches Array wird erzeugt ------ ATTEST
    Dim $array_Buchungsstelle[1];dynamisches Array wird erzeugt ------ Buchungsstelle
    Dim $array_Abg_Bz[1];dynamisches Array wird erzeugt ------ ABG_BZ
    Dim $array_Heim[1];dynamisches Array wird erzeugt ------ HEIM
    Dim $array_Buchungsstelle_Neu[1];dynamisches Array wird erzeugt ------ BUCHUNGSSTELLE_NEU
    Dim $array_Ordnungsverf[1];dynamisches Array wird erzeugt ------ ORDNUNGSVERFUEGUNG
    Dim $array_Selbstzahl[1];dynamisches Array wird erzeugt ------ SELBSTZAHL
    Dim $array_Wohnhaft_Ab[1];dynamisches Array wird erzeugt ------ WOHNHAFT_AB
    Dim $array_Auszug_Zum[1];dynamisches Array wird erzeugt ------ AUSZUG_ZUM
    Dim $array_Verz_Von[1];dynamisches Array wird erzeugt ------ VERZ_VON
    Dim $array_Monatssoll[1];dynamisches Array wird erzeugt ------ MONATSSOLL
    Dim $array_Datum_Frage[1];dynamisches Array wird erzeugt ------ DATUM_FRAGE
    Dim $array_Ort1[1];dynamisches Array wird erzeugt ------ ORT_1
    #EndRegion Variablen
    
    
    #Region Excel
    ;~ Local $oExcel = _Excel_Open("false") ; öffnet Excel  ohne das der User es sieht
    Local $oExcel = _Excel_Open()
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeWrite Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended); Error handling
    Local $oWorkbook = _Excel_BookOpen($oExcel,$filepath); öffnet die Excel  ohne das der User es sieht
    If @error Then
    	MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeWrite Example", "Error creating the new workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended); Error handling
    	_Excel_Close($oExcel); Schließt die Exceldatei
    	Exit
    EndIf
    
    
    $array_Miete = _Excel_RangeRead($oWorkbook, Default, $oWorkbook.ActiveSheet.Usedrange.Columns("A:A"), 2) ; liest die Daten der Spalte A in das Array ein
    $array_NKO = _Excel_RangeRead($oWorkbook,Default,$oWorkbook.ActiveSheet.Usedrange.Columns("B:B"), 2)
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example 3", "Error reading from workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended);Error Handling
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example 3", "Data successfully read." & @CRLF & "Please click 'OK' to display all formulas in column A.");Error Handling
    _ArrayDisplay($array_Miete, "Miete-Spalte A");Gibt das Array mit den eingelesenen Daten aus
    _ArrayDisplay($array_NKO, "NKO-Spalte B")
    #EndRegion Excel
    
    
    While 1
    
    
    	$nMsg = GUIGetMsg(1)
    	Switch $nMsg[0]
    		Case $GUI_EVENT_CLOSE
    			Switch $nMsg[1]
    				Case $Grundfenster
    					_Excel_BookClose($oWorkbook)
    					_Excel_Close($oExcel)
    					Exit
    
    
    				Case Else
    					GUISetState(@SW_SHOW, $Grundfenster)
    					GUISetState(@SW_HIDE, $nMsg[1])
    					GUISetState(@SW_DISABLE, $nMsg[1])
    					GUISwitch($Grundfenster)
    			EndSwitch
    
    
    		Case $neuer_fall ;
    			If @error Then
    				MsgBox(1,"ERROR","ERROR")
    			Else
    				_GUI_Neuer_Fall()
    			EndIf
    
    
    		Case $tButton
    			_Array_Fuellen()
    
    
    		Case $tButton2
    			_Array_Speichern()
    
    
    	EndSwitch
    WEnd
    
    
    ;---------------------------------------FUNKTION NEUER FALL---------------------------;
    
    
    Func _GUI_Neuer_Fall()
    
    
    	GUISetState(@SW_ENABLE, $GUI_Neuer_Fall)
    	GUISwitch($GUI_Neuer_Fall)
    	GUISetState(@SW_SHOW)
    
    
    EndFunc
    
    
    ;-------------------------------------ARRAY FUELLEN------------------------------------;
    Func _Array_Fuellen()
    	;Miete
    	$mieteData = GUICtrlRead($Miete_input) ; Legt das Feld fest, das in das Array eingelesen werden soll
    	If $mieteData <> '' Then ;falls das Feld Leer ist wird der Ubound nicht erhöht
    		if $array_Miete[UBound($array_Miete)-1] Then ;Erweiterung des dynamischen Arrays
    			ReDim $array_Miete[UBound($array_Miete)+1] ; erzeugt eine neue Spalte im dynamischen Array
    		EndIf
    		$array_Miete[UBound($array_Miete)-1] = $mieteData ;Schreibt in die neue Spalte
    	EndIf
    
    
    	;NKO
    	$nkoData = GUICtrlRead($nko_input) ; Legt das Feld fest, das in das Array eingelesen werden soll
    	If $nkoData <> '' Then ;falls das Feld Leer ist wird der Ubound nicht erhöht
    		if $array_NKO[UBound($array_NKO)-1] Then ;Erweiterung des dynamischen Arrays
    			ReDim $array_NKO[UBound($array_NKO)+1] ; erzeugt eine neue Spalte im dynamischen Array
    		EndIf
    		$array_NKO[UBound($array_NKO)-1] = $nkoData ;Schreibt in die neue Spalte
    	EndIf
    
    
    	_ArrayDisplay($array_NKO);Zeigt das gefüllte Array mit den vorher kopierten Daten an
    EndFunc
    
    
    Func _Array_Speichern()
    	_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $array_Miete, "A1", True, True); Schreibt das Array in die Exceldatei
    	_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $array_NKO, "B1", True, True)
    	If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeWrite Example 2", "Error writing to worksheet." & @CRLF & "@error = " & @error & ", @extended = " & @extended); Error handling
    ;~ 	MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeWrite Example 2", "1D array successfully written.")
    	_Excel_BookSave($oWorkbook)
    EndFunc
    Alles anzeigen

    Dadurch, dass du sofort nach dem Einlesen Excel schließt und beim Erweitern der Arrays versuchst in Excel zu speichern, kann das Programm natürlich nicht mehr darauf zugreifen. Deshalb habe ich es vor das "Exit" bei Programmbeendigung gesetzt.

    EDIT: Du musst natürlich nochmal Excel mit _Excel_open("false") starten, ich hatte das zu testzwecken umgestellt.

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™