Condividi:        

macro ad orari stabiliti

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

macro ad orari stabiliti

Postdi caimanonor » 17/09/12 14:59

ciao ragazzi vorrei creare una macro che a certi orari stabiliti mi fa partire altre 2 macro e poi salva i dati aspettando la prossima ora dove dovrà ripetere l operazione
caimanonor
Utente Junior
 
Post: 58
Iscritto il: 04/09/12 16:50

Sponsor
 

Re: macro ad orari stabiliti

Postdi caimanonor » 17/09/12 15:23

ah cè anche il modo di poter scrivere gli orari sul foglio intitolato ORARI e partire dalla cella A2 annotando il primo orario e così mano mano fino ad arrivare alle cella A??? dipende dai giorni
caimanonor
Utente Junior
 
Post: 58
Iscritto il: 04/09/12 16:50

Re: macro ad orari stabiliti

Postdi caimanonor » 17/09/12 16:35

ho trovato questa macro in giro

Private Sub Workbook_Open()
Dim X As Date
X = Range("A1").Value
Application.OnTime TimeValue(X), "Macro1"
End Sub
però m indica solo la cella a1, se volessi inserire un intervallo che va dalla cella y23 a y40 come posso fare????

EDIT Flash ore 17:55 - corretto verbo "se vorrei"
caimanonor
Utente Junior
 
Post: 58
Iscritto il: 04/09/12 16:50

Re: macro ad orari stabiliti

Postdi Flash30005 » 17/09/12 16:57

Malgrado la correzione non ho capito cosa vorresti e quali sono i dati di partenza

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro ad orari stabiliti

Postdi caimanonor » 17/09/12 17:05

creare un foglio "orario" e scrivere dalla cella a1:a30 i relativi orari
a1=10:00
a2=10.15
a3=11.00
a4=12.00
ecc devo far capire ad excel il range che deve controllare non è solo A1 -------- ( X = Range("A1").Value)
ma va da A1:a30

invece di cambiare ogni volta la macro

Private Sub Workbook_Open()
Application.OnTime TimeValue("16:46:00"), "NomeMacro"
End Sub

devo creare una macro dove gli orari li prende direttamente dal foglio
caimanonor
Utente Junior
 
Post: 58
Iscritto il: 04/09/12 16:50

Re: macro ad orari stabiliti

Postdi Anthony47 » 17/09/12 23:41

Ad esempio crea una macro come questa, in un modulo standard; essa richiama le due macro che vuoi eseguire periodicamente ed eventualmente si ripianifica:
Codice: Seleziona tutto
Sub riesegui()
'Esegui le due macro:
Call Macro1
Call Macro2
'
'Pianifica la prossima esecuzione:
myOre = "N1:N10"    '<<< L' area in cui sono elencati gli orari di esecuzione
mySh = "Foglio1"    '<<< Il Foglio che contiene myOre
'**
ThisWorkbook.Sheets(mySh).Range(myOre).Interior.ColorIndex = xlNone
mysec = Timer / 10
COra = 10 * TimeSerial(0, 0, mysec + 1)
For Each Cell In ThisWorkbook.Sheets("Foglio1").Range(myOre)
    If Cell.Value > COra Then
        Application.OnTime (Cell.Value), "Riesegui"
        Cell.Interior.ColorIndex = 4
        Exit For
    End If
Next Cell
'**
End Sub

Poi metti nella tua Sub Workbook_Open le istruzioni comprese tra le coppie di asterischi

Personalizza le istruzioni marcate <<<, che spiegano dove hai creato l' elenco degli orari.
La logica e' che all' apertura viene cercato nell' elenco il primo orario superiore all' ora attuale e viene pianificata per quell' orario la macro Riesegui.
Riesegui a sua volta esegue lo stesso controllo per determinare quale e' il prossimo orario di riesecuzione.
L' orario di prossima esecuzione viene marcato in verde nell' elenco.

Gli orari in elenco possono essere solo crescenti, da 0:00 24:00.

Ciao, fai sapere.

Edit: l' informazione "Poi metti nella tua Sub Workbook_Open le istruzioni comprese tra le coppie di asterischi " e' sbagliata; infatti nella Workbook_Open vanno inserite anche le due istruzioni precedenti la prima coppia di asterisci, che definiscono il contenuto di myOre e mySh. Scusate..
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro ad orari stabiliti

