Jump to content
nooneclose

[SOLVED] How do I find every other Saturday in any month?

Recommended Posts

nooneclose

I forgot an important and needed aspect of my code. I need to be able to check for people who work every other week. Is it possible to write the dates that they work (every other week) between two date ranges? 

Example:  Bob Smith has a Start date of 8-26-2018 (that is the date he is hired) And He stops working on 12-12-18 (that's the day he goes on vacation or whatever) However his work shift is every other Saturday from 7:30 AM to 6:00 Pm.  I need to calculate every other Saturday between 8-26-18 and 12-12-18 (is this clear?)

 

here is the code I have so far. I am just missing this last part:

; Step 7
Func SendData()

    ;*******************************************************************************
    ; Sends all collected data to the Excel file in correct order for Upload
    ;*******************************************************************************
    MsgBox($MB_ICONINFORMATION, "Scheduler_Bot", "Sending Data", 2)

    ; Loop Counters
    $LoopCount   = 0
    $Array_Index = 0
    $DayIndex    = 0
    $dataIndex   = 0

    ; Counter for the day of the week
    Local $dCount = 2

    ; Counter for the numbers of Ys
    Local $yesCount = 0

    ; Excel Write Counter (VERY IMPORTANT!)
    Local $EWriteCount = 2

    ; Declare the global shift arrays (Sunday - Saturday)
    Global $ShiftDaySU[100][600]
    Global $ShiftDayM[100][600]
    Global $ShiftDayT[100][600]
    Global $ShiftDayW[100][600]
    Global $ShiftDayR[100][600]
    Global $ShiftDayF[100][600]
    Global $ShiftDayS[100][600]
    Global $sDates[400]

    While $Formatted_Names[$dataIndex] <> $Formatted_Names[$IndexRows] ; $LoopCount < $IndexRows

        $ACounter = 0 ; Array counter

        ; Gets the Start date from the array
        $Temp = $StartDate[$Array_Index]
        $TempStart = StringLeft($Temp, 8)
        $StartTempYear  = StringLeft($TempStart, 4)
        $StartTempMonth = StringMid($TempStart, 5, 2)
        $StartTempDay   = StringRight($TempStart, 2)

        ; Gets the End date from the array
        $Temp = $EndDate[$Array_Index]
        $TempEnd = StringLeft($Temp, 8)
        $EndTempYear  = StringLeft($TempEnd, 4)
        $EndTempMonth = StringMid($TempEnd, 5, 2)
        $EndTempDay   = StringRight($TempEnd, 2)

        ; The starting date (in value form)
        $sdate = _DateToDayValue($StartTempYear, $StartTempMonth, $StartTempDay)    ;_DateToDayValue(2019,1,9)
        ;ConsoleWrite(@CRLF & "$start date  " & $sdate & @CRLF & @CRLF)

        ; The ending date (in value form)
        $edate = _DateToDayValue($EndTempYear, $EndTempMonth, $EndTempDay)          ;_DateToDayValue(2019,4,9)
        ;ConsoleWrite(@CRLF & "$end date  " & $edate & @CRLF & @CRLF)

        ; Variables for readability
        Local $iYear, $iMonth, $iDay

        ;Stores what day of the week that shift lands on
        Local $tSU = _Excel_RangeRead($OpenWorkbook, Default, "I" & $dCount)
            If $tSU = "Y" Then
                $yesCount = 1
            EndIf
        Local $tM  = _Excel_RangeRead($OpenWorkbook, Default, "J" & $dCount)
            If $tM = "Y" Then
                $yesCount += 1
            EndIf
        Local $tT  = _Excel_RangeRead($OpenWorkbook, Default, "K" & $dCount)
            If $tT = "Y" Then
                $yesCount += 1
            EndIf
        Local $tW  = _Excel_RangeRead($OpenWorkbook, Default, "L" & $dCount)
            If $tW = "Y" Then
                $yesCount += 1
            EndIf
        Local $tR  = _Excel_RangeRead($OpenWorkbook, Default, "M" & $dCount)
            If $tR = "Y" Then
                $yesCount += 1
            EndIf
        Local $tF  = _Excel_RangeRead($OpenWorkbook, Default, "N" & $dCount)
            If $tF = "Y" Then
                $yesCount += 1
            EndIf
        Local $tS  = _Excel_RangeRead($OpenWorkbook, Default, "O" & $dCount)
            If $tS = "Y" Then
                $yesCount += 1
            EndIf

        ConsoleWrite(@CRLF & @CRLF)
        ConsoleWrite($tSU & @CRLF)
        ConsoleWrite($tM & @CRLF)
        ConsoleWrite($tT & @CRLF)
        ConsoleWrite($tW & @CRLF)
        ConsoleWrite($tR & @CRLF)
        ConsoleWrite($tF & @CRLF)
        ConsoleWrite($tS & @CRLF)
        ConsoleWrite(@CRLF & @CRLF)

        ; Check to see if they work every other week
        Local $rotationWeek  = _Excel_RangeRead($OpenWorkbook, Default, "U" & $dCount)
            If $rotationWeek = "0" Then
                ; Do nothing
            Else
                If $rotationWeek = 1
                    ; Do something
                Else ; $rotationWeek = 2
                    ; Do something
                EndIf
            EndIf

        Local $repeatWeek  = _Excel_RangeRead($OpenWorkbook, Default, "V" & $dCount)
            If $rotationWeek = "0" Then
                ; Do nothing
            Else
                If $rotationWeek = 1
                    ; Do something
                Else ; $rotationWeek = 2
                    ; Do something
                EndIf
            EndIf

        While $yesCount > 0

            If $tSU = "Y" Then
                For $Index = $sdate To $edate
                    _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                    ; Finds the day based on its numerical value (1 = Sunday)
                    If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 1 Then
                        $Temp = $iYear & "-" & $iMonth & "-" & $iDay & "T" & "00" & ":" & "00" & ":" & "00" & ":" & "000"
                        $ShiftDaySU[$ACounter][$DayIndex] = $Temp
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $ShiftDaySU[$ACounter][$DayIndex], "AI" & $EWriteCount)

                        ; Send Name
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Formatted_Names[$dataIndex], "AA" & $EWriteCount)
                        ; Send Start Time
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $StartTimes[$dataIndex], "AB" & $EWriteCount)
                        ; Send End Time
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $EndTimes[$dataIndex], "AC" & $EWriteCount)
                        ; Send Work Hours
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $HoursWorked[$dataIndex], "AD" & $EWriteCount)
                        ; Send Work Group
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkGroup[$dataIndex], "AE" & $EWriteCount)
                        ; Send Department
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkDepartment, "AF" & $EWriteCount)
                        ; Send Supervisor
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Supervisors[$dataIndex], "AG" & $EWriteCount)
                        ; Send Notes
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkNotes[$dataIndex], "AH" & $EWriteCount)

                        ; Send Shift Number
                        $tempStime = StringReplace($StartTimes[$dataIndex], ":", "")
                        $tempEtime = StringReplace($EndTimes[$dataIndex], ":", "")
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, "SU " & $tempStime & "-" & $tempEtime, "AJ" & $EWriteCount)

                        $ACounter    += 1
                        $EWriteCount += 1

                        ConsoleWrite(@CRLF & "Sunday  " & $Temp & @CRLF)

                    EndIf
                Next

                $yesCount -= 1
                $tSU = "N"

            ElseIf $tM = "Y" Then
                For $Index = $sdate To $edate
                    _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                    ; Finds the day based on its numerical value (1 = Sunday)
                    If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 2 Then
                        $Temp = $iYear & "-" & $iMonth & "-" & $iDay & "T" & "00" & ":" & "00" & ":" & "00" & ":" & "000"
                        $ShiftDayM[$ACounter][$DayIndex] = $Temp
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $ShiftDayM[$ACounter][$DayIndex], "AI" & $EWriteCount)

                        ; Send Name
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Formatted_Names[$dataIndex], "AA" & $EWriteCount)
                        ; Send Start Time
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $StartTimes[$dataIndex], "AB" & $EWriteCount)
                        ; Send End Time
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $EndTimes[$dataIndex], "AC" & $EWriteCount)
                        ; Send Work Hours
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $HoursWorked[$dataIndex], "AD" & $EWriteCount)
                        ; Send Work Group
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkGroup[$dataIndex], "AE" & $EWriteCount)
                        ; Send Department
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkDepartment, "AF" & $EWriteCount)
                        ; Send Supervisor
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Supervisors[$dataIndex], "AG" & $EWriteCount)
                        ; Send Notes
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkNotes[$dataIndex], "AH" & $EWriteCount)

                        ; Send Shift Number
                        $tempStime = StringReplace($StartTimes[$dataIndex], ":", "")
                        $tempEtime = StringReplace($EndTimes[$dataIndex], ":", "")
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, "M " & $tempStime & "-" & $tempEtime, "AJ" & $EWriteCount)

                        $ACounter    += 1
                        $EWriteCount += 1

                        ConsoleWrite(@CRLF & "Monday  " & $Temp & @CRLF)

                    EndIf
                Next

                $yesCount -= 1
                $tM = "N"

            ElseIf $tT = "Y" Then
                For $Index = $sdate To $edate
                    _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                    ; Finds the day based on its numerical value (1 = Sunday)
                    If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 3 Then
                        $Temp = $iYear & "-" & $iMonth & "-" & $iDay & "T" & "00" & ":" & "00" & ":" & "00" & ":" & "000"
                        $ShiftDayT[$ACounter][$DayIndex] = $Temp
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $ShiftDayT[$ACounter][$DayIndex], "AI" & $EWriteCount)

                        ; Send Name
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Formatted_Names[$dataIndex], "AA" & $EWriteCount)
                        ; Send Start Time
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $StartTimes[$dataIndex], "AB" & $EWriteCount)
                        ; Send End Time
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $EndTimes[$dataIndex], "AC" & $EWriteCount)
                        ; Send Work Hours
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $HoursWorked[$dataIndex], "AD" & $EWriteCount)
                        ; Send Work Group
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkGroup[$dataIndex], "AE" & $EWriteCount)
                        ; Send Department
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkDepartment, "AF" & $EWriteCount)
                        ; Send Supervisor
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Supervisors[$dataIndex], "AG" & $EWriteCount)
                        ; Send Notes
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkNotes[$dataIndex], "AH" & $EWriteCount)

                        ; Send Shift Number
                        $tempStime = StringReplace($StartTimes[$dataIndex], ":", "")
                        $tempEtime = StringReplace($EndTimes[$dataIndex], ":", "")
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, "T " & $tempStime & "-" & $tempEtime, "AJ" & $EWriteCount)

                        $ACounter    += 1
                        $EWriteCount += 1

                        ConsoleWrite(@CRLF & "Tuesday  " & $Temp & @CRLF)

                    EndIf
                Next

                $yesCount -= 1
                $tT = "N"

            ElseIf $tW = "Y" Then
                For $Index = $sdate To $edate
                    _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                    ; Finds the day based on its numerical value (1 = Sunday)
                    If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 4 Then
                        $Temp = $iYear & "-" & $iMonth & "-" & $iDay & "T" & "00" & ":" & "00" & ":" & "00" & ":" & "000"
                        $ShiftDayW[$ACounter][$DayIndex] = $Temp
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $ShiftDayW[$ACounter][$DayIndex], "AI" & $EWriteCount)

                        ; Send Name
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Formatted_Names[$dataIndex], "AA" & $EWriteCount)
                        ; Send Start Time
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $StartTimes[$dataIndex], "AB" & $EWriteCount)
                        ; Send End Time
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $EndTimes[$dataIndex], "AC" & $EWriteCount)
                        ; Send Work Hours
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $HoursWorked[$dataIndex], "AD" & $EWriteCount)
                        ; Send Work Group
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkGroup[$dataIndex], "AE" & $EWriteCount)
                        ; Send Department
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkDepartment, "AF" & $EWriteCount)
                        ; Send Supervisor
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Supervisors[$dataIndex], "AG" & $EWriteCount)
                        ; Send Notes
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkNotes[$dataIndex], "AH" & $EWriteCount)

                        ; Send Shift Number
                        $tempStime = StringReplace($StartTimes[$dataIndex], ":", "")
                        $tempEtime = StringReplace($EndTimes[$dataIndex], ":", "")
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, "W " & $tempStime & "-" & $tempEtime, "AJ" & $EWriteCount)

                        $ACounter    += 1
                        $EWriteCount += 1

                        ConsoleWrite(@CRLF & "Wednesday  " & $Temp & @CRLF)

                    EndIf
                Next

                $yesCount -= 1
                $tW = "N"

            ElseIf $tR = "Y" Then
                For $Index = $sdate To $edate
                    _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                    ; Finds the day based on its numerical value (1 = Sunday)
                    If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 5 Then
                        $Temp = $iYear & "-" & $iMonth & "-" & $iDay & "T" & "00" & ":" & "00" & ":" & "00" & ":" & "000"
                        $ShiftDayR[$ACounter][$DayIndex] = $Temp
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $ShiftDayR[$ACounter][$DayIndex], "AI" & $EWriteCount)

                        ; Send Name
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Formatted_Names[$dataIndex], "AA" & $EWriteCount)
                        ; Send Start Time
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $StartTimes[$dataIndex], "AB" & $EWriteCount)
                        ; Send End Time
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $EndTimes[$dataIndex], "AC" & $EWriteCount)
                        ; Send Work Hours
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $HoursWorked[$dataIndex], "AD" & $EWriteCount)
                        ; Send Work Group
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkGroup[$dataIndex], "AE" & $EWriteCount)
                        ; Send Department
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkDepartment, "AF" & $EWriteCount)
                        ; Send Supervisor
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Supervisors[$dataIndex], "AG" & $EWriteCount)
                        ; Send Notes
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkNotes[$dataIndex], "AH" & $EWriteCount)

                        ; Send Shift Number
                        $tempStime = StringReplace($StartTimes[$dataIndex], ":", "")
                        $tempEtime = StringReplace($EndTimes[$dataIndex], ":", "")
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, "R " & $tempStime & "-" & $tempEtime, "AJ" & $EWriteCount)

                        $ACounter    += 1
                        $EWriteCount += 1

                        ConsoleWrite(@CRLF & "Thursday  " & $Temp & @CRLF)

                    EndIf
                Next

                $yesCount -= 1
                $tR = "N"

            ElseIf $tF = "Y" Then
                For $Index = $sdate To $edate
                    _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                    ; Finds the day based on its numerical value (1 = Sunday)
                    If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 6 Then
                        $Temp = $iYear & "-" & $iMonth & "-" & $iDay & "T" & "00" & ":" & "00" & ":" & "00" & ":" & "000"
                        $ShiftDayF[$ACounter][$DayIndex] = $Temp
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $ShiftDayF[$ACounter][$DayIndex], "AI" & $EWriteCount)

                        ; Send Name
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Formatted_Names[$dataIndex], "AA" & $EWriteCount)
                        ; Send Start Time
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $StartTimes[$dataIndex], "AB" & $EWriteCount)
                        ; Send End Time
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $EndTimes[$dataIndex], "AC" & $EWriteCount)
                        ; Send Work Hours
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $HoursWorked[$dataIndex], "AD" & $EWriteCount)
                        ; Send Work Group
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkGroup[$dataIndex], "AE" & $EWriteCount)
                        ; Send Department
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkDepartment, "AF" & $EWriteCount)
                        ; Send Supervisor
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Supervisors[$dataIndex], "AG" & $EWriteCount)
                        ; Send Notes
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkNotes[$dataIndex], "AH" & $EWriteCount)

                        ; Send Shift Number
                        $tempStime = StringReplace($StartTimes[$dataIndex], ":", "")
                        $tempEtime = StringReplace($EndTimes[$dataIndex], ":", "")
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, "F " & $tempStime & "-" & $tempEtime, "AJ" & $EWriteCount)

                        $ACounter    += 1
                        $EWriteCount += 1

                        ConsoleWrite(@CRLF & "Friday  " & $Temp & @CRLF)

                    EndIf
                Next

                $yesCount -= 1
                $tF = "N"

            ElseIf $tS = "Y" Then
                For $Index = $sdate To $edate
                    _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                    ; Finds the day based on its numerical value (1 = Sunday)
                    If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 7 Then
                        $Temp = $iYear & "-" & $iMonth & "-" & $iDay & "T" & "00" & ":" & "00" & ":" & "00" & ":" & "000"
                        $ShiftDayS[$ACounter][$DayIndex] = $Temp
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $ShiftDayS[$ACounter][$DayIndex], "AI" & $EWriteCount)

                        ; Send Name
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Formatted_Names[$dataIndex], "AA" & $EWriteCount)
                        ; Send Start Time
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $StartTimes[$dataIndex], "AB" & $EWriteCount)
                        ; Send End Time
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $EndTimes[$dataIndex], "AC" & $EWriteCount)
                        ; Send Work Hours
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $HoursWorked[$dataIndex], "AD" & $EWriteCount)
                        ; Send Work Group
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkGroup[$dataIndex], "AE" & $EWriteCount)
                        ; Send Department
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkDepartment, "AF" & $EWriteCount)
                        ; Send Supervisor
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Supervisors[$dataIndex], "AG" & $EWriteCount)
                        ; Send Notes
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkNotes[$dataIndex], "AH" & $EWriteCount)

                        ; Send Shift Number
                        $tempStime = StringReplace($StartTimes[$dataIndex], ":", "")
                        $tempEtime = StringReplace($EndTimes[$dataIndex], ":", "")
                        _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, "S " & $tempStime & "-" & $tempEtime, "AJ" & $EWriteCount)

                        $ACounter    += 1
                        $EWriteCount += 1

                        ConsoleWrite(@CRLF & "Saturday  " & $Temp & @CRLF)

                    EndIf
                Next

                $yesCount -= 1
                $tS = "N"

            Else
                ;Error Nothing equals "Y"
                ConsoleWrite(@CRLF & "Error Nothing equals 'Y'" & @CRLF)
            EndIf

            $DayIndex    += 1
            $LoopCount   += 1

        WEnd

        $Array_Index += 1
        $dataIndex   += 1
        $dCount      += 1

    WEnd

    MsgBox($MB_ICONINFORMATION, "Scheduler_Bot", "Finished Sending Data", 2)

