PDA

View Full Version : programma che si ripete ogni 5 minuti.


Axembled
27-11-2003, 10:40
salve!!!

ho trovato un programmino scritto in vb, ke manda email senza usare altri client di posta.

io sto lavorando x un'azienda ke si okkupa di contabilità, e l'esigenza nasce perchè si devono inviare ogni 5/10 minuti, degli arkivi excel, con questo programmino trovato.

vorrei sapere come è possibile, attravero riga di comanda o altro metodo, visto ke ho anke il sorgente d qsto prog, a fare andare in "loop" ogni 5/10 minuti.

spero ke qualkuno mi aiuti, mi sto sbattendo la testa da ormai 2 settimane!!!

ciao, e grazie anticipatamente.

a2000
27-11-2003, 11:07
Metodo SendMail

Invia la cartella di lavoro tramite il sistema di posta elettronica installato.

Sintassi

espressione.SendMail(Recipients, Subject, ReturnReceipt)

espressione Argomento necessario. Un'espressione che restituisce un oggetto Workbook.

Recipients Argomento necessario di tipo Variant. Specifica il nome del destinatario sotto forma di testo o di matrice di stringhe di testo se esistono più destinatari. È necessario specificare almeno un destinatario. Tutti i destinatari vengono aggiunti nella casella A del messaggio.

Subject Argomento facoltativo di tipo Variant. Specifica l'oggetto del messaggio. Se non è specificato, verrà utilizzato il nome del documento.

ReturnReceipt Argomento facoltativo di tipo Variant. Se ha valore True, verrà richiesta la ricevuta di ritorno. Se ha valore False, non verrà richiesta la ricevuta di ritorno. Il valore predefinito è False.


Metodo Route

Distribuisce la cartella di lavoro in base alla lista di distribuzione corrente.

Sintassi

espressione.Route

espressione Argomento necessario. Un'espressione che restituisce un oggetto Workbook.

Osservazioni

La distribuzione di una cartella di lavoro imposta la proprietà Routed al valore True.


Proprietà MailSession

Restituisce il numero della sessione di posta elettronica MAPI attiva sotto forma di stringa esadecimale o Null se non esiste alcuna sessione. Proprietà di tipo Variant di sola lettura.

Osservazioni

Questa proprietà viene utilizzata solo con sessioni di posta create da Microsoft Excel. Non restituisce un numero di sessione per Microsoft Mail.

Questa proprietà non viene utilizzata con i sistemi di posta elettronica PowerTalk.






eccetera eccetera eccetera

Axembled
27-11-2003, 11:09
scusa... puoi spiegarmi in parole + semplici...

sai.. sono ankora alle prime armi con il vb.

ciao... e grazie ankora.

a2000
27-11-2003, 11:10
per la ripetizione, per esempio, ma solo per esempio:


Metodo OnTime


Programma una routine affinché venga eseguita a una determinata ora futura, vale a dire a una determinata ora del giorno o dopo un determinato periodo.

Sintassi

espressione.OnTime(EarliestTime, Procedure, LatestTime, Schedule)

espressione Argomento necessario. Un'espressione che restituisce un oggetto Application.

EarliestTime Argomento necessario di tipo Variant. Specifica l'ora in cui si desidera eseguire la routine.

Procedure Argomento necessario di tipo String. Specifica il nome della routine da eseguire.

LatestTime Argomento facoltativo di tipo Variant. Specifica il tempo massimo entro il quale la routine può essere eseguita. Se ad esempio l'argomento LatestTime viene impostato a EarliestTime + 30 e Microsoft Excel non è in modalità Pronto, Copia, Taglia o Trova in EarliestTime dal momento che è in esecuzione un'altra routine, Microsoft Excel attenderà 30 secondi affinché la prima routine venga completata. Se Microsoft Excel non è in modalità Pronto entro 30 secondi, la routine non verrà eseguita. Se questo argomento viene omesso, Microsoft Excel attenderà fino a quando sarà possibile eseguire la routine.

Schedule Argomento facoltativo di tipo Variant. Se ha valore True sarà possibile programmare una nuova routine OnTime. Se ha valore False, sarà possibile cancellare una routine impostata precedentemente. L'impostazione predefinita è True.

Osservazioni

Utilizzare Now + TimeValue(time) per una programmazione in un'ora successiva all'ora corrente. Utilizzare TimeValue(time) per una programmazione in una determinata ora.

Axembled
27-11-2003, 11:13
Originariamente inviato da a2000
per la ripetizione, per esempio, ma solo per esempio:


Metodo OnTime


Programma una routine affinché venga eseguita a una determinata ora futura, vale a dire a una determinata ora del giorno o dopo un determinato periodo.

Sintassi

espressione.OnTime(EarliestTime, Procedure, LatestTime, Schedule)....





cosa ci devo inserire al posto di espressione?? :confused: :confused: :confused: :confused: :rolleyes: :rolleyes: :muro: :muro: :muro:

a2000
27-11-2003, 11:15
i metodi che ti ho segnalato e gli altri correlati sono immediatamente disponbili nel VisualBasic di Excel.

praticamente è possibile far sì che il file di excel, tutto o in parte, si "autospari" periodicamente a tutti i destinatari desiderati.

Axembled
27-11-2003, 11:16
ma a me serve x il vb, xkè lo devo mettere in quel programmino.
:confused: :rolleyes:

a2000
27-11-2003, 11:19
Originariamente inviato da Axembled
cosa ci devo inserire al posto di espressione??

