Condividi:        

ESTRAZIONE DATI EUR/USD.

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

ESTRAZIONE DATI EUR/USD.

Postdi cd7019 » 26/09/13 18:52

Salve,
Vorrei creare un foglio con i dati del valore euro/dollaro in tempo reale.
esempio nella cella A1 il valore istantaneo (possibilità di aggiornarlo a piacimento: 1 min, 30 sec, 10 sec, ecc...)
nelle celle B1: ora 19.00 cella C1: 1,3480 (valore eur/usd)
nelle celle B2: ora 19.01 cella C2: 1,3480 (valore eur/usd)
nelle celle B3: ora 19.02 cella C3: 1,3481 (valore eur/usd)

ecc...

Ho letto che i dati li posso estrarre dal sito yahoo finanza - EUR/USD (EURUSD=X) però non riesco a creare il collegamento ed inoltre non sono in diretta.
Siete a conoscenza di altri collegamenti / siti da cui posso estrarre questi dati?

Grazie mille.
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Sponsor
 

Re: ESTRAZIONE DATI EUR/USD.

Postdi Dylan666 » 26/09/13 19:33

So di non aver ecntrato l'argomento ma magari partendo da qui trovi qualcosa:
http://superuser.com/questions/286192/f ... readsheets
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: ESTRAZIONE DATI EUR/USD.

Postdi cd7019 » 26/09/13 20:07

Grazie mille,
però ho provato ad inserire i vari programmi/macro che ho trovato, ma excel dà un errore, forse perché ho una versione troppo vecchia.

ciao
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: ESTRAZIONE DATI EUR/USD.

Postdi ricky53 » 26/09/13 23:48

Ciao,
puoi inviare maggiori informazioni ???
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: ESTRAZIONE DATI EUR/USD.

Postdi Anthony47 » 27/09/13 01:04

Se ti interessa per uso professionale, credo che una qualsiasi piattaforma di trading on-line possa fornire l' indicazione in real time; qualsiasi quotidiano rende invece disponibile un dato aggiornato periodicamente ma probabilmente ritardato di 15-20 minuti.
Una volta trovato il sito, imposti una web query alla relativa pagina, e tra le propreta' imposti "aggiorna ogni xx minuti".
Una volta impostata la query, sul foglio excel avrai il dato che si aggiorna ogni xx minuti.
A questo punto puoi usare una macro sull' evento AfterRefresh; come esempio guarda quanto fu suggerito all' utente AntonioPatella in questo messaggio: viewtopic.php?t=98829#p568768
Quel codice fa una cosa piu' complessa del semplice storicizzare quanto catturato dalla web query, quindi tu potrai semplificare la
Codice: Seleziona tutto
Sub qt_AfterRefresh come segue:
Private Sub qt_AfterRefresh(ByVal Success As Boolean)
If Not Success Then Exit Sub
Dim LastSh2 As Long
'
LastSh2 = Sheets("Foglio2").Cells(Rows.Count, 1).End(xlUp).Row   '<<Salva su Foglio2, colonna A (orario) e B (valore)
'
With Sheets("Foglio2")
    .Cells(LastSh2 + 1, 1).Value = Now()
    .Cells(LastSh2 + 1, 2).Value = Sheets("Foglio1").Range("B5").value
End With
'Beep
'Foglio2.Range("D1").Value = Foglio2.Range("D1").Value + 1 '<< Eventuale counter di cicli
End Sub

Il resto del codice e la modalita' di uso rimangono invariati, da leggere sul messaggio linkato prima.

Ho immaginato che la WebQuery sia in Foglio1, che il dato che ti interessa sia reperibile in B5, che la storicizzazione avvenga in Foglio2, accodando i dati a quanto gia' presente, inserendo Data/ora in colonna A e il dato in colonna B.

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

Re: ESTRAZIONE DATI EUR/USD

Postdi cd7019 » 27/09/13 15:33

grazie mille,
però non sono riuscito ad estrarre i dati.

Ho trovato la sintassi x estrarre i dati dal sito Yahoo:
nella directory C:\Office\Query\ ho creato un file testo (1 riga): yahoo_EURUSD.iqy

http://finance.yahoo.com/d/quotes.csv?s=EURUSD=X&f=b

ho fatto il collegamento tramite: DATI >> CARICA DATI ESTERNI >> ESEGUI QUERY SU WEB >> yahoo_EURUSD.iqy
mi importa il valore dell'EUR/USD nella cella A1.

Però non riesco ad aggiornare secondo una mia tempistica ( "aggiorna ogni xx minuti"), non sono riuscito a trovare questa opzione su EXCEL 97.
Ho provato ad importare il listato "Sub qt_AfterRefresh" sul foglio1 però non succede niente. Forse sbaglio qualcosa.