EndFunc

 

Edited by nooneclose

Share this post


Link to post
Share on other sites
nooneclose

I am still trying to figure this out. Not solved yet. 

 

Edited by nooneclose

Share this post


Link to post
Share on other sites
nooneclose

I figured it out here is a good chunk of the finished code:

#include <Array.au3>                                ; Allows arrays
#include <date.au3>                                 ; Allows Date functions
#include <Misc.au3>                                 ; Allows the "is pressed" function to be used
#include <MsgBoxConstants.au3>                      ; Allows message box to be used
#include <Excel.au3>                                ; Allows Excel functions
#include <File.au3>                                 ; Allows file manipulation
#include <Word.au3>                                 ; Allows certain word functions
#include <Constants.au3>                            ; Allows constants to be used
#include <StaticConstants.au3>                      ; Allows static constants
#include "ExtMsgBox.au3"                            ; Allows custom MsgBoxs

Global $WeekASunday                                 ; First Sunday of the Semester always week A
Global $WeekAMonday                                 ; First Monday of the Semester always week A
Global $WeekATuesday                                ; First Tuesday of the Semester always week A
Global $WeekAWednesday                              ; First Wednesday of the Semester always week A
Global $WeekAThursday                               ; First Thursday of the Semester always week A
Global $WeekAFriday                                 ; First Friday of the Semester always week A
Global $WeekASaturday                               ; First Saturday of the Semester always week A
Global $modResult = 9999999                         ; Is what the name suggests / Given crazy numbr for a reason - see line 1027-1833

