Torna indietro   Hardware Upgrade Forum > Software > Programmazione

La rivoluzione dei dati in tempo reale è in arrivo. Un assaggio a Confluent Current 2025
La rivoluzione dei dati in tempo reale è in arrivo. Un assaggio a Confluent Current 2025
Siamo andati a Londra per partecipare a Current 2025, la conferenza annuale di Confluent. Il tema al centro dell'evento era l'elaborazione dei dati in tempo reale resa possibile da Apache Kafka, una piattaforma open source pensata proprio per questo. Si è parlato di come stia cambiando la gestione dei dati in tempo reale, del perché sia importante e di quali siano le prospettive per il futuro
SAP Sapphire 2025: con Joule l'intelligenza artificiale guida app, dati e decisioni
SAP Sapphire 2025: con Joule l'intelligenza artificiale guida app, dati e decisioni
A Madrid SAP rilancia sulla visione di un ecosistema integrato dove app, dati e AI generano un circolo virtuoso capace di affrontare l’incertezza globale. Joule diventa l’interfaccia universale del business, anche oltre il perimetro SAP
Dalle radio a transistor ai Micro LED: il viaggio di Hisense da Qingdao al mondo intero
Dalle radio a transistor ai Micro LED: il viaggio di Hisense da Qingdao al mondo intero
Una delle realtà a maggiore crescita nel mondo dell'elettronica di consumo, Hisense Group, affonda le sue radici nella storica città portuale di Qingdao, famosa per la sua birra. Ed è proprio qui il centro nevralgico dell'espansione mondiale dell'azienda, che sta investendo massicciamente in infrastrutture e ricerca per consolidare ulteriormente la propria leadership tecnologica.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-03-2008, 18:28   #1
Kimiko
Member
 
Iscritto dal: Jan 2004
Città: Monza
Messaggi: 36
[VBA] DDE+Excel

Ciao a tutti, spero che l'argomento non sia già stato affrontato, se così è mi scuso per il search superficiale...

Ho una cella con un datafeed realtime che cambia ogni secondo.
Vorrei in un intervallo delta_t (ad esempio 3 min) registrare il valore a t=0 e a t=3 ed il valore minimo e massimo.
Ho provato con le semplici formule di excel, ma riesco esclusivamente a ricopiare il valore della formula, che quindi continua a variare nel tempo.

In poche parole vorrei una storicizzazione del valori suddetti.

Sapete darmi qualche suggerimento o darmi qualche link utile?

Grazie e buona serata.
Kimiko è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2008, 20:48   #2
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3209
Quote:
Originariamente inviato da Kimiko Guarda i messaggi
Ho una cella con un datafeed realtime che cambia ogni secondo.
Vorrei in un intervallo delta_t (ad esempio 3 min) registrare il valore a t=0 e a t=3 ed il valore minimo e massimo.
Ho provato con le semplici formule di excel, ma riesco esclusivamente a ricopiare il valore della formula, che quindi continua a variare nel tempo.

In poche parole vorrei una storicizzazione del valori suddetti.
Interessante.
Anzitutto un consiglio : rinomina il thread con un bel [ Excel VBA ] iniziale. Non vorrei che ti chiudessero la discussione.

Una precisazione : oltre al valore iniziale/finale/max/min lo storico prevede la registrazione dei valori ad ogni secondo sullo stesso Foglio in cui è presente la cella DDE ?
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2008, 22:52   #3
Kimiko
Member
 
Iscritto dal: Jan 2004
Città: Monza
Messaggi: 36
Mi scuso per la niubbaggine e per non aver letto le regole del forum, ma non riesco a modificare il titolo, prego i moderatori di farlo per me.

Lo storico che voglio creare non richiede la memorizzazione dato per dato ma esclusivamente i valori di min, max, iniziale e finale con timeframe definito.

cella DDE
x [cambia continuamente]