Application

trovi tutto e di più nell'help in linea di VisualBasic di Excel:

Excel> Alt+F11 > F1
Excel> Alt+F11 > Inserisci > Modulo > digita il comando > F1

a2000
27-11-2003, 11:23
Originariamente inviato da Axembled
ma a me serve x il vb, xkè lo devo mettere in quel programmino.
:confused: :rolleyes:

hai buone probabilità che i metodi suddetti siano disponibili anche nel VB nudo e crudo.

maxithron
27-11-2003, 12:07
Per fare quello che desideri (parliamo di Visual Basic 6 se ho capito bene) dovresti usare la funzione:

TimerProc (puoi trovare maggiori info su MSDN)

Dovresti organizzarla + o - così:

Creati un modulo standard e poi definisci:

1) un TimerIdentity con valore Long

2) piazzi la TimerProc con valori (ByVal hWnd, etc..consulta MSDN)

3) una funzione StartTimer definendo un intervallo di tipo Long

4) una funzione StopTimer

matpez
27-11-2003, 12:38
Originariamente inviato da a2000
hai buone probabilità che i metodi suddetti siano disponibili anche nel VB nudo e crudo.

On time nn c'è in VB...o almeno nn l'ho mai visto :p

Axembled
27-11-2003, 12:40
Originariamente inviato da matpez
On time nn c'è in VB...o almeno nn l'ho mai visto :p

e come potrei fare a risolvere qsto problema??

:( :( :muro: :mad: :cry:

matpez
27-11-2003, 12:42
Originariamente inviato da matpez
On time nn c'è in VB...o almeno nn l'ho mai visto :p

Oppure se proprio nn vuoi utilizzare il metodo con le API c'è sempre il metodo manuale:

Piazzi un bel timer nella form settato a 60000 ms (1 minuto) al suo interno fai una cosa del genere:

Private Sub Timer1_Timer()

Timer1.Tag = Val(Timer1.Tag) + 1

If Val(Timer1.Tag) = 10 Then
Timer1.Tag = "0"

'CODICE!!!
End If

End Sub

Ti assicuro che nn prende una pippa di risorse....un mio programma cicla ogni 2 secondi tutto il giorno e in 3 giorni che è acceso ha rubato 21 secondi di CPU! :)

a2000
27-11-2003, 12:44
Originariamente inviato da Axembled
e come potrei fare a risolvere qsto problema?

beh, per esempio queste tre righe "inviano" la calcolatrice ogni 15 secondi :)


Sub invia()
Const Dtm = 0.25 * 1 / 24 / 60
Shell "c:\windows\calc.exe", 1
Application.OnTime Now + Dtm, "invia"
End Sub

Axembled
27-11-2003, 12:46
Originariamente inviato da matpez
Oppure se proprio nn vuoi utilizzare il metodo con le API c'è sempre il metodo manuale:

Piazzi un bel timer nella form settato a 60000 ms (1 minuto) al suo interno fai una cosa del genere:

Private Sub Timer1_Timer()

Timer1.Tag = Val(Timer1.Tag) + 1

If Val(Timer1.Tag) = 10 Then
Timer1.Tag = "0"

'CODICE!!!
End If

End Sub

Ti assicuro che nn prende una pippa di risorse....un mio programma cicla ogni 2 secondi tutto il giorno e in 3 giorni che è acceso ha rubato 21 secondi di CPU! :)

allora c'è!! ;)

ma ora qsto dove ce le piazzo??
e dove dice codice ke ci devo mettere??
:confused:

matpez
27-11-2003, 12:47
Originariamente inviato da a2000
beh, per esempio queste tre righe "inviano" la calcolatrice ogni 15 secondi :)


Sub invia()
Const Dtm = 0.25 * 1 / 24 / 60
Shell "c:\windows\calc.exe", 1
Application.OnTime Now + Dtm, "invia"
End Sub


Si ma in VB6 nn c'è il metodo Application.OnTime :oink:

Axembled
27-11-2003, 12:54
code:--------------------------------------------------------------------------------Private Sub Timer1_Timer()

Timer1.Tag = Val(Timer1.Tag) + 1

If Val(Timer1.Tag) = 10 Then
Timer1.Tag = "0"

'CODICE!!!
End If

End Sub--------------------------------------------------------------------------------




ma ora qsto dove ce le piazzo??
e dove dice codice ke ci devo mettere??

:confused: :confused:

a2000
27-11-2003, 12:54
Originariamente inviato da matpez
Si ma in VB6 nn c'è il metodo Application.OnTime :oink:
c'è ... c'è ... c'èrcare per credere :p

(o equivalente)

Axembled
27-11-2003, 12:56
:cry: :cry: :cry: :cry:

rispondete alla mia domanda??

:cry: :cry: :( :mad: :muro:

matpez
27-11-2003, 12:57
Metti l'oggettino Timer (che in questo caso si chiama Timer1) dove ti serve, nella form pronciplae...o in qlc form che ti serve fare quel lavoro che dici!

Dove c'è scritto codice metti la parte di codice che ti interessava...cioè quello che manda le mail!

Meglio ancora se li dentro richiami un procedura (che manda le mail) così è + ordinato :)

Axembled
27-11-2003, 13:31
ok provo... speriemm!!! :rolleyes:

a2000
27-11-2003, 14:34
chi vive sperando muore cagando ! :D

a2000
27-11-2003, 15:09
"operazione pianificata in background" è la morte sua :D