Global $today = _NowDate()                          ; Gets todays (current) date



; Step 7
Func SendData()

    ;*******************************************************************************
    ; Sends all collected data to the Excel file in correct order for Upload
    ;*******************************************************************************
    MsgBox($MB_ICONINFORMATION, "Scheduler_Bot", "Sending Data", 2)

    ; Loop Counters
    $LoopCount   = 0
    $Array_Index = 0
    $DayIndex    = 0
    $dataIndex   = 0

    ; Counter for the day of the week
    Local $dCount = 2

    ; Counter for the numbers of Ys
    Local $yesCount = 0

    ; Excel Write Counter (VERY IMPORTANT!)
    Local $EWriteCount = 2

    ; Declare the global shift arrays (Sunday - Saturday)
    Global $ShiftDaySU[100][600]
    Global $ShiftDayM[100][600]
    Global $ShiftDayT[100][600]
    Global $ShiftDayW[100][600]
    Global $ShiftDayR[100][600]
    Global $ShiftDayF[100][600]
    Global $ShiftDayS[100][600]
    Global $sDates[400]

    While $Formatted_Names[$dataIndex] <> $Formatted_Names[$IndexRows] ; $LoopCount < $IndexRows

        $ACounter = 0 ; Array counter

        ; Gets the Start date from the array
        $Temp = $StartDate[$Array_Index]
        $TempStart = StringLeft($Temp, 8)
        $StartTempYear  = StringLeft($TempStart, 4)
        $StartTempMonth = StringMid($TempStart, 5, 2)
        $StartTempDay   = StringRight($TempStart, 2)

        ; Gets the End date from the array
        $Temp = $EndDate[$Array_Index]
        $TempEnd = StringLeft($Temp, 8)
        $EndTempYear  = StringLeft($TempEnd, 4)
        $EndTempMonth = StringMid($TempEnd, 5, 2)
        $EndTempDay   = StringRight($TempEnd, 2)

        ; The starting date (in value form)
        $sdate = _DateToDayValue($StartTempYear, $StartTempMonth, $StartTempDay)    ;_DateToDayValue(2019,1,9)
        ;ConsoleWrite(@CRLF & "$start date  " & $sdate & @CRLF & @CRLF)

        ; The ending date (in value form)
        $edate = _DateToDayValue($EndTempYear, $EndTempMonth, $EndTempDay)          ;_DateToDayValue(2019,4,9)
        ;ConsoleWrite(@CRLF & "$end date  " & $edate & @CRLF & @CRLF)

        ; Variables for readability
        Local $iYear, $iMonth, $iDay

        ;Stores what day of the week that shift lands on
        Local $tSU = _Excel_RangeRead($OpenWorkbook, Default, "I" & $dCount)
            If $tSU = "Y" Then
                $yesCount = 1
            EndIf
        Local $tM  = _Excel_RangeRead($OpenWorkbook, Default, "J" & $dCount)
            If $tM = "Y" Then
                $yesCount += 1
            EndIf
        Local $tT  = _Excel_RangeRead($OpenWorkbook, Default, "K" & $dCount)
            If $tT = "Y" Then
                $yesCount += 1
            EndIf
        Local $tW  = _Excel_RangeRead($OpenWorkbook, Default, "L" & $dCount)
            If $tW = "Y" Then
                $yesCount += 1
            EndIf
        Local $tR  = _Excel_RangeRead($OpenWorkbook, Default, "M" & $dCount)
            If $tR = "Y" Then
                $yesCount += 1
            EndIf
        Local $tF  = _Excel_RangeRead($OpenWorkbook, Default, "N" & $dCount)
            If $tF = "Y" Then
                $yesCount += 1
            EndIf
        Local $tS  = _Excel_RangeRead($OpenWorkbook, Default, "O" & $dCount)
            If $tS = "Y" Then
                $yesCount += 1
            EndIf

        ConsoleWrite(@CRLF & @CRLF)
        ConsoleWrite($tSU & @CRLF)
        ConsoleWrite($tM & @CRLF)
        ConsoleWrite($tT & @CRLF)
        ConsoleWrite($tW & @CRLF)
        ConsoleWrite($tR & @CRLF)
        ConsoleWrite($tF & @CRLF)
        ConsoleWrite($tS & @CRLF)
        ConsoleWrite(@CRLF & @CRLF)

        ; Check to see if they work every other week
        Local $rotationWeek  = _Excel_RangeRead($OpenWorkbook, Default, "U" & $dCount)
        Local $repeatWeek    = _Excel_RangeRead($OpenWorkbook, Default, "V" & $dCount)

        While $yesCount > 0

            If $tSU = "Y" Then
                If $repeatWeek = 1 Then
                    Local $MainLoopCount = 0
                    For $Index = $sdate To $edate
                        ; Send appropriate Work Shift dates $rotationWeek
                        ; Week A Shift
                        If $modResult = 0 And $MainLoopCount >= 1 Then
                            $Index += 1
                        ; Week B Shift
                        ElseIf $modResult <> 0 And $modResult <> 9999999 And $MainLoopCount >= 1 Then
                            $Index += 2
                        EndIf

                        _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                        ; Finds the day based on its numerical value (1 = Sunday)
                        If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 1 Then
                            $Temp = $iYear & "-" & $iMonth & "-" & $iDay & "T" & "00" & ":" & "00" & ":" & "00" & ":" & "000"
                            $ShiftDaySU[$ACounter][$DayIndex] = $Temp
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $ShiftDaySU[$ACounter][$DayIndex], "AI" & $EWriteCount)

                            ; Send Name
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Formatted_Names[$dataIndex], "AA" & $EWriteCount)
                            ; Send Start Time
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $StartTimes[$dataIndex], "AB" & $EWriteCount)
                            ; Send End Time
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $EndTimes[$dataIndex], "AC" & $EWriteCount)
                            ; Send Work Hours
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $HoursWorked[$dataIndex], "AD" & $EWriteCount)
                            ; Send Work Group
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkGroup[$dataIndex], "AE" & $EWriteCount)
                            ; Send Department
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkDepartment, "AF" & $EWriteCount)
                            ; Send Supervisor
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Supervisors[$dataIndex], "AG" & $EWriteCount)
                            ; Send Notes
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkNotes[$dataIndex], "AH" & $EWriteCount)

                            ; Send Shift Number
                            $tempStime = StringReplace($StartTimes[$dataIndex], ":", "")
                            $tempEtime = StringReplace($EndTimes[$dataIndex], ":", "")
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, "SU " & $tempStime & "-" & $tempEtime, "AJ" & $EWriteCount)

                            $ACounter    += 1
                            $EWriteCount += 1

                            ConsoleWrite(@CRLF & "In Main loop: Sunday " & $Temp & @CRLF)

                        EndIf

                        $MainLoopCount += 1

                    Next

                    $yesCount -= 1
                    $tSU = "N"
                    $modResult = 9999999
                Else
                    Local $LoopCount = 0
                    ; Get first potential work day
                    For $Index = $sdate To $edate
                        _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                        ; Finds the day based on its numerical value (1 = Sunday)

                        If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 1 Then
                            $TempFirstShift = $iYear & "/" & $iMonth & "/" & $iDay & " " & "00" & ":" & "00" & ":" & "00"
                        EndIf

                        ; Makes sure the For loop only loops once
                        If $LoopCount = 7 Then ExitLoop
                        $LoopCount += 1
                    Next

                    ConsoleWrite(@CRLF & "Week A Sunday " & $WeekASunday & @CRLF)
                    ConsoleWrite(@CRLF & "Potential first shift " & $TempFirstShift & @CRLF)

                    ; Use _Datediff
                    Local $iDateCalc = _DateDiff('D', $WeekASunday, $TempFirstShift)

                    ConsoleWrite(@CRLF & "Difference in days is " & $iDateCalc & @CRLF)

                    ; Use Mod
                    $modResult = Mod($iDateCalc, 14)
                    ConsoleWrite(@CRLF & "Mod Result " & $modResult & @CRLF)

                    ; check to see if it is suppose to be week a or week b
                    If $rotationWeek = 1 And $modResult = 0 Then
                        ; Keep going as planned
                    ElseIf $rotationWeek = 2 And $modResult = 0 Then
                        ; Something strange is in the neighborhood
                        $TempDateHolder = _DateAdd('d', 7, $TempFirstShift)

                        ConsoleWrite(@CRLF & "Correct First Shift " & $TempDateHolder & @CRLF)
                        ConsoleWrite(@CRLF & "Start date " & $sdate & @CRLF)

                        $tempStartDate = StringReplace($TempDateHolder, "/", "")

                        ; Gets the Start date from the array
                        $TempSD = $tempStartDate
                        $Temp_Start = StringLeft($TempSD, 8)
                        $Start_TempYear  = StringLeft($Temp_Start, 4)
                        $Start_TempMonth = StringMid($Temp_Start, 5, 2)
                        $Start_TempDay   = StringRight($Temp_Start, 2)

                        $sdate = _DateToDayValue($Start_TempYear, $Start_TempMonth, $Start_TempDay)
                        ConsoleWrite(@CRLF & @CRLF & "Start date After change " & $sdate & @CRLF & @CRLF)

                    EndIf
                    ; Set repeat week = 1 so the main loop will send the new dates
                    $repeatWeek = 1
                EndIf

            ElseIf $tM = "Y" Then
                If $repeatWeek = 1 Then
                    Local $MainLoopCount = 0
                    For $Index = $sdate To $edate
                        ; Send appropriate Work Shift dates $rotationWeek
                        ; Week A Shift
                        If $modResult = 0 And $MainLoopCount >= 1 Then
                            $Index += 1
                        ; Week B Shift
                        ElseIf $modResult <> 0 And $modResult <> 9999999 And $MainLoopCount >= 1 Then
                            $Index += 2
                        EndIf

                        _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                        ; Finds the day based on its numerical value (1 = Sunday)
                        If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 2 Then
                            $Temp = $iYear & "-" & $iMonth & "-" & $iDay & "T" & "00" & ":" & "00" & ":" & "00" & ":" & "000"
                            $ShiftDayM[$ACounter][$DayIndex] = $Temp
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $ShiftDayM[$ACounter][$DayIndex], "AI" & $EWriteCount)

                            ; Send Name
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Formatted_Names[$dataIndex], "AA" & $EWriteCount)
                            ; Send Start Time
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $StartTimes[$dataIndex], "AB" & $EWriteCount)
                            ; Send End Time
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $EndTimes[$dataIndex], "AC" & $EWriteCount)
                            ; Send Work Hours
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $HoursWorked[$dataIndex], "AD" & $EWriteCount)
                            ; Send Work Group
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkGroup[$dataIndex], "AE" & $EWriteCount)
                            ; Send Department
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkDepartment, "AF" & $EWriteCount)
                            ; Send Supervisor
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Supervisors[$dataIndex], "AG" & $EWriteCount)
                            ; Send Notes
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkNotes[$dataIndex], "AH" & $EWriteCount)

                            ; Send Shift Number
                            $tempStime = StringReplace($StartTimes[$dataIndex], ":", "")
                            $tempEtime = StringReplace($EndTimes[$dataIndex], ":", "")
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, "M " & $tempStime & "-" & $tempEtime, "AJ" & $EWriteCount)

                            $ACounter    += 1
                            $EWriteCount += 1

                            ConsoleWrite(@CRLF & "In Main loop: Monday " & $Temp & @CRLF)

                        EndIf

                        $MainLoopCount += 1

                    Next

                    $yesCount -= 1
                    $tM = "N"
                    $modResult = 9999999
                Else
                    Local $LoopCount = 0
                    ; Get first potential work day
                    For $Index = $sdate To $edate
                        _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                        ; Finds the day based on its numerical value (1 = Sunday)

                        If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 2 Then
                            $TempFirstShift = $iYear & "/" & $iMonth & "/" & $iDay & " " & "00" & ":" & "00" & ":" & "00"
                        EndIf

                        ; Makes sure the For loop only loops once
                        If $LoopCount = 7 Then ExitLoop
                        $LoopCount += 1
                    Next

                    ConsoleWrite(@CRLF & "Week A Monday " & $WeekAMonday & @CRLF)
                    ConsoleWrite(@CRLF & "Potential first shift " & $TempFirstShift & @CRLF)

                    ; Use _Datediff
                    Local $iDateCalc = _DateDiff('D', $WeekAMonday, $TempFirstShift)

                    ConsoleWrite(@CRLF & "Difference in days is " & $iDateCalc & @CRLF)

                    ; Use Mod
                    $modResult = Mod($iDateCalc, 14)
                    ConsoleWrite(@CRLF & "Mod Result " & $modResult & @CRLF)

                    ; check to see if it is suppose to be week a or week b
                    If $rotationWeek = 1 And $modResult = 0 Then
                        ; Keep going as planned
                    ElseIf $rotationWeek = 2 And $modResult = 0 Then
                        ; Something strange is in the neighborhood
                        $TempDateHolder = _DateAdd('d', 7, $TempFirstShift)

                        ConsoleWrite(@CRLF & "Correct First Shift " & $TempDateHolder & @CRLF)
                        ConsoleWrite(@CRLF & "Start date " & $sdate & @CRLF)

                        $tempStartDate = StringReplace($TempDateHolder, "/", "")

                        ; Gets the Start date from the array
                        $TempSD = $tempStartDate
                        $Temp_Start = StringLeft($TempSD, 8)
                        $Start_TempYear  = StringLeft($Temp_Start, 4)
                        $Start_TempMonth = StringMid($Temp_Start, 5, 2)
                        $Start_TempDay   = StringRight($Temp_Start, 2)

                        $sdate = _DateToDayValue($Start_TempYear, $Start_TempMonth, $Start_TempDay)
                        ConsoleWrite(@CRLF & @CRLF & "Start date After change " & $sdate & @CRLF & @CRLF)

                    EndIf
                    ; Set repeat week = 1 so the main loop will send the new dates
                    $repeatWeek = 1
                EndIf

            ElseIf $tT = "Y" Then
                If $repeatWeek = 1 Then
                    Local $MainLoopCount = 0
                    For $Index = $sdate To $edate
                        ; Send appropriate Work Shift dates $rotationWeek
                        ; Week A Shift
                        If $modResult = 0 And $MainLoopCount >= 1 Then
                            $Index += 1
                        ; Week B Shift
                        ElseIf $modResult <> 0 And $modResult <> 9999999 And $MainLoopCount >= 1 Then
                            $Index += 2
                        EndIf

                        _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                        ; Finds the day based on its numerical value (1 = Sunday)
                        If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 3 Then
                            $Temp = $iYear & "-" & $iMonth & "-" & $iDay & "T" & "00" & ":" & "00" & ":" & "00" & ":" & "000"
                            $ShiftDayT[$ACounter][$DayIndex] = $Temp
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $ShiftDayT[$ACounter][$DayIndex], "AI" & $EWriteCount)

                            ; Send Name
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Formatted_Names[$dataIndex], "AA" & $EWriteCount)
                            ; Send Start Time
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $StartTimes[$dataIndex], "AB" & $EWriteCount)
                            ; Send End Time
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $EndTimes[$dataIndex], "AC" & $EWriteCount)
                            ; Send Work Hours
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $HoursWorked[$dataIndex], "AD" & $EWriteCount)
                            ; Send Work Group
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkGroup[$dataIndex], "AE" & $EWriteCount)
                            ; Send Department
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkDepartment, "AF" & $EWriteCount)
                            ; Send Supervisor
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Supervisors[$dataIndex], "AG" & $EWriteCount)
                            ; Send Notes
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkNotes[$dataIndex], "AH" & $EWriteCount)

                            ; Send Shift Number
                            $tempStime = StringReplace($StartTimes[$dataIndex], ":", "")
                            $tempEtime = StringReplace($EndTimes[$dataIndex], ":", "")
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, "T " & $tempStime & "-" & $tempEtime, "AJ" & $EWriteCount)

                            $ACounter    += 1
                            $EWriteCount += 1

                            ConsoleWrite(@CRLF & "In Main loop: Tuesday " & $Temp & @CRLF)

                        EndIf

                        $MainLoopCount += 1

                    Next

                    $yesCount -= 1
                    $tT = "N"
                    $modResult = 9999999
                Else
                    Local $LoopCount = 0
                    ; Get first potential work day
                    For $Index = $sdate To $edate
                        _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                        ; Finds the day based on its numerical value (1 = Sunday)

                        If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 3 Then
                            $TempFirstShift = $iYear & "/" & $iMonth & "/" & $iDay & " " & "00" & ":" & "00" & ":" & "00"
                        EndIf

                        ; Makes sure the For loop only loops once
                        If $LoopCount = 7 Then ExitLoop
                        $LoopCount += 1
                    Next

                    ConsoleWrite(@CRLF & "Week A Tuesday " & $WeekATuesday & @CRLF)
                    ConsoleWrite(@CRLF & "Potential first shift " & $TempFirstShift & @CRLF)

                    ; Use _Datediff
                    Local $iDateCalc = _DateDiff('D', $WeekATuesday, $TempFirstShift)

                    ConsoleWrite(@CRLF & "Difference in days is " & $iDateCalc & @CRLF)

                    ; Use Mod
                    $modResult = Mod($iDateCalc, 14)
                    ConsoleWrite(@CRLF & "Mod Result " & $modResult & @CRLF)

                    ; check to see if it is suppose to be week a or week b
                    If $rotationWeek = 1 And $modResult = 0 Then
                        ; Keep going as planned
                    ElseIf $rotationWeek = 2 And $modResult = 0 Then
                        ; Something strange is in the neighborhood
                        $TempDateHolder = _DateAdd('d', 7, $TempFirstShift)

                        ConsoleWrite(@CRLF & "Correct First Shift " & $TempDateHolder & @CRLF)
                        ConsoleWrite(@CRLF & "Start date " & $sdate & @CRLF)

                        $tempStartDate = StringReplace($TempDateHolder, "/", "")

                        ; Gets the Start date from the array
                        $TempSD = $tempStartDate
                        $Temp_Start = StringLeft($TempSD, 8)
                        $Start_TempYear  = StringLeft($Temp_Start, 4)
                        $Start_TempMonth = StringMid($Temp_Start, 5, 2)
                        $Start_TempDay   = StringRight($Temp_Start, 2)

                        $sdate = _DateToDayValue($Start_TempYear, $Start_TempMonth, $Start_TempDay)
                        ConsoleWrite(@CRLF & @CRLF & "Start date After change " & $sdate & @CRLF & @CRLF)

                    EndIf
                    ; Set repeat week = 1 so the main loop will send the new dates
                    $repeatWeek = 1
                EndIf

            ElseIf $tW = "Y" Then
                If $repeatWeek = 1 Then
                    Local $MainLoopCount = 0
                    For $Index = $sdate To $edate
                        ; Send appropriate Work Shift dates $rotationWeek
                        ; Week A Shift
                        If $modResult = 0 And $MainLoopCount >= 1 Then
                            $Index += 1
                        ; Week B Shift
                        ElseIf $modResult <> 0 And $modResult <> 9999999 And $MainLoopCount >= 1 Then
                            $Index += 2
                        EndIf

                        _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                        ; Finds the day based on its numerical value (1 = Sunday)
                        If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 4 Then
                            $Temp = $iYear & "-" & $iMonth & "-" & $iDay & "T" & "00" & ":" & "00" & ":" & "00" & ":" & "000"
                            $ShiftDayW[$ACounter][$DayIndex] = $Temp
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $ShiftDayW[$ACounter][$DayIndex], "AI" & $EWriteCount)

                            ; Send Name
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Formatted_Names[$dataIndex], "AA" & $EWriteCount)
                            ; Send Start Time
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $StartTimes[$dataIndex], "AB" & $EWriteCount)
                            ; Send End Time
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $EndTimes[$dataIndex], "AC" & $EWriteCount)
                            ; Send Work Hours
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $HoursWorked[$dataIndex], "AD" & $EWriteCount)
                            ; Send Work Group
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkGroup[$dataIndex], "AE" & $EWriteCount)
                            ; Send Department
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkDepartment, "AF" & $EWriteCount)
                            ; Send Supervisor
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Supervisors[$dataIndex], "AG" & $EWriteCount)
                            ; Send Notes
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkNotes[$dataIndex], "AH" & $EWriteCount)

                            ; Send Shift Number
                            $tempStime = StringReplace($StartTimes[$dataIndex], ":", "")
                            $tempEtime = StringReplace($EndTimes[$dataIndex], ":", "")
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, "W " & $tempStime & "-" & $tempEtime, "AJ" & $EWriteCount)

                            $ACounter    += 1
                            $EWriteCount += 1

                            ConsoleWrite(@CRLF & "In Main loop: Wednesday " & $Temp & @CRLF)

                        EndIf

                        $MainLoopCount += 1

                    Next

                    $yesCount -= 1
                    $tW = "N"
                    $modResult = 9999999
                Else
                    Local $LoopCount = 0
                    ; Get first potential work day
                    For $Index = $sdate To $edate
                        _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                        ; Finds the day based on its numerical value (1 = Sunday)

                        If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 4 Then
                            $TempFirstShift = $iYear & "/" & $iMonth & "/" & $iDay & " " & "00" & ":" & "00" & ":" & "00"
                        EndIf

                        ; Makes sure the For loop only loops once
                        If $LoopCount = 7 Then ExitLoop
                        $LoopCount += 1
                    Next

                    ConsoleWrite(@CRLF & "Week A Wednesday " & $WeekAWednesday & @CRLF)
                    ConsoleWrite(@CRLF & "Potential first shift " & $TempFirstShift & @CRLF)

                    ; Use _Datediff
                    Local $iDateCalc = _DateDiff('D', $WeekAWednesday, $TempFirstShift)

                    ConsoleWrite(@CRLF & "Difference in days is " & $iDateCalc & @CRLF)

                    ; Use Mod
                    $modResult = Mod($iDateCalc, 14)
                    ConsoleWrite(@CRLF & "Mod Result " & $modResult & @CRLF)

                    ; check to see if it is suppose to be week a or week b
                    If $rotationWeek = 1 And $modResult = 0 Then
                        ; Keep going as planned
                    ElseIf $rotationWeek = 2 And $modResult = 0 Then
                        ; Something strange is in the neighborhood
                        $TempDateHolder = _DateAdd('d', 7, $TempFirstShift)

                        ConsoleWrite(@CRLF & "Correct First Shift " & $TempDateHolder & @CRLF)
                        ConsoleWrite(@CRLF & "Start date " & $sdate & @CRLF)

                        $tempStartDate = StringReplace($TempDateHolder, "/", "")

                        ; Gets the Start date from the array
                        $TempSD = $tempStartDate
                        $Temp_Start = StringLeft($TempSD, 8)
                        $Start_TempYear  = StringLeft($Temp_Start, 4)
                        $Start_TempMonth = StringMid($Temp_Start, 5, 2)
                        $Start_TempDay   = StringRight($Temp_Start, 2)

                        $sdate = _DateToDayValue($Start_TempYear, $Start_TempMonth, $Start_TempDay)
                        ConsoleWrite(@CRLF & @CRLF & "Start date After change " & $sdate & @CRLF & @CRLF)

                    EndIf
                    ; Set repeat week = 1 so the main loop will send the new dates
                    $repeatWeek = 1
                EndIf

            ElseIf $tR = "Y" Then
                If $repeatWeek = 1 Then
                    Local $MainLoopCount = 0
                    For $Index = $sdate To $edate
                        ; Send appropriate Work Shift dates $rotationWeek
                        ; Week A Shift
                        If $modResult = 0 And $MainLoopCount >= 1 Then
                            $Index += 1
                        ; Week B Shift
                        ElseIf $modResult <> 0 And $modResult <> 9999999 And $MainLoopCount >= 1 Then
                            $Index += 2
                        EndIf

                        _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                        ; Finds the day based on its numerical value (1 = Sunday)
                        If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 5 Then
                            $Temp = $iYear & "-" & $iMonth & "-" & $iDay & "T" & "00" & ":" & "00" & ":" & "00" & ":" & "000"
                            $ShiftDayR[$ACounter][$DayIndex] = $Temp
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $ShiftDayR[$ACounter][$DayIndex], "AI" & $EWriteCount)

                            ; Send Name
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Formatted_Names[$dataIndex], "AA" & $EWriteCount)
                            ; Send Start Time
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $StartTimes[$dataIndex], "AB" & $EWriteCount)
                            ; Send End Time
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $EndTimes[$dataIndex], "AC" & $EWriteCount)
                            ; Send Work Hours
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $HoursWorked[$dataIndex], "AD" & $EWriteCount)
                            ; Send Work Group
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkGroup[$dataIndex], "AE" & $EWriteCount)
                            ; Send Department
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkDepartment, "AF" & $EWriteCount)
                            ; Send Supervisor
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Supervisors[$dataIndex], "AG" & $EWriteCount)
                            ; Send Notes
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkNotes[$dataIndex], "AH" & $EWriteCount)

                            ; Send Shift Number
                            $tempStime = StringReplace($StartTimes[$dataIndex], ":", "")
                            $tempEtime = StringReplace($EndTimes[$dataIndex], ":", "")
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, "R " & $tempStime & "-" & $tempEtime, "AJ" & $EWriteCount)

                            $ACounter    += 1
                            $EWriteCount += 1

                            ConsoleWrite(@CRLF & "In Main loop: Thursday " & $Temp & @CRLF)

                        EndIf

                        $MainLoopCount += 1

                    Next

                    $yesCount -= 1
                    $tR = "N"
                    $modResult = 9999999
                Else
                    Local $LoopCount = 0
                    ; Get first potential work day
                    For $Index = $sdate To $edate
                        _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                        ; Finds the day based on its numerical value (1 = Sunday)

                        If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 5 Then
                            $TempFirstShift = $iYear & "/" & $iMonth & "/" & $iDay & " " & "00" & ":" & "00" & ":" & "00"
                        EndIf

                        ; Makes sure the For loop only loops once
                        If $LoopCount = 7 Then ExitLoop
                        $LoopCount += 1
                    Next

                    ConsoleWrite(@CRLF & "Week A Thursday " & $WeekAThursday & @CRLF)
                    ConsoleWrite(@CRLF & "Potential first shift " & $TempFirstShift & @CRLF)

                    ; Use _Datediff
                    Local $iDateCalc = _DateDiff('D', $WeekAThursday, $TempFirstShift)

                    ConsoleWrite(@CRLF & "Difference in days is " & $iDateCalc & @CRLF)

                    ; Use Mod
                    $modResult = Mod($iDateCalc, 14)
                    ConsoleWrite(@CRLF & "Mod Result " & $modResult & @CRLF)

                    ; check to see if it is suppose to be week a or week b
                    If $rotationWeek = 1 And $modResult = 0 Then
                        ; Keep going as planned
                    ElseIf $rotationWeek = 2 And $modResult = 0 Then
                        ; Something strange is in the neighborhood
                        $TempDateHolder = _DateAdd('d', 7, $TempFirstShift)

                        ConsoleWrite(@CRLF & "Correct First Shift " & $TempDateHolder & @CRLF)
                        ConsoleWrite(@CRLF & "Start date " & $sdate & @CRLF)

                        $tempStartDate = StringReplace($TempDateHolder, "/", "")

                        ; Gets the Start date from the array
                        $TempSD = $tempStartDate
                        $Temp_Start = StringLeft($TempSD, 8)
                        $Start_TempYear  = StringLeft($Temp_Start, 4)
                        $Start_TempMonth = StringMid($Temp_Start, 5, 2)
                        $Start_TempDay   = StringRight($Temp_Start, 2)

                        $sdate = _DateToDayValue($Start_TempYear, $Start_TempMonth, $Start_TempDay)
                        ConsoleWrite(@CRLF & @CRLF & "Start date After change " & $sdate & @CRLF & @CRLF)

                    EndIf
                    ; Set repeat week = 1 so the main loop will send the new dates
                    $repeatWeek = 1
                EndIf

            ElseIf $tF = "Y" Then
                If $repeatWeek = 1 Then
                    Local $MainLoopCount = 0
                    For $Index = $sdate To $edate
                        ; Send appropriate Work Shift dates $rotationWeek
                        ; Week A Shift
                        If $modResult = 0 And $MainLoopCount >= 1 Then
                            $Index += 1
                        ; Week B Shift
                        ElseIf $modResult <> 0 And $modResult <> 9999999 And $MainLoopCount >= 1 Then
                            $Index += 2
                        EndIf

                        _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                        ; Finds the day based on its numerical value (1 = Sunday)
                        If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 6 Then
                            $Temp = $iYear & "-" & $iMonth & "-" & $iDay & "T" & "00" & ":" & "00" & ":" & "00" & ":" & "000"
                            $ShiftDayF[$ACounter][$DayIndex] = $Temp
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $ShiftDayF[$ACounter][$DayIndex], "AI" & $EWriteCount)

                            ; Send Name
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Formatted_Names[$dataIndex], "AA" & $EWriteCount)
                            ; Send Start Time
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $StartTimes[$dataIndex], "AB" & $EWriteCount)
                            ; Send End Time
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $EndTimes[$dataIndex], "AC" & $EWriteCount)
                            ; Send Work Hours
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $HoursWorked[$dataIndex], "AD" & $EWriteCount)
                            ; Send Work Group
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkGroup[$dataIndex], "AE" & $EWriteCount)
                            ; Send Department
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkDepartment, "AF" & $EWriteCount)
                            ; Send Supervisor
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Supervisors[$dataIndex], "AG" & $EWriteCount)
                            ; Send Notes
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkNotes[$dataIndex], "AH" & $EWriteCount)

                            ; Send Shift Number
                            $tempStime = StringReplace($StartTimes[$dataIndex], ":", "")
                            $tempEtime = StringReplace($EndTimes[$dataIndex], ":", "")
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, "F " & $tempStime & "-" & $tempEtime, "AJ" & $EWriteCount)

                            $ACounter    += 1
                            $EWriteCount += 1

                            ConsoleWrite(@CRLF & "In Main loop: Friday " & $Temp & @CRLF)

                        EndIf

                        $MainLoopCount += 1

                    Next

                    $yesCount -= 1
                    $tF = "N"
                    $modResult = 9999999
                Else
                    Local $LoopCount = 0
                    ; Get first potential work day
                    For $Index = $sdate To $edate
                        _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                        ; Finds the day based on its numerical value (1 = Sunday)

                        If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 6 Then
                            $TempFirstShift = $iYear & "/" & $iMonth & "/" & $iDay & " " & "00" & ":" & "00" & ":" & "00"
                        EndIf

                        ; Makes sure the For loop only loops once
                        If $LoopCount = 7 Then ExitLoop
                        $LoopCount += 1
                    Next

                    ConsoleWrite(@CRLF & "Week A Friday " & $WeekAFriday & @CRLF)
                    ConsoleWrite(@CRLF & "Potential first shift " & $TempFirstShift & @CRLF)

                    ; Use _Datediff
                    Local $iDateCalc = _DateDiff('D', $WeekAFriday, $TempFirstShift)

                    ConsoleWrite(@CRLF & "Difference in days is " & $iDateCalc & @CRLF)

                    ; Use Mod
                    $modResult = Mod($iDateCalc, 14)
                    ConsoleWrite(@CRLF & "Mod Result " & $modResult & @CRLF)

                    ; check to see if it is suppose to be week a or week b
                    If $rotationWeek = 1 And $modResult = 0 Then
                        ; Keep going as planned
                    ElseIf $rotationWeek = 2 And $modResult = 0 Then
                        ; Something strange is in the neighborhood
                        $TempDateHolder = _DateAdd('d', 7, $TempFirstShift)

                        ConsoleWrite(@CRLF & "Correct First Shift " & $TempDateHolder & @CRLF)
                        ConsoleWrite(@CRLF & "Start date " & $sdate & @CRLF)

                        $tempStartDate = StringReplace($TempDateHolder, "/", "")

                        ; Gets the Start date from the array
                        $TempSD = $tempStartDate
                        $Temp_Start = StringLeft($TempSD, 8)
                        $Start_TempYear  = StringLeft($Temp_Start, 4)
                        $Start_TempMonth = StringMid($Temp_Start, 5, 2)
                        $Start_TempDay   = StringRight($Temp_Start, 2)

                        $sdate = _DateToDayValue($Start_TempYear, $Start_TempMonth, $Start_TempDay)
                        ConsoleWrite(@CRLF & @CRLF & "Start date After change " & $sdate & @CRLF & @CRLF)

                    EndIf
                    ; Set repeat week = 1 so the main loop will send the new dates
                    $repeatWeek = 1
                EndIf

            ElseIf $tS = "Y" Then
                If $repeatWeek = 1 Then
                    Local $MainLoopCount = 0
                    For $Index = $sdate To $edate
                        ; Send appropriate Work Shift dates $rotationWeek
                        ; Week A Shift
                        If $modResult = 0 And $MainLoopCount >= 1 Then
                            $Index += 1
                        ; Week B Shift
                        ElseIf $modResult <> 0 And $modResult <> 9999999 And $MainLoopCount >= 1 Then
                            $Index += 2
                        EndIf

                        _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                        ; Finds the day based on its numerical value (1 = Sunday)
                        If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 7 Then
                            $Temp = $iYear & "-" & $iMonth & "-" & $iDay & "T" & "00" & ":" & "00" & ":" & "00" & ":" & "000"
                            $ShiftDayS[$ACounter][$DayIndex] = $Temp
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $ShiftDayS[$ACounter][$DayIndex], "AI" & $EWriteCount)

                            ; Send Name
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Formatted_Names[$dataIndex], "AA" & $EWriteCount)
                            ; Send Start Time
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $StartTimes[$dataIndex], "AB" & $EWriteCount)
                            ; Send End Time
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $EndTimes[$dataIndex], "AC" & $EWriteCount)
                            ; Send Work Hours
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $HoursWorked[$dataIndex], "AD" & $EWriteCount)
                            ; Send Work Group
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkGroup[$dataIndex], "AE" & $EWriteCount)
                            ; Send Department
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkDepartment, "AF" & $EWriteCount)
                            ; Send Supervisor
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $Supervisors[$dataIndex], "AG" & $EWriteCount)
                            ; Send Notes
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $WorkNotes[$dataIndex], "AH" & $EWriteCount)

                            ; Send Shift Number
                            $tempStime = StringReplace($StartTimes[$dataIndex], ":", "")
                            $tempEtime = StringReplace($EndTimes[$dataIndex], ":", "")
                            _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, "S " & $tempStime & "-" & $tempEtime, "AJ" & $EWriteCount)

                            $ACounter    += 1
                            $EWriteCount += 1

                            ConsoleWrite(@CRLF & "In Main loop: Saturday " & $Temp & @CRLF)

                        EndIf

                        $MainLoopCount += 1

                    Next

                    $yesCount -= 1
                    $tS = "N"
                    $modResult = 9999999
                Else
                    Local $LoopCount = 0
                    ; Get first potential work day
                    For $Index = $sdate To $edate
                        _DayValueToDate($Index, $iYear, $iMonth, $iDay)
                        ; Finds the day based on its numerical value (1 = Sunday)

                        If _DateToDayOfWeek($iYear, $iMonth, $iDay) = 7 Then
                            $TempFirstShift = $iYear & "/" & $iMonth & "/" & $iDay & " " & "00" & ":" & "00" & ":" & "00"
                        EndIf

                        ; Makes sure the For loop only loops once
                        If $LoopCount = 7 Then ExitLoop
                        $LoopCount += 1
                    Next

                    ConsoleWrite(@CRLF & "Week A Saturday " & $WeekASaturday & @CRLF)
                    ConsoleWrite(@CRLF & "Potential first shift " & $TempFirstShift & @CRLF)

                    ; Use _Datediff
                    Local $iDateCalc = _DateDiff('D', $WeekASaturday, $TempFirstShift)

                    ConsoleWrite(@CRLF & "Difference in days is " & $iDateCalc & @CRLF)

                    ; Use Mod
                    $modResult = Mod($iDateCalc, 14)
                    ConsoleWrite(@CRLF & "Mod Result " & $modResult & @CRLF)

                    ; check to see if it is suppose to be week a or week b
                    If $rotationWeek = 1 And $modResult = 0 Then
                        ; Keep going as planned
                    ElseIf $rotationWeek = 2 And $modResult = 0 Then
                        ; Something strange is in the neighborhood
                        $TempDateHolder = _DateAdd('d', 7, $TempFirstShift)

                        ConsoleWrite(@CRLF & "Correct First Shift " & $TempDateHolder & @CRLF)
                        ConsoleWrite(@CRLF & "Start date " & $sdate & @CRLF)

                        $tempStartDate = StringReplace($TempDateHolder, "/", "")

                        ; Gets the Start date from the array
                        $TempSD = $tempStartDate
                        $Temp_Start = StringLeft($TempSD, 8)
                        $Start_TempYear  = StringLeft($Temp_Start, 4)
                        $Start_TempMonth = StringMid($Temp_Start, 5, 2)
                        $Start_TempDay   = StringRight($Temp_Start, 2)

                        $sdate = _DateToDayValue($Start_TempYear, $Start_TempMonth, $Start_TempDay)
                        ConsoleWrite(@CRLF & @CRLF & "Start date After change " & $sdate & @CRLF & @CRLF)

                    EndIf
                    ; Set repeat week = 1 so the main loop will send the new dates
                    $repeatWeek = 1
                EndIf
            Else
                ;Error Nothing equals "Y"
                ConsoleWrite(@CRLF & "Error Nothing equals 'Y'" & @CRLF)
            EndIf

            $DayIndex    += 1
            $LoopCount   += 1

        WEnd

        $Array_Index += 1
        $dataIndex   += 1
        $dCount      += 1

    WEnd

    MsgBox($MB_ICONINFORMATION, "Scheduler_Bot", "Finished Sending Data", 2)