time t=iniz. min max t=finale
3 X0 Xmin Xmax X3-
6 X3+ Xmin Xmax X6-
9 ....................................................
12 .....................................................
Kimiko è offline   Rispondi citando il messaggio o parte di esso
Old 12-03-2008, 08:46   #4
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3209
Quote:
Originariamente inviato da Kimiko Guarda i messaggi
Lo storico che voglio creare non richiede la memorizzazione dato per dato ma esclusivamente i valori di min, max, iniziale e finale con timeframe definito.

cella DDE
x [cambia continuamente]

time t=iniz. min max t=finale
3 X0 Xmin Xmax X3-
6 X3+ Xmin Xmax X6-
9 ....................................................
12 .....................................................
Ok. Quindi mettiamo che DDE stia in A1 su Foglio1.
Il programma deve generare una tabella, sempre su Foglio1, e ogni 3 minuti riportare i 4 valori [ inizio / min / max / fine ] rilevati sui 180 ( 3x60 ) secondi di ogni intervallo. Corretto ?
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 12-03-2008, 08:52   #5
Kimiko
Member
 
Iscritto dal: Jan 2004
Città: Monza
Messaggi: 36
Corretto!

Sto cercando nelle funzioni "importazione dati" ma mi sa che non ci cavo nulla di buono...
Kimiko è offline   Rispondi citando il messaggio o parte di esso
Old 12-03-2008, 13:21   #6
Kimiko
Member
 
Iscritto dal: Jan 2004
Città: Monza
Messaggi: 36
Dopo svariati tentativi sono arrivato a questa macro, dal sito di Microsoft

Sub LinkList()
Dim Links As Variant
' Obtain an array for the links to Excel workbooks
' in the active workbook.
Links = ActiveWorkbook.LinkSources(xlOLELinks)
' If the Links array is not empty, then open each
' linked workbook. If the array is empty, then
' display an error message.
If Not IsEmpty(Links) Then
For I = 1 To UBound(Links)
ActiveWorkbook.SetLinkOnData Links(I), "LinkChange"
Next I
Else
MsgBox "This workbook does not contain any links " & _
"to other workbooks"
End If
End Sub

Quello che fa è rilevare il cambiamento della cella DDE e, in corrispondenza di tale cambiamento, fa partire la macro "LinkChange".

Ora si tratta dunque di strutturare la macro LinkChange in modo da ricopiare i dati che intercetta nella colonna di fianco.
Da lì poi con le formule normali si riesce a rispondere alle esigenze che ho citato nel primo post (min,max,iniziale,finale)

Qualcuno è in grado di aiutarmi a scrivere questa macro di copia valori?
Kimiko è offline   Rispondi citando il messaggio o parte di esso
Old 13-03-2008, 17:30   #7
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3209
Sei riuscito con quel metodo ?

Io invece sono riuscito a risolvere il tuo quesito con qualche chiamata alle API ( ho chiamato da Excel il Timer di sistema... ), un paio di Sub ,e un bell'Array per i valori...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 13-03-2008, 20:23   #8
Kimiko
Member
 
Iscritto dal: Jan 2004
Città: Monza
Messaggi: 36
Fra 30 minuti ti posto tutto

Edit: prima del previsto

