Use arena scheduling.

Assign 24 one hour blocks per day per employee.
When you create the array, use a UDT like this

Code:
Type TimeBlock
     EmployeeNum as Integer
     Shift as Integer
     TheDateandTime as Date ' make this as of the start of the hour
                           ' you can use Format to get the time from the data stamp
     Duration as Integer ' minutes in this block = 60 usually                      
     PositionCode as String ' location, workarea or machine # or whatever
End Type
' assume 20 employees
Dim Blocks(20,365,24) as TimeBlock
Populate the array with Shift,
TheDateandTime,Duration,PositionCode. Leave out
the employee number.

Save the data to disk.

Next, step thru your employess for the next 30
days, placing them into already existing shifts
and positions, then you can print a schedule.