EndFunc

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • gahhon
      By gahhon
      I have a python script automate.py and I wanna run it via CMD.
      As I know to execute python via CMD is something like this
      $CMD = "Something python here" Run(@ComSpec & " /c " & $CMD) But how can I just open the 1 CMD and send multiple commands to the CMD based on the function called?
      For instance like:

      Launch CMD and send python then send import automate If google() function is called - send automate.google() to the CMD If yahoo() function is called - send automate.yahoo() to the CMD  I don't want to execute multiple CMD to call the automate functions. This is due to inside the python script have global variable to handle duplicate flag.
      So if I execute multiple CMD to call the functions, the global variable will be keep new as NULL. Which is not my expectation.
       
      Thanks
    • gahhon
      By gahhon
      I only found that AutoIt can actually execute the entire python script or execute the .exe (converted to .exe from .py)
      But what if I just want call the particular function? If that possible to do so?
      This is because python can't create fancy GUI like AutoIT does. So my plan is use AutoIT to have fancy GUI.
      Then each buttons will trigger specific function in the python script or .exe file.
      For instances:
      btnSum - trigger function in python script or .exe file (funcSum)
      btnMinus - trigger function in python script or .exe file (funcMinus)
       
      Thanks for advance information.
    • nacerbaaziz
      By nacerbaaziz
      Hello my friends
      Can we create a single context menu on more than one item?
      For example, a context menu includes standardized options on more than one control, such as buttons or check boxes
      to Create a context menu on one item am using this function
      GUICtrlCreateContextMenu ($ HWND)
      How to link it with more than one element please?
      or if we can't do that, please give me a solution
      so i tried to add an context menus to all the controls but the script will be long, for that if their are any solutions i hope to give it to me
      thanks in advanced
    • SlackerAl
      By SlackerAl
      I have an issue when starting Excel with the following code
      #include <Excel.au3> #include <GUIConstantsEx.au3> Opt("GUIOnEventMode", 1) GUICreate("Excel Test", 600, 440) GUISetOnEvent($GUI_EVENT_CLOSE, "MenuExit") GUISetState(@SW_SHOW) ; Create application object Local $oExcel = _Excel_Open() If @error Then Exit MsgBox(0, "Excel UDF: _Excel_RangeFind Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended) ; sit here forever with an option to react every 10ms While 1 Sleep(10) WEnd Exit Func MenuExit() GUIDelete() Exit EndFunc If the Excel is a standard install, everything is OK. If Excel has the Kutools add-in (https://www.extendoffice.com/product/kutools-for-excel.html) installed and active the excel process runs (and is visible in task manager until killed), but it never displays. Disabling the add-in restores normal functionality.
      If I add some additional code to interact with the excel application then still nothing happens if the add-in is active. However, if Excel is started first and then the AutoIt code is run, it is able to interact with the Excel session as normal.
      Summary: The Excel add-in Kutools prevents excel being started with the _Excel_Open() command from AutoIt. Any AutoIt side work-arounds for this?
    • Morphice
      By Morphice
      Hello , 
      I am new to autoIT, I am wondering if someone could guide me in the correct path for this program. Attached are the steps for the program as well as what I currently have. Any help is greatly appreciated . Thank You. 
      * workbooks\sheets will be organized on per level basis , 1st sheet lvl 1 ,2nd sheet lvl 2 etc or workbook 1 = level 1, workbook 2 = level 2 etc. 
      ; = comments and reminders 
      #include <MsgBoxConstants.au3> #include <EditConstants.au3> #include<excel.au3> #include<Array.au3> Global Const $PatientLookupX = 320 Global Const $PatientLookupY = 64 ; down 1 and enter Global Const $PatientTextBoxX = 410 Global Const $PatientTextBoxY = 217 ; click , Ctrl + V , Enter Global Const $PHMhubX = 512 Global Const $PHMhubY = 613 ;click down 1 enter button Global Const $HealthRiskAssesmetX = 40 Global Const $HealthRiskAssesmetY = 162 Global Const $AddnewAssesmentX = 168 Global Const $AddnewAssesmentY = 98 Global Const $SelectAssesmentX = 342 Global Const $SelectAssesmentY = 98 ; Down 7 and enter Risk score new Global Const $EmptyAnswerBarX = 465 Global Const $EmptyAnswerBarY = 145 Global Const $LowriskpreventionX = 716 Global Const $LowriskpreventionY = 324 Global Const $MediumriskPreventionX = 716 Global Const $MediumriskPreventionY = 352 Global Const $HighriskPreventionX = 716 Global Const $HighriskPreventionY = 377 Global Const $CatatrosphicPreventionX = 714 Global Const $CatatrosphicPreventionY = 399 Global Const $ClosebuttonX = 1167 Global Const $ClosebuttonY = 666 Global Const $SaveRiskButtonX = 1161 Global Const $SaveRiskButtonY = 692 Global Const $ExitCPScreenX = 1339 Global Const $ExitCPScreenY = 8 Global Const $ExitpatientHubX = 1000 Global Const $ExitpatientHubY = 79 Global Const $sleepMod = 2 Global Const $sleepVal = 5000*$sleepMod Global Const $sleepLow = 200*$sleepMod Global Const $sleepMed = 1000*$sleepMod Global Const $sleepHigh = 3500*$sleepMod ;Function Open excel , read account number in column A ;------------------------------------------------------------------------------------------------------------------------------------------------------- HotKeySet("{ESC}","stopbaby") Func _WinWaitActivate($title,$text,$timeout=0) $hWnd = WinWait($title,$text,$timeout) If Not WinActive($title,$text) Then WinActivate($title,$text) WinWaitActive($title,$text,$timeout) EndFunc $i=0 While $i <=2 $i = $i+1 Local $Open_excel = _Excel_Open() Local $File_path = "D:\AutoIT\Risk_Test.xlsx" Local $Open_workbook = _Excel_BookOpen($Open_excel,$File_path) WinActivate($Open_workbook) Local $Read_account_number = _Excel_RangeRead($Open_workbook,default,"A" &$i) _Excel_Close($Open_excel,False) WEnd ;--------------------------------------------------------------------------------------------------------------------------------------------------- Func NavtoSearch() WinActivate(eClinicalWorks (Garcia,Erick) Sleep($sleepMed) MouseClick("",693,77) Send("!p") ; shortcut for patient menu Send("{DOWN}") ; down 1 send ("{Enter}") ; patient lookup Sleep($sleepMed) ;paste account number How would I do this??? Send("{Enter}") ;Once patient is found, + enter = takes you to patient hub Sleep($sleepMed) Next NavtoPHMHub() ;------------------------------------------------------------------------------------------------------------------------------------------------------- Func NavtoPHMHub() MouseClick("",$PHMhubX,$PHMhubY) Sleep($sleepLow) Send("{DOWN}") Send("{ENTER}") ;takes you to Care Plan HUB Next NavtoRiskScore() ;------------------------------------------------------------------------------------------------------------------------------------------------------- Func NavtoRiskScore() MouseClick("",$HealthRiskAssesmetX,$HealthRiskAssesmetY) ;Clicks on HealthRisk assesment Sleep($sleepLow) MouseClick("",$AddnewAssesmentX,$AddnewAssesmentY) ; Click addnew assesment Sleep($sleepLow) MouseClick("",$SelectAssesmentX,$SelectAssesmentY) ;click select assesment tab Sleep($sleepLow) Send("{DOWN 7}") Send("{ENTER}") Sleep($sleepLow) MouseClick("",$EmptyAnswerBarX,$EmptyAnswerBarY) ;Click on Empty answer bar Sleep($sleepLow) MouseClick("",$LowriskpreventionX,$LowriskpreventionY) ; selects Risk Score, Change for other types 1-6 Next NavtoNextPatient() Func NavtoNextPatient MouseClick("",$ClosebuttonX,$ClosebuttonY) MouseClick("",$SaveRiskButtonX,$SaveRiskButtonY) MouseClick("",$ExitCPScreenX,$ExitCPScreenY) MouseClick("",$ExitpatientHubX,$ExitpatientHubY) EndFunc ;Function should loop back to excel sheet, copy next account number, activate eclinicalworks, and repeat the steps ;--------------------------------------------------------------------------------------------------------------------------------------------------------- Func stopbaby() exit EndFunc Best Regards,
      Morphice
      steps for program.docx
×