Grazie mille, purtroppo io ho già realizzato il tutto, sto cercando di
controllarne il funzionamento. L'unica cosa che mi manca è fare in modo
che possa mandare in ciclo ripetitivo il tutto finchè non viene premuto
un tasto (esempio ESC)
Ecco il mio codice (sicuramente lungo e molto migliorabile)
'avvia il file sonoro dell'allarme
Sub avvia_allarme_audio()
Dim oSvc as object
'file_audio_allarme = "allarme.mp3"
oSvc = createUnoService("com.sun.star.system.SystemShellExecute")
Rem Example 1 - Launch the default program associated with a file
extension:
oSvc.execute(ConvertToUrl("/home/io/percorso/audio/" &
file_audio_allarme & ".mp3"), "", 0)
End Sub
sub apri_allarme
document = ThisComponent 'assigns the current document to the
variable document
Sheets = document.Sheets 'get the container of all Sheets
Sheet = Sheets.getByName("allarme") 'get the sheet named Sheet2
Controller = document.getcurrentController
Controller.setActiveSheet(Sheet)
end sub
'conta il numero di righe presenti nel foglio allarme
sub conta_righe_allarme
dim Doc as object
dim Sheet as object
Sheet = ThisComponent.Sheets.getByName("allarme")
Doc = ThisComponent 'The current document
oc = ThisComponent
Curs = Sheet.createCursor
Curs.gotoEndOfUsedArea(True)
NumRows = Curs.Rows.Count
righe_allarme = numrows 'variabile globale a cui viene
assegnato il numero di righe contate in jsondata
end sub
sub autopilot_allarme
Doc = StarDesktop.CurrentComponent
oSheet = ThisComponent.Sheets.getByName("allarme")
dim contatore as integer
call apri_allarme 'posizionarsi sul foglio ALLARME
call conta_righe_allarme 'contare le righe del foglio ALLARME e
memorizzare il dato in variabile globale "righeallarme"
contatore = 0
'ciclo di ripetizione per analizzare tutte le righe del foglio ALLARME
FOR contatore = 0 to righe_allarme-1 step 1 'incrementa il
contatore di uno ogni ciclo
'contatore = contatore +1
'leggere la prima riga e passare i valori alle variabili
globali (autopilotmktname ; autopilotbidask , autopilotcondizione,
autopilotvalue)
ocell = oSheet.getCellByPosition(0 , contatore)
'prima colonna
autopilotmktname = ocell.string
ocell = oSheet.getCellByPosition(1 , contatore)
'seconda colonna
autopilotbidask = ocell.string
ocell = oSheet.getCellByPosition(2 , contatore)
'terza colonna
autopilotcondizione = ocell.string
ocell = oSheet.getCellByPosition(3 , contatore)
'quarta colonna
autopilotvalue = ocell.value
ocell = oSheet.getCellByPosition(4 , contatore)
'quinta colonna con il nome file audio
file_audio_allarme = ocell.string
ocell = oSheet.getCellByPosition(5 , contatore)
'quinta colonna con il valore BID
valore_mkt_bid = ocell.value
ocell = oSheet.getCellByPosition(6 , contatore)
'quinta colonna con il valore ASK
valore_mkt_ask = ocell.value
'se il valore di autopilotbidask è bid richiama la
procedura per controllare BID altrimenti chiama quella di ASK
if autopilotbidask = "BID" then call autopilot_bid else
if autopilotbidask = "ASK" then call autopilot_ask
next contatore
end sub
'procedura che controlla la funziona di autopilot per quanto riguarda i
valori dei BID
sub autopilot_bid
'verifica la condizione con la formula che segue :
if valore_mkt_bid < autopilotvalue then condizione = "<"
if valore_mkt_bid > autopilotvalue then condizione = ">"
if valore_mkt_bid = autopilotvalue then condizione = "="
'se la condizione espressa nel foglio allarme si verifica allora
avvia l'allarme audio
if condizione = autopilotcondizione then
call avvia_allarme_audio
MsgBox "Il mercato "& autopilotmktname & " ha " &
autopilotbidask & " " & autopilotcondizione & " " & autopilotvalue & " ("
& valore_mkt_bid & ") ", vbCritical
end if
end sub
'procedura che controlla la funziona di autopilot per quanto riguarda i
valori dei ASK
sub autopilot_ask
'verifica la condizione con la formula che segue :
if valore_mkt_ask < autopilotvalue then condizione = "<"
if valore_mkt_ask > autopilotvalue then condizione = ">"
if valore_mkt_ask = autopilotvalue then condizione = "="
'se la condizione espressa nel foglio allarme si verifica allora
avvia l'allarme audio
if condizione = autopilotcondizione then
call avvia_allarme_audio
MsgBox "Il mercato "& autopilotmktname & " ha " &
autopilotbidask & " " & autopilotcondizione & " " & autopilotvalue & " ("
& valore_mkt_ask & ") ", vbCritical
end if
end sub