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

Beiträge von tommii

  • Excel UDF

    • tommii
    • 17. Mai 2022 um 07:02

    Moombas, das mit der 0 haut auch nicht hin, werde wohl den umweg gehen, aus der xlsm ne xlsx erstellen zu lassen...das wird nicht so häufig passieren müssen

    autoBert, ich schaue mir das mal an, danke

  • Excel UDF

    • tommii
    • 16. Mai 2022 um 12:20

    werde es mal als xlsx versuchen, das mit "send" ist irgendwie unschön. (zumal das auch nur semi cool klappt)..

  • Excel UDF

    • tommii
    • 16. Mai 2022 um 11:46

    Hey Moombas, ja dem ist so

    das Makro in der Excel zieht sich jedes mal die neuen Daten aus der DB...von mir aus kann es auch gespeichert werden sprich ich baue den

    _Excel_BookSave()

    mal vor dem close mit ein und teste es

    Liebe Gruß Thomas

  • Excel UDF

    • tommii
    • 16. Mai 2022 um 11:36

    Also, dass was ich geschwärzt habe, ist der Name meiner Abteilung. Anhand des Namens könnte man herausfinden, in welchem Unternehmen ich tätig bin. SkillDB heißt einfach, dass es eine Excel Tabelle (als Quelle eine Datenbank) ist, in der die Mitarbeiter meiner Abteilung mit ihren verschiedenen "Rängen" und Fähigkeiten gelistet ist. Das ganze wird für ein Freistellungsantragtool, sprich mein Autoit Script soll den @Username in der liste finden, dann gucken, in welcher Schicht er ist und daraus dann erkennen, welches die Schcihtleiter sind, damit diese die Abwesenheitsantrag per Mail bekommen.

    Hoffe, das ganze wird so klar. Für Spielautomaten bin ich zu alt ^^

    Lieben Gruß Thomas

  • Excel UDF

    • tommii
    • 16. Mai 2022 um 10:21

    Da entsteht leider das gleiche Problem....

  • Excel UDF

    • tommii
    • 16. Mai 2022 um 10:11
    Zitat von Moombas

    Tipp1: Auch wenn es wohl nur ein Workbook-Passwort ist, solltest du es hier nicht mit veröffentlichen.

    Tipp2: Die Fehlermeldung sagt doch schon alles. Bevor du die Datei schließt solltest du eine der folgenden Funktionen nutzen:

    Denn aktuell änderst du nur etwas, ohne den Speicherbefehl auszuführen. Dann ist klar das du solch eine Fehlermeldung bekommst.

    Sorry, hab nicht gesehen, das du nur die Daten einlesen willst. Dann würde ich an deiner Stelle folgendes probieren:

    AutoIt
    ; Create application object
    Local $bVisible  = False
    Local $oExcel    = _Excel_Open($bVisible)
    Local $bReadOnly = True
    Local $var       = 1
    Local $sPassword = "IrgendeinPasswort"
    Local $R         = "D" & $var & ":" & "E" & $var
    Local $sWorkbook = @ScriptDir & "\Subfiles\SkillDB.xlsm"
    Local $oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook, $bReadOnly, $bVisible, $sPassword)
    Local $aResult   = _Excel_RangeRead($oWorkbook)
    _Excel_BookClose($oWorkbook, False) ;nicht speichern
    _Excel_Close($oExcel, False, True)  ;Änderungen nicht speichern, ForceClose
    
    For $i = 0 To UBound($aResult, 1) - 1
       If $aResult[$i][0] = @UserName Then
         Global $xName = StringSplit($aResult[$i][1], ",")
         Global $varLogin = $aResult[$i][0]
         Global $varName = $aResult[$i][1]
         Global $varSchicht = $aResult[$i][2]
       EndIf
    Next
    Alles anzeigen

    Tipp 3: Ich hoffe, dass dies alles in einer Funktion steht, ansonsten sind alle deine Variablen Global, auch wenn du sie als Local definiert hast!

    hey Moombas,

    das Passwort war extra Forumtauglich gewählt ;)

    danke für deine Tips, ich werde es direkt gleich testen und melde mich dann!

    Liebe Gruß Thomas

  • Excel UDF

    • tommii
    • 16. Mai 2022 um 09:13

    Hi an alle,

    kurze Frage zur Excel UDF...ich öffne eine Excel Datei, um Daten in einer Variablen zu speichern. Das klappt auch soweit, aber das sauber schließen haut nicht hin, d.h. ich bekomme immer "Alerts" aus der Excel Marke "Es befindet sich schon eine Datei am Speicherort mit selben Namen" oder "soll die Datei ersetzt werden?" (wenn ich das Speichern force)...

    liegt es daran, dass es eine xlsm ist? Damit gab es in der Vergangenheit ja Probleme....danke euch im Voraus


    Lieben Gruß Thomas

    Code
    ; Create application object
    Local $bVisible = False
    Local $oExcel = _Excel_Open($bVisible)
    ;Local $oExcel = _Excel_Open()
    Local $bReadOnly = True
    Local $bVisible = False
    Local $var = 1
    Local $sPassword = "Apfelmus22#"
    Local $R = "D" & $var & ":" & "E" & $var
    Local $sWorkbook = @ScriptDir & "\Subfiles\SkillDB.xlsm"
    Local $oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook, $bReadOnly, $bVisible, $sPassword)
    Local $aResult = _Excel_RangeRead($oWorkbook)
    For $i = 0 To UBound($aResult, 1) - 1
    
       If $aResult[$i][0] = @UserName Then
         Global $xName = StringSplit($aResult[$i][1], ",")
         Global $varLogin = $aResult[$i][0]
         Global $varName = $aResult[$i][1]
         Global $varSchicht = $aResult[$i][2]
    
       EndIf
    Next
    _Excel_BookClose($oWorkbook, True)
    _Excel_Close($oExcel, 1, 0)
    Alles anzeigen
  • Hauptanzeige ändern

    • tommii
    • 10. November 2021 um 00:56

    Okay, hat alles hingehauen, vielen dank :)

  • Hauptanzeige ändern

    • tommii
    • 10. November 2021 um 00:23
    Zitat von Moombas

    Ja klar XD

    Du musst ja auch $hOwnHandle mit dem Handle deines Fensters versehen das auf den entsprechenden Monitor gepackt werden soll, das war nur ein Platzhalter.

    Gleiches gilt für $Monitornumber dort trägst du die Monitornummer ein, wo das Fenster hin soll.

    autsch...ich doof, ich teste das, danke :)

  • Hauptanzeige ändern

    • tommii
    • 9. November 2021 um 00:54
    Zitat von Moombas

    Du kannst doch Fenster direkt auf Monitor X öffnen lassen ohne die Hauptanzeige zu ändern (und somit mit ggf. anderen Anzeigen in die Quere zu kommen).

    Am Start des Programms das eigne Handle und die Monitornummer an folgende Funktion übergeben:

    AutoIt
    Global $__MonitorList[1][5]
    $__MonitorList[0][0] = 0
    _CenterOnMonitor($hOwnHandle, $Monitornumber)
    
    ;==================================================================================================
    ; Function Name:   _CenterOnMonitor($hWindow[, $Monitor = -1]])
    ; Description::    Center a window on a specific monitor (or the monitor the mouse is on)
    ; Parameter(s):    $Title   The title of the window to Move/Maximize
    ;     optional:    $Text    The text of the window to Move/Maximize
    ;     optional:    $Monitor The monitor to move to (1..NumMonitors) defaults to monitor mouse is on
    ; Note:            Should probably have specified return/error codes but haven't put them in yet
    ; Author(s):       xrxca (autoit@forums.xrx.ca)
    ;==================================================================================================
    Func _CenterOnMonitor($hWindow, $Monitor = -1)
    ;~ Local $hWindow = WinGetHandle($Title, $Text)
        If Not @error Then
            If $Monitor == -1 Then
                $Monitor = _GetMonitorFromPoint()
            ElseIf $__MonitorList[0][0] == 0 Then
                _GetMonitors()
            EndIf
            If ($Monitor > 0) And ($Monitor <= $__MonitorList[0][0]) Then
                ; Restore the window if necessary
                Local $WinState = WinGetState($hWindow)
                If BitAND($WinState, 16) Or BitAND($WinState, 32) Then
                    WinSetState($hWindow, '', @SW_RESTORE)
                EndIf
                Local $WinSize = WinGetPos($hWindow)
                Local $x = Int(($__MonitorList[$Monitor][3] - $__MonitorList[$Monitor][1] - $WinSize[2]) / 2) + $__MonitorList[$Monitor][1]
                Local $y = Int(($__MonitorList[$Monitor][4] - $__MonitorList[$Monitor][2] - $WinSize[3]) / 2) + $__MonitorList[$Monitor][2]
                WinMove($hWindow, '', $x, $y)
            EndIf
        EndIf
    EndFunc   ;==>_CenterOnMonitor
    
    ;==================================================================================================
    ; Function Name:   _GetMonitors()
    ; Description::    Load monitor positions
    ; Parameter(s):    n/a
    ; Return Value(s): 2D Array of Monitors
    ;                       [0][0] = Number of Monitors
    ;                       [i][0] = HMONITOR handle of this monitor.
    ;                       [i][1] = Left Position of Monitor
    ;                       [i][2] = Top Position of Monitor
    ;                       [i][3] = Right Position of Monitor
    ;                       [i][4] = Bottom Position of Monitor
    ; Note:            [0][1..4] are set to Left,Top,Right,Bottom of entire screen
    ;                  hMonitor is returned in [i][0], but no longer used by these routines.
    ;                  Also sets $__MonitorList global variable (for other subs to use)
    ; Author(s):       xrxca (autoit@forums.xrx.ca)
    ;==================================================================================================
    Func _GetMonitors()
        $__MonitorList[0][0] = 0  ;  Added so that the global array is reset if this is called multiple times
        Local $handle = DllCallbackRegister("_MonitorEnumProc", "int", "hwnd;hwnd;ptr;lparam")
        DllCall("user32.dll", "int", "EnumDisplayMonitors", "hwnd", 0, "ptr", 0, "ptr", DllCallbackGetPtr($handle), "lparam", 0)
        DllCallbackFree($handle)
        Local $i = 0
        For $i = 1 To $__MonitorList[0][0]
            If $__MonitorList[$i][1] < $__MonitorList[0][1] Then $__MonitorList[0][1] = $__MonitorList[$i][1]
            If $__MonitorList[$i][2] < $__MonitorList[0][2] Then $__MonitorList[0][2] = $__MonitorList[$i][2]
            If $__MonitorList[$i][3] > $__MonitorList[0][3] Then $__MonitorList[0][3] = $__MonitorList[$i][3]
            If $__MonitorList[$i][4] > $__MonitorList[0][4] Then $__MonitorList[0][4] = $__MonitorList[$i][4]
        Next
        Return $__MonitorList
    EndFunc   ;==>_GetMonitors
    
    ;==================================================================================================
    ; Function Name:   _GetMonitorFromPoint([$XorPoint = -654321[, $Y = 0]])
    ; Description::    Get a monitor number from an x/y pos or the current mouse position
    ; Parameter(s):
    ;     optional:    $XorPoint X Position or Array with X/Y as items 0,1 (ie from MouseGetPos())
    ;     optional:    $Y        Y Position
    ; Note:            Should probably have specified return/error codes but haven't put them in yet,
    ;                  and better checking should be done on passed variables.
    ;                  Used to use MonitorFromPoint DLL call, but it didn't seem to always work.
    ; Author(s):       xrxca (autoit@forums.xrx.ca)
    ;==================================================================================================
    Func _GetMonitorFromPoint($XorPoint = 0, $y = 0)
        If @NumParams = 0 then
            local $MousePos = MouseGetPos()
            Local $myX = $MousePos[0]
            Local $myY = $MousePos[1]
        Elseif ( @NumParams = 1 ) and IsArray($XorPoint) Then
            $myX = $XorPoint[0]
            $myY = $XorPoint[1]
        Else
            $myX = $XorPoint
            $myY = $y
        EndIf
        If $__MonitorList[0][0] == 0 Then
            _GetMonitors()
        EndIf
        Local $i = 0
        Local $Monitor = 0
        For $i = 1 To $__MonitorList[0][0]
            If ($myX >= $__MonitorList[$i][1]) _
                    And ($myX < $__MonitorList[$i][3]) _
                    And ($myY >= $__MonitorList[$i][2]) _
                    And ($myY < $__MonitorList[$i][4]) Then $Monitor = $i
        Next
        Return $Monitor
    EndFunc   ;==>_GetMonitorFromPoint
    
    ;==================================================================================================
    ; Function Name:   _MonitorEnumProc($hMonitor, $hDC, $lRect, $lParam)
    ; Description::    Enum Callback Function for EnumDisplayMonitors in _GetMonitors
    ; Author(s):       xrxca (autoit@forums.xrx.ca)
    ;==================================================================================================
    Func _MonitorEnumProc($hMonitor, $hDC, $lRect, $lParam)
        #forceref $hDC, $lParam
        Local $Rect = DllStructCreate("int left;int top;int right;int bottom", $lRect)
        $__MonitorList[0][0] += 1
        ReDim $__MonitorList[$__MonitorList[0][0] + 1][5]
        $__MonitorList[$__MonitorList[0][0]][0] = $hMonitor
        $__MonitorList[$__MonitorList[0][0]][1] = DllStructGetData($Rect, "left")
        $__MonitorList[$__MonitorList[0][0]][2] = DllStructGetData($Rect, "top")
        $__MonitorList[$__MonitorList[0][0]][3] = DllStructGetData($Rect, "right")
        $__MonitorList[$__MonitorList[0][0]][4] = DllStructGetData($Rect, "bottom")
        Return 1 ; Return 1 to continue enumeration
    EndFunc   ;==>_MonitorEnumProc
    Alles anzeigen

    Dann wäre das Fenster Zentriert auf dem jeweiligen Monitor.


    leider bekomme ich folgenden fehler, wenn ich das so in eine testdatei einfüge und ausführen will

    "X:\My Documents\Autoit\Autostarttool\tests\monitore auslesen.au3" (122) : ==> Variable used without being declared.:

    _CenterOnMonitor($hOwnHandle, $Monitornumber)

    _CenterOnMonitor(^ ERROR

  • Hauptanzeige ändern

    • tommii
    • 2. November 2021 um 21:22

    Hallo ihr zwei,

    Mega nett, danke euch vielmals....ich habe morgen urlaub, werde es dann richtung woxhenende aber testen und mich melden.

    Danke euch

  • Hauptanzeige ändern

    • tommii
    • 1. November 2021 um 12:45

    Hallo an alle,

    bei mir im Betrieb gibt es einen Arbeitsplatz mit sieben Monitoren, sechs sind riesige LED TV's einer ist ein Desktopmonitor, an dem quaisie aktiv gearbeitet wird....leider ist dieser (warum auch immer) nicht der Hauptbildschirm.

    Ist es machbar, die Hauptanzeige temporär via autoit zu ändern, danach mein script durchlaufen lassen und am ende wieder die alte hauptanzeige einzustellen?

    problem ist, dass sich die aufgerufenen Fenster/Programme immer im Hauptbildschirm öffnen, was für meine zwecke unschön ist (da ich leider mit Mousemove arbeiten muss, da ich in einem SunAwtFrame unterwegs bin, wo ich einige Prozeduren starten möchte, diese aber halt nur mit Mousemove/Mouseclick erreiche)

    Würde mich über eine Antwort freuen

    Lieben Gruß

    Tommii

  • OutlookEX UDF besprechung mit mehreren leuten

    • tommii
    • 27. Juli 2021 um 00:23
    Zitat von Xenon

    Hi,

    wie in folgendem Beitrag gezeigt, brauchst du dafür noch den Parameter "AllDayEvent=1" beim Aufruf von _OL_ItemCreate.

    nichts für Ungut, ich danke dir vielmals :)

  • OutlookEX UDF besprechung mit mehreren leuten

    • tommii
    • 26. Juli 2021 um 03:45

    chapeau...da bni ich drüber weggerutscht. danke dir vielmals.

    ps: Verrätst du mir noch, wie ich daraus ein ganztägiges ereigniss mache? Ich habe das schon gelesen, finde es aber nicht wieder...

    danke im voraus

    lg tommii

  • OutlookEX UDF besprechung mit mehreren leuten

    • tommii
    • 22. Juli 2021 um 19:34

    Hi an alle,

    Ich habe mit waters outlookEX udf schon einige Sachen realisiert. Aktuell versuche ich einen outlooktermin zu erstellen und einige leute dazu einzuladen (sind immer die gleichen empfänger.


    Lässt sich das auch mit der UDF realisieren? Habe es bisher noch inbekommen, da alles in verbdinung eher mit einem termin zusammen hämgt, nicht direkt mit iner besprechnung

    danke euch vielmals

    Lieben Gruß Tommii

  • runwair java web launcher

    • tommii
    • 16. Juli 2021 um 10:56
    Zitat von AspirinJunkie

    Ja sollte - wenn Java sich halt überall wo es ausgeführt werden soll auch ordentlich in PATH eingetragen hat.

    Kleiner Tipp zu den Anführungszeichen in Strings: Es gibt zwei Zeichen für Strings in AutoIt womit man diese Dopplungen umgehen kann:

    AutoIt
    RunWait('"javaws.exe" "https://xyz.com:443/main/system/launch/client/test.jnlp"', @ScriptDir, @SW_HIDE)

    super, danke dir

  • runwair java web launcher

    • tommii
    • 16. Juli 2021 um 10:39
    Zitat von AspirinJunkie

    Java nistet seinen Pfad doch in der Regel in der "PATH"-Umgebungsvariable ein.

    Das heißt es sollte eigentlich auch funktionieren wenn du javaws.exe komplett ohne Pfadangabe schreibst.

    Kannst du gut von der Kommandozeile aus testen in dem du mal folgendes ausführst:

    Code
    where javaws.exe

    stimmt :)

    also reicht es den code so abzuändern?

    Code
    RunWait("""javaws.exe"" ""https://xyz.com:443/main/system/launch/client/test.jnlp""",@ScriptDir,@SW_HIDE)
  • runwair java web launcher

    • tommii
    • 16. Juli 2021 um 10:15

    Guten Tag an alle,

    leider hat mir die SuFu nicht weiter geholfen... ich muss eine java Datei ausführen....statisch funktioniert es auch mit folgendem Befehl

    Code
    RunWait("""C:\Program Files (x86)\Java\jre1.8.0_291\bin\javaws.exe"" ""https://xyz.com:443/main/system/launch/client/test.jnlp""",@ScriptDir,@SW_HIDE)


    Der Pfad zur javaws.exe muss aber variabel gestaltet werden...egal, wie ich es mit Anführungsstrichen einzeln und doppel versucht habe, ich bekomme es nicht hin...

    könnt ihr mir dort bitte mal auf die Sprünge helfen?


    Danke euch im Voraus

    tommii

  • Visible Tray Icon

    • tommii
    • 22. September 2020 um 05:59

    Kleines Update...mir ist folgendes Aufgefallen, was wahrscheinlich "sämtliche" von euch angebotene Hilfen zum Erfolgführen lässt :)

    der kleine "Pfeil", den man klicken muss, um die Trays zu sehen, ist "class:Button"...

    das Trayfenster selber ist dann class:NotifyIconOverflowWindow

    ändere ich das also in euren Snippets und lasse vorher via Mausklick auf den Button klicken, funktionieren alle eure Vorschläge :)

    Danke euch Vielmals

  • Visible Tray Icon

    • tommii
    • 21. September 2020 um 11:36

    Hey Racer, leider nicht so ganz...ich stehe mittlerweile ziemlich auf dem schlauch von meinen ganzen testfiles...naja, im schlimmsten fall muss ich das ätzenderweise über mousemoves machen :/

    danke dir/euch trotzdem

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™