Postdi caimanonor » 18/09/12 13:03

mi dice errore di compilazione alla stringa ThisWorkbook.Sheets(mySh).Range(myOre).Interior.ColorIndex = xlNone mi evidenzia xlNone come errore
caimanonor
Utente Junior
 
Post: 58
Iscritto il: 04/09/12 16:50

Re: macro ad orari stabiliti

Postdi caimanonor » 18/09/12 13:40

errore di runtime 9: indice non incluso nell intervallo
caimanonor
Utente Junior
 
Post: 58
Iscritto il: 04/09/12 16:50

Re: macro ad orari stabiliti

Postdi Anthony47 » 18/09/12 13:47

Non so a cosa si riferisce questo ultimo errore; per la segnalazione precedente (che magari e' superata): ho collaudato la macro da office Xp a 2010 (eccetto 2007); comunque prova a sostituire XlNone con xlColorIndexNone (ambedue corrispondono al valore -4142, magari il tuo compilatore fa una eccezione)
Se cosi' non risolvi dimmi quale e' la tua versione Excel, anzi dimmelo in ogni caso

E spiega a quale riga si riferisce l' ultima segnalazione, incollando il listing della macro (copia dall' editor delle macro e incolla nel messaggio).

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro ad orari stabiliti

Postdi caimanonor » 18/09/12 13:52

ho office plus 2010 con windows 7
ho creato il foglio Orari e dalla cella b4:b23 inserisco i relativi orari ma non funziona

Private Sub Workbook_Open()
ThisWorkbook.Sheets(mySh).Range(myOre).Interior.ColorIndex = xlColorIndexNone
mysec = Timer / 10
COra = 10 * TimeSerial(0, 0, mysec + 1)
For Each Cell In ThisWorkbook.Sheets("Orari").Range(myOre)
If Cell.Value > COra Then
Application.OnTime (Cell.Value), "Riesegui"
Cell.Interior.ColorIndex = 4
Exit For
End If
Next Cell
End Sub

la stringa ThisWorkbook.Sheets(mySh).Range(myOre).Interior.ColorIndex = xlColorIndexNone la porta come errore
Ultima modifica di caimanonor su 18/09/12 13:58, modificato 1 volte in totale.
caimanonor
Utente Junior
 
Post: 58
Iscritto il: 04/09/12 16:50

Re: macro ad orari stabiliti

Postdi Anthony47 » 18/09/12 13:57

E il tuo listing?
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro ad orari stabiliti

Postdi caimanonor » 18/09/12 13:59

Sub Riesegui()
'Esegui le TRE macro:
Call Macro1
Call Macro2
Call Macro3
'
'Pianifica la prossima esecuzione:
myOre = "B4:B23" '<<< L' area in cui sono elencati gli orari di esecuzione
mySh = "Orari" '<<< Il Foglio che contiene myOre
End Sub
caimanonor
Utente Junior
 
Post: 58
Iscritto il: 04/09/12 16:50

Re: macro ad orari stabiliti

Postdi Anthony47 » 18/09/12 14:06

Immagino che vada in errore la Workbook_Open sulla riga ThisWorkbook.Sheets(mySh).Range(myOre).Interior.ColorIndex = xlColorIndexNone.
Ho sbagliato a marcarti quali istruzioni erano da inserire anche in questa macro: devi inserire anche le due righe
Codice: Seleziona tutto
myOre = "N1:N10"    '<<< L' area in cui sono elencati gli orari di esecuzione
mySh = "Foglio1"    '<<< Il Foglio che contiene myOre
altrimenti mySh e myOre rimangono indefinite, da cui l' errore.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro ad orari stabiliti

Postdi caimanonor » 18/09/12 14:22

ok ora provo e ti farò sapere, cmq grazie di tutto ;)
caimanonor
Utente Junior
 
Post: 58
Iscritto il: 04/09/12 16:50

Re: macro ad orari stabiliti

Postdi caimanonor » 18/09/12 14:41