Dim bRunNow As Boolean
Sub Test1()
With ActiveWorkbook
bRunNow = .Worksheets("Foglio1").Range("C1").Value
If bRunNow Then .SetLinkOnData "FDF|Q!'F.MI;Last'", "Test2" Else .SetLinkOnData "FDF|Q!'F.MI;Last'", ""
End With
End Sub
Sub Test2()
ddedati = "C3:C3"
TWS = "Foglio1"
SWS = ActiveSheet.Name
Range(ddedati).Copy
Sheets(TWS).Select
If Range("C3").Value < Range("F2").Value Or Range("F2").Value = 0 Then Range("F2").Value = Range("C3").Value 'Calcolo Min
If Range("C3").Value > Range("E2").Value Or Range("E2").Value = 0 Then Range("E2").Value = Range("C3").Value 'Calcolo Max
Range("G2").Value = Range("C3").Value 'Calcolo Current
Sheets(SWS).Select
End Sub
Sub ButtonTest()
Test1
End Sub
Sub Restarta()
DeltaT = "00:03:00"
CellaFlag = "N1"
dati = "E2:G2"
DWS = "Foglio1"
CWS = ActiveSheet.Name
Range(dati).Copy
Sheets(DWS).Select
Range("J65536:L65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("G2").Copy
Range("I65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range(dati).Select
Selection.ClearContents
Sheets(CWS).Select
If Range(CellaFlag).Value = 0 Then
Range(CellaFlag).Interior.ColorIndex = xlNone
Exit Sub
End If
Application.OnTime Now + TimeValue(DeltaT), "Restarta"
Range(CellaFlag).Interior.ColorIndex = 3
End Sub



Se hai qualche domanda specifica fai pure...

Mi piacerebbe sapere anche la tua soluzione, visto che cmq questa non mi soddisfa appieno.
Ciao e buona serata!

Ultima modifica di Kimiko : 13-03-2008 alle 20:36.
Kimiko è offline   Rispondi citando il messaggio o parte di esso
Old 13-03-2008, 22:25   #9
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3209
Quote:
Originariamente inviato da Kimiko Guarda i messaggi
Mi piacerebbe sapere anche la tua soluzione, visto che cmq questa non mi soddisfa appieno.
Ciao e buona serata!
Al momento sono abbastanza fuso, perciò niente preamboli, ti metto giù una breve introduzione e relativo codice completo della soluzione :

1. Ho un file Excel, che può contenere anche solo un foglio, Foglio1.

2. Foglio1 è organizzato come segue :
- Cella A1 : contiene i valori DDE.
- Colonne da B a F : Tabella valori ( 1 nuova riga ogni intervallo -> 180 sec. ).
- 2 CommandButton : Start e Stop registrazione valori.

Vedi figura :



3. Codice che esegue il CommandButton START :

Codice:
Private Sub CommandButton1_Click()
  
    Sheets("Foglio1").Range("C2:F4").ClearContents
    Sheets("Foglio1").Range("C2").FormulaR1C1 = Sheets("Foglio1").Range("A1").Value
    
    intervallo = 180 'SECONDI
    contaSecondi = 0
    contaIntervalli = 2
    CommandButton1.Enabled = False
    
    ReDim arrayValori(0)
    
    StartTimer

End Sub
4. Codice che esegue il CommandButton STOP :

Codice:
Private Sub CommandButton2_Click()

    EndTimer
    CommandButton1.Enabled = True
    
End Sub
5. Codice da inserire in un MODULO :

Codice:
Public intervallo As Integer
Public contaIntervalli As Integer
Public contaSecondi As Integer
Public arrayValori() As Double
Public TimerID As Long
Public TimerSeconds As Single

Public Declare Function SetTimer Lib "user32" ( _
        ByVal HWnd As Long, _
        ByVal nIDEvent As Long, _
        ByVal uElapse As Long, _
        ByVal lpTimerFunc As Long) As Long

Public Declare Function KillTimer Lib "user32" ( _
        ByVal HWnd As Long, _
        ByVal nIDEvent As Long) As Long

Public Sub StartTimer()
    TimerSeconds = 1 'Intervallo di Intervento Timer in Secondi.
    TimerID = SetTimer(0&, 0&, TimerSeconds * 1000&, AddressOf TimerProc)
End Sub

Public Sub EndTimer()
    On Error Resume Next
    KillTimer 0&, TimerID
End Sub

Public Sub TimerProc(ByVal HWnd As Long, ByVal uMsg As Long, _
    ByVal nIDEvent As Long, ByVal dwTimer As Long)

    AGG_ARRAY_VALORI (Sheets("Foglio1").Range("A1").Value)
    If contaSecondi = intervallo Then
        Sheets("Foglio1").Range("F" & contaIntervalli).FormulaR1C1 = Sheets("Foglio1").Range("A1").Value
        Sheets("Foglio1").Range("D" & contaIntervalli).FormulaR1C1 = arrayValori(1)
        Sheets("Foglio1").Range("E" & contaIntervalli).FormulaR1C1 = arrayValori(UBound(arrayValori))
        ReDim arrayValori(0)
        contaIntervalli = contaIntervalli + 1
        contaSecondi = 0
    End If
    If (contaSecondi - 1) Mod intervallo = 0 And contaIntervalli > 2 Then
        Sheets("Foglio1").Range("C" & contaIntervalli).FormulaR1C1 = Sheets("Foglio1").Range("A1").Value
    End If
    contaSecondi = contaSecondi + 1
    
End Sub

Public Sub AGG_ARRAY_VALORI(valore As Double)

    Dim valRedim As Long
    valRedim = UBound(arrayValori) + 1
    ReDim Preserve arrayValori(valRedim)
    arrayValori(valRedim) = valore
    Dim Temp As Double
    Dim i As Long
    Dim j As Long
    For j = 2 To UBound(arrayValori)
        Temp = arrayValori(j)
        For i = j - 1 To 1 Step -1
            If (arrayValori(i) <= Temp) Then GoTo 10
            arrayValori(i + 1) = arrayValori(i)
        Next i
        i = 0
10          arrayValori(i + 1) = Temp
    Next j

End Sub
6. Provare...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 13-03-2008, 22:31   #10
Kimiko
Member
 
Iscritto dal: Jan 2004
Città: Monza
Messaggi: 36
L'aspetto è professionale, più tardi (o domani, meglio ) lo provo.

Grazie comunque.
Kimiko è offline   Rispondi citando il messaggio o parte di esso
Old 12-01-2009, 08:28   #11
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3209
Quote:
Originariamente inviato da Pupic
Ciao MarcoGG

Mi sono iscritto da poco e volevo ringraziarti x la macro (http://www.hwupgrade.it/forum/showthread.php?t=1698904) che hai messo a disposizione. Ai miei livelli trovo incredibile vedere comparire i dati ogni 3 minuti senza che questi vengano scritti prima da qualche parte
Ci ho messo un po’ per poterla utilizzare perché prima ho dovuto imparare da zero un po di VBA in quanto non sapevo quasi cosa era
Ma non voglio farti perdere troppo tempo, volevo chiederti alcune cose e dei consigli :
Ok, quoto qui da tuo pvt :

Quote:
Originariamente inviato da Pupic
A volte succede che il DDE per qualche istante si resetta a zero e poi riparte con i dati precedenti : è possibile NON far rilevare lo ZERO alla macro ?
Questo è un comportamento che non è normale. Dipende da come hai implementato tu il DDE. Non è normale che la cella DDE si auto-resetti da sola senza motivo. Almeno, se ho capito ciò che intendi...

Quote:
Originariamente inviato da Pupic
Vorrei utilizzarla su 3 titoli : x ottenere una cosa “non troppo pesante x il pc” conviene ampliare la macro o aprire x 3 volte il programma excel e usarne una singolarmente x ogni titolo ? (ho visto che se tenti di aprire un file mentre la macro è in funzione va in Debug ed excel si chiude, è normale ?)
Non so cosa intendi per "titoli", ma immagino tu voglia usare contemporaneamente 3 celle DDE nello stesso Workbook. Sì, lo puoi fare, a patto che la mole di lavoro da svolgere ad ogni intervallo non sia troppo onerosa. Se tenti di aprire un file nuovo dalla stessa istanza di Excel che sta eseguendo il tuo progetto DDE, è possibile che Excel causi un errore, dovuto al fatto che comunque l'uso dei timer in VBA viene ottenuto per "vie traverse", e non direttamente con oggetti dedicati come il Timer di VB6 o VB NET. Perciò ogni esecuzione di ulteriori operazioni manuali o macro su Workbook che hanno un timer DDE attivo potenzialmente porta ad errori, errori che si possono cmq intercettare ( istruzioni "On Error" )...
Chiaramente, se devi costruire un'applicazione complessa che fa pesante uso dei Timer, il mio consiglio è di utilizzare VB6 o VB NET, che offrono un ottimo supporto all'interazione con Excel.

Quote:
Originariamente inviato da Pupic
Ho provato a far partire la macro ad una determinata ora ma non sono riuscito, è possibile ? (ho provato con la funzione Application.OnTime TimeValue("22:00:00"), "mia_Sub" ma senza successo).
Questa mi riservo di provarla, appena ho tempo.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 12-01-2009, 12:40   #12
Pupic
Junior Member
 
Iscritto dal: Jan 2009
Messaggi: 10
Ciao marco,

Per quanto riguarda il DDE non l'ho implementato io ma è un collegamento alla banca dati tramite un programma da loro foirnito. L'azzeramento è dovuto al loro collegamento e non è 1 problema specifico dell'utenza (succede raramente, è solo un istante e non c'e perdita di dati..... solo che mi sballa il grafico )

Le celle DDE sono già 2 (ne ho aggiunta una io alla tua macro) e diventerebbero 6 ....... con tutti gli annessi ....... Magari provo a costruire il tutto e mi dai un tuo parere ......... anche perchè oltre al VBA conosco solo .... TVB o similari ..... ma li uso x gli sms col cellulare
Pupic è offline   Rispondi citando il messaggio o parte di esso
Old 12-01-2009, 13:45   #13
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3209
Quote:
Originariamente inviato da Pupic Guarda i messaggi
Ciao marco,

Per quanto riguarda il DDE non l'ho implementato io ma è un collegamento alla banca dati tramite un programma da loro foirnito. L'azzeramento è dovuto al loro collegamento e non è 1 problema specifico dell'utenza (succede raramente, è solo un istante e non c'e perdita di dati..... solo che mi sballa il grafico )
Beh, se usi il mio esempio pecedente, in cui inserisco i valori in un array, basterà intercettare i valori "0" ed evitare il loro inserimento.

Per quanto riguarda l'ultimo problema, ossia la temporizzazione di una Macro ( Sub o Function ) si può risolvere semplicemente con le stesse chiamate API del mio esempio precedente.
In questo caso il codice necessario sarà qualcosa di simile a questo :

> In un Modulo :
Codice:
Public TimerID As Long
Public TimerSeconds As Single

Public Declare Function SetTimer Lib "user32" ( _
        ByVal HWnd As Long, _
        ByVal nIDEvent As Long, _
        ByVal uElapse As Long, _
        ByVal lpTimerFunc As Long) As Long

Public Declare Function KillTimer Lib "user32" ( _
        ByVal HWnd As Long, _
        ByVal nIDEvent As Long) As Long

Public Sub StartTimer()
    TimerSeconds = 1 'Intervallo di Intervento Timer in Secondi.
    TimerID = SetTimer(0&, 0&, TimerSeconds * 1000&, AddressOf TimerProc)
End Sub

Public Sub EndTimer()
    On Error Resume Next
    KillTimer 0&, TimerID
End Sub

Public Sub TimerProc(ByVal HWnd As Long, ByVal uMsg As Long, _
    ByVal nIDEvent As Long, ByVal dwTimer As Long)

    Dim adesso As String
    adesso = Format(Now, "yyyy/mm/dd hh:mm:ss")
    
    Sheets("Foglio1").Range("A1").FormulaR1C1 = adesso
     
    If CDate(adesso) = "2009/01/12 14:40:00" Then
        'Lancio la macro desiderata :
        MACRO
    End If
        
End Sub

Public Sub MACRO()

    MsgBox "MACRO Lanciata."

End Sub
> Pulsante per Start Timer :
Codice:
Private Sub cmd_start_Click()

    cmd_start.Enabled = False
    StartTimer

End Sub
> Pusante per Stop Timer :
Codice:
Private Sub cmd_stop_Click()

    EndTimer
    cmd_start.Enabled = True

End Sub
In questo caso, esattamente alle 14:40:00 della data specificata, la MACRO viene eseguita !
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 12-01-2009, 18:55   #14
Pupic
Junior Member
 
Iscritto dal: Jan 2009
Messaggi: 10
Grazie, sempre molto gentile

ora provo a mettere in pratica i tuoi suggerimenti ......... se per un po non mi senti non preoccuparti, sto sbattendo la testa sull'array

ciao
pupic

Ps: ora ho capito che l' API non è l' "Associazione Programmatori Italiani" e non si usa il telefono x chiamarla
Pupic è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2009, 19:02   #15
Pupic
Junior Member
 
Iscritto dal: Jan 2009
Messaggi: 10
Ciao Marco, ...... ancora io

volevo allegare il file del foglio completo dei 3 titoli x un tuo consiglio ma anche zippato supera la dimensione consentita (è di 1,44MB) ...... non so se sono possibili altre strade x l'invio.

Volevo chiederti informazioni sugli array (faccio riferimento al range "D" = arrayValori(1)) : nella tua macro, dove sono specificate le variabili dell'array ? E dove è specificato che sono relative alla cella A1 ?

Se ho fatto una domanda stupida rimandami pure a settembre
Pupic è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2009, 08:41   #16
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3209
Quote:
Originariamente inviato da Pupic Guarda i messaggi
nella tua macro, dove sono specificate le variabili dell'array ?
Le "variabili dell'array" ? L'Array è pubblico, lo trovi nelle dichiarazioni ad inizio Modulo.

Codice:
Public arrayValori() As Double
Non ho bisogno di altre variabili per contenere gli elementi dell'array, se è questo che intendevi, perchè con la Redim Preserve lo ridimensiono e gli passo sempre l'ultimo valore della cella DDE, e inoltre in questo modo gli elementi contenuti sono già ordinati...

Quote:
Originariamente inviato da Pupic Guarda i messaggi
E dove è specificato che sono relative alla cella A1 ?
Qui :

Codice:
AGG_ARRAY_VALORI (Sheets("Foglio1").Range("A1").Value)
Tutto il lavoro poi lo fa la Function...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2009, 18:51   #17
Pupic
Junior Member
 
Iscritto dal: Jan 2009
Messaggi: 10
Grazie per i chiarimenti

ciao
Pupic è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2009, 18:18   #18
aabye
Junior Member
 
Iscritto dal: Jan 2009
Messaggi: 11
ciao,

ho letto il tuo post "Dati real time x excel " ma sopratutto questo "[VBA] DDE+Excel "
un paio di anni fa ci ho perso un tot di tempo, dovendo poi rinunciare, per mancanza risultati,
per fare sostanzialmente la stessa cosa che cercavi di far tu...
e mi pare che avete in qualche modo risolto

io ho in una cella di excel i dati che arrivano in realtime, ( pz, o, h, l, c, ) tutti in una riga
quello che non sono mai riuscito a fare, e che mi servirebbe e che ogni minuto quella riga si "fissasse" con tutti i suoi valori e riprendesse il flusso di dati alla riga sotto, e cosi via per tutta la giornata
( il problema di recuperare dati persi o storici per ora non mi serve, mi basta il realtime della giornata strutturato nel modo che ho cercato di spiegarti )

mi potete aiutare? qualcuno e' riuscito a costruire un foglio excel che fa una roba simile?
mi fareste un enorme favore,,, sono zero a programmare, e non saprei neanche costruire una macro copiando il codice postato da MarcoGG

intanto grazie cmq
ciao
marco
aabye è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2009, 11:50   #19
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3209
Quote:
Originariamente inviato da aabye Guarda i messaggi
io ho in una cella di excel i dati che arrivano in realtime, ( pz, o, h, l, c, ) tutti in una riga
quello che non sono mai riuscito a fare, e che mi servirebbe e che ogni minuto quella riga si "fissasse" con tutti i suoi valori e riprendesse il flusso di dati alla riga sotto, e cosi via per tutta la giornata
( il problema di recuperare dati persi o storici per ora non mi serve, mi basta il realtime della giornata strutturato nel modo che ho cercato di spiegarti )
Magari potresti essere più preciso. I dati stanno tutti in una cella, o su più celle nella stessa riga ?
Da quello che ho capito, ogni minuto vorresti registrare i valori sulla stessa riga in cui sta la cella DDE ( o le celle DDE ), e poi spstare la riga-DDE verso il basso. Poco pratico, forse. Non sarebbe meglio copiare i valori su una nuova riga ad ogni scatto di clock, e mantenere la DDE sempre al suo posto ?
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2009, 15:59   #20
Pupic
Junior Member
 
Iscritto dal: Jan 2009
Messaggi: 10
Ciao Marco&Marco …… tutti Marco qui

La prima macro di Marco funziona egregiamente, devi solo partire da due soli dati DDE e cioè il “prezzo ultimo” e il volume, il resto lo fa la macro.
Capisco la tua necessità e la difficoltà di applicare la macro, anche se basta copiarla; ci ho lavorato anch’io parecchio partendo a studiare il VBA da zero (adesso non sono tanto più in là …… forse a 0,5 ). Se mi mandi l’indirizzo mail in MP te la giro e te la spiego. Ti avviso però che ancora non ho risolto i due problemi sopra : intercettare gli zeri, il più importante, e l’ora di partenza …… Marco(GG) lo so che hai scritto tutto ma ……. “so un po de coccio” ! Perdonami
con gli array sono ancora in pieno oceano Atlantico su una barca a remi e per l’orario le ho provate tutte ma :

Dim adesso As String
adesso = Format(Now, "yyyy/mm/dd hh:mm:ss")

Sheets("Foglio1").Range("A1").FormulaR1C1 = adesso
If CDate(adesso) = "2009/01/12 14:40:00" Then....


L’ho posizionato ovunque nella tua prima macro ma senza risolvere ….. in compenso sono riuscito a far fare alla macro cose turche

Buona domenica a tutti
Pupic
Pupic è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


La rivoluzione dei dati in tempo reale è in arrivo. Un assaggio a Confluent Current 2025 La rivoluzione dei dati in tempo reale è ...
SAP Sapphire 2025: con Joule l'intelligenza artificiale guida app, dati e decisioni SAP Sapphire 2025: con Joule l'intelligenza arti...
Dalle radio a transistor ai Micro LED: il viaggio di Hisense da Qingdao al mondo intero Dalle radio a transistor ai Micro LED: il viaggi...
Meglio un MacBook o un PC portatile con Windows, oggi? Scenari, dubbi e qualche certezza Meglio un MacBook o un PC portatile con Windows,...
realme GT7: un "flaghsip killer" concreto! La recensione realme GT7: un "flaghsip killer" concr...
La NASA potrebbe chiudere le missioni OS...
Trump vieta anche la vendita di software...
Le migliori offerte del weekend Amazon: ...
Dreame L40 Ultra a 699€, prezzo shock: v...
AMD Radeon RX 9060 XT: fino al 31% pi&ug...
Blink Outdoor 4 e Ring Intercom in super...
Oggi in sconto Fire TV Stick HD ed Echo ...
I TV 115 pollici si fanno più acc...
Solo 44€ per CMF Watch Pro: lo smartwatc...
iPhone 16 Pro e 16 Pro Max sono ancora a...
ASRock ammette i problemi del BIOS, ma p...
Elon Musk annuncia i nuovi piani per la ...
Mafia: The Old Country in azione in un v...
Pulizie automatiche e senza grovigli: Ro...
Cybersecurity: così CrowdStrike p...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 19:59.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www1v