Si potrebbe creare una macro x l'aggiornamento sempre attiva?

Grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: ESTRAZIONE DATI EUR/USD.

Postdi cd7019 » 27/09/13 15:41

ricky53 ha scritto:Ciao,
puoi inviare maggiori informazioni ???


Vorrei creare un grafico e un cronologia del valore dell'EURUSD (euro / dollaro USA) in real time.
nella cella A1 il valore che cambia ogni xx secondi, nella colonna B il valore del tempo e nella colonna C il valore di ogni xx secondi.

tempistica 60 sec. (1 min)
B1: 16:00 C1: 1,3542
B2: 16:01 C2: 1,3543
B3: 16:02 C3: 1,3544
...
ultimo valore (real time):
B20: 16:19 C20: 1,3556

A1: 1,3556

Grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: ESTRAZIONE DATI EUR/USD.

Postdi Anthony47 » 29/09/13 21:55

Non ho Office 97 su cui fare le prove (o meglio: sul Pc dove ce l' ho installato mi e' morta per vecchiaia la scheda di rete, una pcmcia OliCom, quindi oramai lavoro solo in locale); sono quindi posso ragionare solo su XL2002 e superiori.

In XL2003 accedi all' Opzione "Aggiorna ogni XX minuti" tramite tasto dx su una cella dei risultati, scelta Proprieta' intervallo dati.

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

Re: ESTRAZIONE DATI EUR/USD.

Postdi cd7019 » 30/09/13 23:35

ciao,
siccome non ho trovato l'aggiorna in "xx minuti", mi potresti aiutare a creare una macro che aggiorna la cella B2, in cui c'è il collegamento query che ho creato, come se cliccassi il tasto aggiorna abbinato ad un for next (ciclo xx secondi + ora real time) e creare così la cronologia nelle celle successive:
A5: 16:00 C5: 1,3542
A6: 16:01 C6: 1,3543
A7: 16:02 C7: 1,3544

Grazie mille.
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: ESTRAZIONE DATI EUR/USD.

Postdi ricky53 » 30/09/13 23:37

Ciao,
ti riferisci a Office '97?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: ESTRAZIONE DATI EUR/USD.

Postdi cd7019 » 01/10/13 08:35

ricky53 ha scritto:Ciao,
ti riferisci a Office '97?


si, mi interessa una macro con VBA standard (credo che utilizzando comandi base anche excel 2003 posso funzionare) che scandisca il tempo ogni xx secondi e prelevi il dato aggiornato nella cella B2 (con un comando "ActiveWorkbook.RefreshAll" ) e lo converta nel formato italiano (i numeri sono nel formato americano, la virgola e il punto sono invertite).

Grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: ESTRAZIONE DATI EUR/USD.

Postdi ricky53 » 01/10/13 09:59

Ciao,
puoi inviare un file di esempio.

Anch'io non ho più la versione '97, però ho ancora la 2003 e potrei provare a scrivere qualcosa.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: ESTRAZIONE DATI EUR/USD.

Postdi Anthony47 » 01/10/13 14:53

Ci sono varie discussioni su come ripetere una macro ogni tot secondi usando il "Metodo On Time"; ad esempio viewtopic.php?t=94425#p540318
Tuttavia non ricordo se XL97 avesse gli eventi Workbook_BeforeClose (per fermare la rischedulazione alla chiusura del file) e Workbook_Open (per attivare la rischedulazione subito all' apertura del file).

Nella discussione si parla di una macro
Public NextT As Date
Sub Ripeti()
NextT = Now + TimeValue("00:01:00") '<<<1
If Range("A1") = 1 Or (Range("A1") = 2 And Range("Z1") <> 2) Then
ActiveSheet.QueryTables("Nomequery").Refresh BackgroundQuery:=True '<<<2
[Z1] = [A1]
End If
Application.OnTime NextT, "Ripeti"
End Sub
Non ricordo l' uso che si faceva di A1 e Z1 nella discussione; inoltre nella stessa discussione si suggeriva di modificare in BackgroundQuery:=False; infine, immaginando che l' operazione continui per ore mentre non stai fisso sullo stesso foglio di lavoro e' opportuno indirizzare esplicitamente il foglio su cui la query deve lavorare.
Quindi il codice della Sub Ripeti potrebbe essere modificato in:
Codice: Seleziona tutto
Public NextT As Date
Sub Ripeti()
NextT = Now + TimeValue("00:01:00")  '<<<1
ThisWorkbook.Sheet("XYZW").QueryTables("Nomequery").Refresh BackgroundQuery:=False  '<<<2 inoltre USARE IL NOME FOGLIO ESATTO
If Range("Z1") = 1) Then
   Application.OnTime NextT, "Ripeti"