il prim orario cioè 15:38 è andato bene si è illuminato di verde e allo scoccare ha aggiornato il foglio poi ho fatto un altra prova cioè alla riga successiva ho inseriro 15:40 e non ha aggiornato nulla, come vedo aggiorna solo un orario come mai????
caimanonor
Utente Junior
 
Post: 58
Iscritto il: 04/09/12 16:50

Re: macro ad orari stabiliti

Postdi caimanonor » 18/09/12 15:03

se può esserti utile rimane evidenziata (verde) la cella 15:38
caimanonor
Utente Junior
 
Post: 58
Iscritto il: 04/09/12 16:50

Re: macro ad orari stabiliti

Postdi Anthony47 » 18/09/12 23:16

C' e' un equivoco di fondo: la macro Riesegui deve contenere tutto il codice che ti ho dato, mentre una parte va ANCHE replicata nella Workbook_Open.
La Riesegui che hai listato (vedi viewtopic.php?f=26&t=96930&p=556271#p556264) e' infatti priva delle istruzioni che servono a ripianificare l' esecuzione.

Deve anche essere chiara la logica complessiva:
-all' apertura del file viene pianificata la prima esecuzione di Riesegui, corrispondente al primo orario in elenco che sia superiore all' orario di apertura, se esiste. L' ora di esecuzione e' colorata in elenco.
-la macro Riesegui, se trova in elenco un ulteriore orario superiore all' ora di esecuzione, si auto-pianifica; la nuova ora di esecuzione e' colorata in elenco.
-puoi inserire in elenco ulteriori orari, ma essi saranno gestiti solo se la macro Riesegui e' pianificata per essere eseguita ancora (ad un orario colorato in elenco che logicamente dovrebbe essere superiore all' ora corrente).
-e' possibile che l' area impostata come myOre non sia tutta piena; puoi quindi definire un' area piu' lunga degli orari inseriti, lasciando cosi' la possibilita' di scrivere ulteriori orari in coda a quelli gia' presenti inizialmente.
-sarebbe anche possibile variare l' impostazione di myOre (passando ad esempio da "A4:A10" ad "A4:A15"), sempre col vincolo che la variazione sara' presa in considerazione solo se la macro Riesegui e' pianificata per essere eseguita ancora; ma non ti consiglio di operare in questo modo, e se lo fai ricorda che myOre e' impostato anche in Workbook_Open, quindi devi variare in due posti.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro ad orari stabiliti

Postdi caimanonor » 19/09/12 08:15

anthony ora funziona alla perfezione grazie 1000, se volessi far uscire un messaggio quando sta aggiornando la pagina come si fa???? tipo con scritto "non toccare nulla..in corso aggiornamento"
caimanonor
Utente Junior
 
Post: 58
Iscritto il: 04/09/12 16:50

Re: macro ad orari stabiliti

Postdi Flash30005 » 19/09/12 14:36

I messaggi da vba hanno bisogno di un ok per proseguire e questo impedirebbe alla macro di operare
potresti usare una UserForm a tempo

oppure una semplice casella di testo direttamente sul foglio di lavoro (dal menu disegno -> Casella di Testo nella quale scriverai il testo che vorrai e la macro la farà apparire all'inzio del processo e sparire alla fine in questa maniera
Codice: Seleziona tutto
Sub MessTempo()
ActiveSheet.Shapes("Text Box 1").Visible = True
PauseTime = 1 ' Imposta la durata espressa in secondi
Start = Timer ' Imposta l'ora di inizio.
Do While Timer < Start + PauseTime
DoEvents ' Passa il controllo ad altri processi.

'<<<< tua macro

Loop
ActiveSheet.Shapes("Text Box 1").Visible = False
End Sub


La prima casella testo che disegnerai nel foglio avrà nome "Text Box 1" (come riportato nella macro)
altrimenti dovrai cambiare questo riferimento.

Ti invio il file esempio
Download File

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro ad orari stabiliti

Postdi caimanonor » 19/09/12 15:53

flash ti ringrazio x l esempio ;-)
caimanonor
Utente Junior
 
Post: 58
Iscritto il: 04/09/12 16:50

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "macro ad orari stabiliti":


Chi c’è in linea

Visitano il forum: Nessuno e 46 ospiti