Inregistrarea unei valori in functie de ora (formula)
Re: Inregistrarea unei valori in functie de ora (formula)
Nu mai pot folosi nici un fisier excel sau nu mai pot folosi fisierul cote ? Fiindaca, in timp de Copiere_timer_1 functiona, am putut deschide si ediat fisierul pe care l-am pus in atasament.
Marea problema, in situatia actuala, ar fi ca nu pot lua doar valorile doar la anumite intervale de timp, in stransa legatura cu ora de incepere a evenimentului (in atasament aveti o foaie cu produsul la care as vrea sa ajung).
Marea problema, in situatia actuala, ar fi ca nu pot lua doar valorile doar la anumite intervale de timp, in stransa legatura cu ora de incepere a evenimentului (in atasament aveti o foaie cu produsul la care as vrea sa ajung).
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Re: Inregistrarea unei valori in functie de ora (formula)
Va puteti uita, va rog, si pe urmatorul atasament ?
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Re: Inregistrarea unei valori in functie de ora (formula)
Da, nu cred ca poti accesa fisierul "cote.xls" pentru ca e accesat foarte des de macro-ul din fisierul care face copierea - alte fisiere poti deschide, edita, salva etc.
Se poate face ca fisierul care salveaza sa copieze valorile respective la un interval de 60 de secunde. Daca-l pornesti cu cca. 3 ore inainte de ora evenimentului si in fisier, inainte de a apasa pe buton, scrii pe oricare coloana (exceptand coloanele unde se copiaza informatiile) datele de recunoastere ale evenimentului - eventual prin copiere din fisierul "cote.xlsx" si la sfarsitul executiei dai un Save As, datele inregistrate se pot prelucra apoi cu formule, ca sa scoti range-ul necesar graficului. Se poate ca procedura de copiere a datelor sa poata fi oprita la ce ora doresti, fie din buton, fie printr-o inscriere a orei de oprire intr-o celula si atunci n-ar mai fi nevoie de apasarea pe buton. Ideea e de a pastra fisierul asta ("Copiere_Timer_1.xlsm", sau cum i-om zice in final) ca pe un sablon, adica sa nu-l salvezi niciodata cu datele in el, ci sa dai Save As.
Ti-am trimis si un PM.
Se poate face ca fisierul care salveaza sa copieze valorile respective la un interval de 60 de secunde. Daca-l pornesti cu cca. 3 ore inainte de ora evenimentului si in fisier, inainte de a apasa pe buton, scrii pe oricare coloana (exceptand coloanele unde se copiaza informatiile) datele de recunoastere ale evenimentului - eventual prin copiere din fisierul "cote.xlsx" si la sfarsitul executiei dai un Save As, datele inregistrate se pot prelucra apoi cu formule, ca sa scoti range-ul necesar graficului. Se poate ca procedura de copiere a datelor sa poata fi oprita la ce ora doresti, fie din buton, fie printr-o inscriere a orei de oprire intr-o celula si atunci n-ar mai fi nevoie de apasarea pe buton. Ideea e de a pastra fisierul asta ("Copiere_Timer_1.xlsm", sau cum i-om zice in final) ca pe un sablon, adica sa nu-l salvezi niciodata cu datele in el, ci sa dai Save As.
Ti-am trimis si un PM.
Re: Inregistrarea unei valori in functie de ora (formula)
Se poate ce vrei, doar sa stabilim de unde incep datele care se copiaza (coloana si rand).gxg276 scrie:Va puteti uita, va rog, si pe urmatorul atasament ?
Re: Inregistrarea unei valori in functie de ora (formula)
Voi face un template tinand cont de stadiul in care am ajuns pana acum si il voi trimite.gecs scrie:Se poate ce vrei, doar sa stabilim de unde incep datele care se copiaza (coloana si rand).gxg276 scrie:Va puteti uita, va rog, si pe urmatorul atasament ?
Aveti un mail de la mine.
O zi buna !
Re: Inregistrarea unei valori in functie de ora (formula)
...
Si dialogul a continuat prin mesaje pe e-mail, pentru ca nu era cazul sa aglomeram formul cu o discutie de tip "messenger"...
Rezultatul a fost un fisier care copiaza valorile necesare din fisierul conectat la net pentru a realiza un istoric al valorilor urmarite si in final un grafic al acestor valori (graficul lipseste din fisierul atasat).
Arhiva atasata contine doua fisiere: "OnTime_Run.xlsm" si "test.xlsx", deci este vorba de fisiere de Excel 2007. Fisierul OnTime_Run.xlsm" e cel care copiaza datele din alt fisier la intervale de timp prestabilite. Fisierul "test.xlsx" contine date care ar putea fi relevante pentru problema in cauza - urmarirea cotelor pariurilor si a sumei totale pariate in timp si se presupune a contine o conexiune la internet cu timp de refresh prestabilit.
In afara de procedurile legate de interfata (selectarea numelui fisierului de urmarit, a foii de calcul, indicarea celulelor a caror valoare se copiaza si se urmareste la intervalele prestabilite de timp), functionarea fisierului se bazeaza pe doua proceduri:
si
In array-ul "a_ev" sunt salvate valorile inscrise in range-ul A8:A57 din Sheet1 din fisierul "OnTime_Run.xlsm", care reprezinta diferenta dintre ora evenimentului si ora la care se face citirea (copierea) valorilor urmarite. Variabilele "no_ev" si "ev_no" reprezinta numarul evenimentelor (timpilor din "a_ev"), respectiv numarul evenimentului curent.
Metoda "OnTime" folosita presupune indicarea orei la care se declanseaza metoda si a numelui procedurii care se executa la ora respectiva. IF-urile din procedura "Scrie_Date" testeaza daca in variabilele "matched", "pron_1", "pron_x" si "pron_2" e inscrisa adresa vreunei celule de urmarit din fisierul selectat ("fisier"), foaia de calcul selecatata ("foaie") si numai daca aceste variabile contin o valoare se inscrie in Sheet1 din "OnTime_Run.xlsm", pe randul determinat in functie de valoarea curenta stocata in "ev_no", valoarea urmarita din fisierul "fisier", foaia "foaie", celula a carei adresa e stocata in variabila respectiva.
Ultimul IF din procedura "Scrie_Date" testeaza daca s-au terminat evenimentele stocate in "a_ev" si daca nu, apeleaza din nou "Do_on_Time" pentru urmatorul eveniment, daca da, semnaleaza terminarea urmaririi prin modificarea interfetei.
Fisierul OnTime_Run.xlsm" poate fi folosit, cu adaptarile de rigoare, pentru urmarirea si crearea istoricului unor valori din orice alte fisiere care contin conexiuni cu refresh la un anume interval de timp.
Si dialogul a continuat prin mesaje pe e-mail, pentru ca nu era cazul sa aglomeram formul cu o discutie de tip "messenger"...
Rezultatul a fost un fisier care copiaza valorile necesare din fisierul conectat la net pentru a realiza un istoric al valorilor urmarite si in final un grafic al acestor valori (graficul lipseste din fisierul atasat).
Arhiva atasata contine doua fisiere: "OnTime_Run.xlsm" si "test.xlsx", deci este vorba de fisiere de Excel 2007. Fisierul OnTime_Run.xlsm" e cel care copiaza datele din alt fisier la intervale de timp prestabilite. Fisierul "test.xlsx" contine date care ar putea fi relevante pentru problema in cauza - urmarirea cotelor pariurilor si a sumei totale pariate in timp si se presupune a contine o conexiune la internet cu timp de refresh prestabilit.
In afara de procedurile legate de interfata (selectarea numelui fisierului de urmarit, a foii de calcul, indicarea celulelor a caror valoare se copiaza si se urmareste la intervalele prestabilite de timp), functionarea fisierului se bazeaza pe doua proceduri:
Cod: Selectaţi tot
Sub Do_on_Time(ByVal a As Integer)
Application.OnTime a_ev(a), "Scrie_Date"
End Sub
Cod: Selectaţi tot
Sub Scrie_Date()
If Len(matched) > 0 Then
ThisWorkbook.Worksheets("Sheet1").Range("C" & Trim(Str(7 + ev_no))).Value = Application.Workbooks(fisier).Worksheets(foaie).Range(matched).Value
End If
If Len(pron_1) > 0 Then
ThisWorkbook.Worksheets("Sheet1").Range("E" & Trim(Str(7 + ev_no))).Value = Application.Workbooks(fisier).Worksheets(foaie).Range(pron_1).Value
End If
If Len(pron_x) > 0 Then
ThisWorkbook.Worksheets("Sheet1").Range("F" & Trim(Str(7 + ev_no))).Value = Application.Workbooks(fisier).Worksheets(foaie).Range(pron_x).Value
End If
If Len(pron_2) > 0 Then
ThisWorkbook.Worksheets("Sheet1").Range("G" & Trim(Str(7 + ev_no))).Value = Application.Workbooks(fisier).Worksheets(foaie).Range(pron_2).Value
End If
ev_no = ev_no + 1
If ev_no > no_ev Then
ThisWorkbook.Worksheets("Sheet1").CommandButton2.Caption = "Start"
ThisWorkbook.Worksheets("Sheet1").CommandButton2.Enabled = False
ThisWorkbook.Worksheets("Sheet1").CommandButton1.Enabled = True
ThisWorkbook.Worksheets("Sheet1").CommandButton3.Enabled = True
Exit Sub
Else
Call Do_on_Time(ev_no)
End If
End Sub
Metoda "OnTime" folosita presupune indicarea orei la care se declanseaza metoda si a numelui procedurii care se executa la ora respectiva. IF-urile din procedura "Scrie_Date" testeaza daca in variabilele "matched", "pron_1", "pron_x" si "pron_2" e inscrisa adresa vreunei celule de urmarit din fisierul selectat ("fisier"), foaia de calcul selecatata ("foaie") si numai daca aceste variabile contin o valoare se inscrie in Sheet1 din "OnTime_Run.xlsm", pe randul determinat in functie de valoarea curenta stocata in "ev_no", valoarea urmarita din fisierul "fisier", foaia "foaie", celula a carei adresa e stocata in variabila respectiva.
Ultimul IF din procedura "Scrie_Date" testeaza daca s-au terminat evenimentele stocate in "a_ev" si daca nu, apeleaza din nou "Do_on_Time" pentru urmatorul eveniment, daca da, semnaleaza terminarea urmaririi prin modificarea interfetei.
Fisierul OnTime_Run.xlsm" poate fi folosit, cu adaptarile de rigoare, pentru urmarirea si crearea istoricului unor valori din orice alte fisiere care contin conexiuni cu refresh la un anume interval de timp.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.