lavorare mentre si aspetta



  • lavorare mentre si aspetta
    di bigmim (utente non iscritto) data: 21/03/2016 16:17:06

    In un foglio ho:
    col. A url sito web
    col. B data e ora ultima visita
    col. C minuti oltre i quali vorrei visitare di nuovo il sito

    Vorrei creare una routine che visiti il sito web in questione una volta scaduto il tempo indicato in B.
    Quanto detto dovrebbe essere ripetuto poi per una lunga lista di siti.

    Mi pareva all'inizio una cosa abbastanza semplice, ma ho trovato il maggior ostacolo nel fatto che in tutti i tentativi effettuati, mentre la routine "aspetta", non è consentito di continuare a lavorare su Excel.

    Queste sono le prove da me fatte:

    Con la prima prova, mentre il DoEvents gira, non solo non si può toccare Excel ma la CPU del computer risulta pesantemente impegnata

    Con la seconda prova, Application.Wait, idem, Excel non disponibile e CPU "incriccata".

    Con la terza prova, sembra che la funzione "Sleep" (presa da Windows tramite dichiarazione iniziale), faccia addormentare tutto,nel senso che anche la CPU sembra poco impegnata, ma per quanto riguarda Excel niente da fare, a me pare che non si possa toccare.

    Qualcuno mi sa dire se esiste una funzione che in qualche modo metta in pausa per un periodo determinato di tempo la routine, senza uscire, perché poi allo scadere dovrà andare ad aprire quel sito web? Permettendo nel frattempo di continuare a lavorare tranquillamente?

    Grazie in anticipo a chiunque voglia intervenire.
     
    Sub Prova01()
        Prossima = Range("B3").Value + Range("C3").Value * 0.00069444
            Do While Prossima > Now
                DoEvents
            Loop
    End Sub
    
    
    Sub Prova02()
    For i = 0 To 3
      Application.Wait (Now + TimeValue("0:00:10"))
      Application.Speech.Speak ("sono le ore" & Time)
    Next i
    End Sub
    
    
    
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Sub Prova03()
    Application.Speech.Speak ("conto 10 secondi")
    For a = 1 To 10
    Sleep 1000 'delay in milliseconds
    Application.Speech.Speak (a)
    Next
    Application.Speech.Speak ("ciao ciao")
    End Sub
    


  • lavorare mentre si aspetta
    di bigmim (utente non iscritto) data: 21/03/2016 16:57:30

    In un foglio ho:
    col. A url sito web
    col. B data e ora ultima visita
    col. C minuti oltre i quali vorrei visitare di nuovo il sito

    Vorrei creare una routine che visiti il sito web in questione una volta scaduto il tempo indicato in B.
    Quanto detto dovrebbe essere ripetuto poi per una lunga lista di siti.

    Mi pareva all'inizio una cosa abbastanza semplice, ma ho trovato il maggior ostacolo nel fatto che in tutti i tentativi effettuati, mentre la routine "aspetta", non è consentito di continuare a lavorare su Excel.

    Queste sono le prove da me fatte:

    Con la prima prova, mentre il DoEvents gira, non solo non si può toccare Excel ma la CPU del computer risulta pesantemente impegnata

    Con la seconda prova, Application.Wait, idem, Excel non disponibile e CPU "incriccata".

    Con la terza prova, sembra che la funzione "Sleep" (presa da Windows tramite dichiarazione iniziale), faccia addormentare tutto,nel senso che anche la CPU sembra poco impegnata, ma per quanto riguarda Excel niente da fare, a me pare che non si possa toccare.

    Qualcuno mi sa dire se esiste una funzione che in qualche modo metta in pausa per un periodo determinato di tempo la routine, senza uscire, perché poi allo scadere dovrà andare ad aprire quel sito web? Permettendo nel frattempo di continuare a lavorare tranquillamente?

    Grazie in anticipo a chiunque voglia intervenire.
     
    Sub Prova01()
        Prossima = Range("B3").Value + Range("C3").Value * 0.00069444
            Do While Prossima > Now
                DoEvents
            Loop
    End Sub
    
    
    Sub Prova02()
    For i = 0 To 3
      Application.Wait (Now + TimeValue("0:00:10"))
      Application.Speech.Speak ("sono le ore" & Time)
    Next i
    End Sub
    
    
    
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Sub Prova03()
    Application.Speech.Speak ("conto 10 secondi")
    For a = 1 To 10
    Sleep 1000 'delay in milliseconds
    Application.Speech.Speak (a)
    Next
    Application.Speech.Speak ("ciao ciao")
    End Sub