End If
End Sub
In questo modo la macro aggiorna la query e si ripianifica solo se Z1 e' impostato a 1; altrimenti si ferma e puo' essere rieseguita una volta eseguendo la macro Ripeti o puo' essere riavviata per esecuzione periodica prima ponendo Z1 a 1 e poi eseguendo Ripeti.

Da provare prima su XL2003, poi su XL97.

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

Re: ESTRAZIONE DATI EUR/USD.

Postdi cd7019 » 01/10/13 16:56

grazie,
però non mi funziona, al secondo valore mi dice che la macro Ripeti non esiste.

allora ho provato a scrivere una macro + semplice:
Sub Ripeti()
XT = 0
Range("A6:C1000").Clear
Range("B5:B1000").NumberFormat = "h:mm:ss"
For XT = 1 To 100
Sheets("XYZW").QueryTables("yahoo_EURUSD").Refresh BackgroundQuery:=False
Cells(2, 2) = Cells(2, 2) / 10000 ' CAMBIO FORMATO USA - ITA
Cells(5 + XT, 1) = XT
Cells(5 + XT, 2) = Now: Cells(5 + XT, 2).NumberFormat = "h:mm:ss"
Cells(5 + XT, 3) = Cells(2, 2)
nuovaOra = Hour(Now()): nuoviMinuti = Minute(Now()): nuoviSecondi = Second(Now()) + 10
tempoAttesa = TimeSerial(nuovaOra, nuoviMinuti, nuoviSecondi)
Application.Wait tempoAttesa
Next XT
End Sub

Domanda :
Come posso rendere la macro sempre operativa quando cambio foglio excel o vado su altro file?
Come posso convertire il formato americano con quello italiano? (invertite , con .) , divido x 10000 x ottenere il valore corretto.


Grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: ESTRAZIONE DATI EUR/USD.

Postdi Anthony47 » 02/10/13 01:06

La tua macro non ha una rischedulazione ma una Application.Wait che aspetta il tempo indicato ma assorbendo tutta la cpu disponibile, quindi col pc quasi bloccato... sconsiglio quell' approccio.
Dici "al secondo valore mi dice che la macro Ripeti non esiste": non ho capito esattamente a cosa ti riferisci con "al secondo valore", pero' l' errore che descrivi potrebbe dipendere da un errato posizionamento del codice della Sub Ripeti: esso va posizionato in un Modulo standard, seguendo le istruzioni del post che ti ho linkato ("Menu /Inserisci /Modulo, inserisci queste istruzioni nel frame di dx [. . . ]")

Devo anche chiarire che la mia macro dovrebbe si provvedere a rieseguire periodicamente la webqery, ma in effetti non contiene le istruzioni necessarie per accodare il nuovo dato a un tuo elenco storico, cosa che in realta' mi era sembrato fosse alla tua portata.
In linea di massima, se il dato e' contenuto in B2 e vuoi accodare i valori in colonna H (orario) e I (valore)
Allora prima della End Sub (nella Sub Ripeti) inserirai:
Codice: Seleziona tutto
End If    ' ESISTENTE
'aggiungere:
With ThisWorkbook.Sheets("XYZW")
   NextL = .Cells(Rows.Count, "H").End(xlUp).Row + 1
   .Cells(NextL, "H") = Now '<< Vedi testo per il formato
   .Cells(NextL, "I") = .Cells(2, 2).Value
End With
End Sub   'ESISTENTE
Che e' assolutamente simile a quello che hai fatto nella tua versione di Ripeti.

Quanto al formato della colonna H, lo puoi applicare "a mano" all' intera colonna scegliendo quale versione soddisfa maggiormente; ad esempio io inserirei data + ora.

Per avare la garanzia che il dato sia corretto, direi che bisogna impostare Excel affinche' usi come separatore decimale lo stesso carattere usato dal sito, cioe' il "punto". Come fare dipende dalle versioni: una volta queste impostazioni venivano ereditate dalle impostazioni di sistema, poi sono state rese disponibili in Menu /Strumenti /Opzioni.

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

Re: ESTRAZIONE DATI EUR/USD.

Postdi cd7019 » 02/10/13 08:03

grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38


Torna a Applicazioni Office Windows


Topic correlati a "ESTRAZIONE DATI EUR/USD.":


Chi c’è in linea

Visitano il forum: Nessuno e 88 ospiti