Ingegneria Forum

Ingegneria Edile, Strutturale & Geotecnica => .:C#, Excel, VB e Programmazione:. => Topic started by: minis on 01 October , 2012, 09:54:57 AM

Title: Scrittura su cella di funzione calcolata con macro (libreOffice)
Post by: minis on 01 October , 2012, 09:54:57 AM
Salve da internet ho trovato questa macro per l'automazione della ricerca valore di destinazione, ma stampa a video il valore ricercato mentre io vorrei che fosse scritto in una specifica cella, modificando il valore che è già presente in quella cella (es. in cella P63), non conoscendo nulla di programmazione LibreOffice basic, volevo avere indicazione su come modificare la macro per ottenere il risultato richiesto inserisco di seguito la macro

sub MP
dim resultfound as new com.sun.star.sheet.GoalResult '(divergence,result structure)
dim formula_address as new com.sun.star.table.CellAddress '(sheet,column, Row structure)
dim variable_address as new com.sun.star.table.CellAddress
dim targetresult as string 'goal value sought as STRING
oDoc=thiscomponent
'set location of formula to be evaluated to give goal value
formula_address.sheet = 1 'index values - zero based
formula_address.Column = 1
formula_address.Row=47
' set location of variable to be changed
variable_address.sheet = 0
variable_address.Column = 15
variable_address.Row=62
' set goal value
targetresult = "0"
' run goalseek
resultfound = oDoc.seekgoal(formula_address,variable_address,targetresult)
' do something with result
msgbox resultfound.result

end sub


fa vedere a video ma vorrei che scrivesse il risultato nella cella P63 foglio 1

chiedo a voi che avete maggiore conoscenza di me di liguaggi di programmazione come risolvere il problema.

Grazie anticipate a tutti
Title: Re:Scrittura su cella di funzione calcolata con macro (libreOffice)
Post by: Gilean on 01 October , 2012, 14:34:26 PM
Se la della é ha una riga x e colonna y e vuoi che scriva il valore z scriverai

Cell(x,y) = z
Title: Re:Scrittura su cella di funzione calcolata con macro (libreOffice)
Post by: minis on 01 October , 2012, 14:48:49 PM
ho provato ad inserire il comando cell (x,y) come da te indicato ma non funziona mi dice procedura non definita, come detto non sono affatto pratico di programmazione se magari si potrebbe inserire le righe da scrivere nella macro sopra rappresentata sarebbe meglio

il risultato viene visualizzato con il comando msbox resultfoud.result  e vorrei che questo risultato invece di esser visibile solo a video venga scritto scritto nella cella P63 del primo foglio

grazie di nuovo
Title: Re:Scrittura su cella di funzione calcolata con macro (libreOffice)
Post by: Gilean on 02 October , 2012, 08:11:18 AM
infatti ho sbagliato io, devi usare il comando cells, non cell

http://excelvba.altervista.org/Corso/OggettiExc2.html (http://excelvba.altervista.org/Corso/OggettiExc2.html)
Title: Re:Scrittura su cella di funzione calcolata con macro (libreOffice)
Post by: minis on 02 October , 2012, 09:42:30 AM
grazie ancora ma non sono riuscito ad implementare la funzione continua restituirmi il comando funzione non definita, non so se è un problema di libreoffice o del comando perchè non compatibile.

se hai un attimo di tempo potresti provare a modificare e far girare la macro indicata (serve naturalmente una funzione di cui ricercare il valore)

grazie di nuovo
Title: Re:Scrittura su cella di funzione calcolata con macro (libreOffice)
Post by: minis on 02 October , 2012, 10:35:59 AM
risolto i comandi sono differenti invio l'intero listato della macro per libreoffice

sub MP
   dim resultfound as new  com.sun.star.sheet.GoalResult '(divergence,result structure)
   dim formula_address as new  com.sun.star.table.CellAddress  '(sheet,column, Row structure)
   dim variable_address as new  com.sun.star.table.CellAddress
   dim targetresult as string  'goal value sought as STRING
   oDoc=thiscomponent
   'set location of formula to be evaluated to give goal value
   formula_address.sheet = 1  'index values - zero based
   formula_address.Column = 1
   formula_address.Row=47
   ' set location of variable to be changed
   variable_address.sheet = 0
   variable_address.Column = 15
   variable_address.Row=62
   ' set goal value
   targetresult = "0"
   ' run goalseek
   resultfound = oDoc.seekgoal(formula_address,variable_address,targetresult)
   ' copia nella cella
        oDoc.Sheets(0).getCellRangeByName("P63").FormulaLocal= resultfound.result
       ' per avere messaggio a video
        msgbox resultfound.result
end sub

naturalmente vanno modificati i valori del foglio e delle righe e colonne relative alle celle


grazie comunque