Parliamo di Calc.
Mi date per favore una piccola indicazione di come
realizzare una macro o una sub in basic che per esempio
legge da una cella fa una somma e scrive in un'altra.
Non capisco dove e come devo creare la macro o la sub,
dove metterla e come richiamarla.
Eventuali link sono molto graditi.
Grazie anticipate
Un saluto a tutti, sono nuovo del N.G. e mi scuso se il post è un pò
lungo (un pò tanto mi sa)
Per il link di consiglio di iniziare scaricando il manuale di starbasic
http://api.openoffice.org/TipsAndTricks/external.html
StarOffice 7 Software Basic Programmer's Guide sotto il link *ITALIAN*
Le macro possono essere scritte nell'ide oppure registrate
possono essere salvate sia nel documento (e puoi richiamarle solo se il
documento è aperto) sia direttamente in OOo (e puoi richiamarle da
qualsiasi documento)
le macro sono contenuti in dialoghi, che a loro volta sono contenuti in
librerie
vai su strumenti --> macro --> macro
ti appare una finestra di dialogo
sulla sinistra hai:
macro da
quelle che vedi (Depot, Euro, FormWizard..) sono librerie
si trovano sotto *soffice* quindi sono disponibili per tutti i documenti
più in basso avrai *senza nome1* che è il file aperto (o il nome del
file aperto se non si tratta di un nuovo file)
sotto c'è la libreria standard, se facendoci doppio click non ti appare
*Module1* vai sul pulsante gestisci, nella sezione moduli clicchi su
standard (quello sotto il nome del file) e poi su nuovo dialogo.
Se invece hai già Module1 nella casella a destra ti apparirà la macro Main.
Clicca su main e poi su modifica
ti apparirà l'ide di OOo per scrivere le macro
all'interno troverai:
REM ***** BASIC *****
Sub Main
End Sub
le macro vanno scritte qui
Nel tuo caso vuoi leggere il contenuto di una cella:
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Dim Contenuto
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
Cell = Sheet.getCellByPosition(0, 0)
Contenuto = Cell.Value
in questo modo leggi il valore della cella A1 nella prima tabella
in Doc.Sheets(numero) specifichi il numero della tabella partendo da 0
quindi tabella1 sarà 0 oppure il nome
Sheet.getCellByPosition(Colonna, Riga) stessa storia ma per Colonna e
riga sempre partendo da 0: A=0 B=1 ecc... uguale per le righe 1=0 2=1 ecc...
ho messo il valore della cella nella variabile contenuto tu vuoi farci
una operazione, quindi la riga successiva sarà
Contenuto = Contenuto + 1
Ho aggiunto 1 al valore letto dalla cella
Poi vuoi scriverlo in un'altra cella quindi le seguenti righe saranno:
Cell = Sheet.getCellByPosition(0, 1)
Cell.Value = Contenuto
con cui riscrivi il valore.
Spero di essere stato abbastanza chiaro.
Leggo molto sporadicamente il N.G. quindi se hai bisogno di qualche
aiuto in tempi più rapidi, puoi trovarmi nel canale IRC di openoffice in
Freenode canale #openoffice.org-it. Puoi trovare maggiori istruzioni
nella pagina http://openoffice.nathanvi.it/ per raggiungere il canale.
Un saluto
Kal
Grazie mille per le preziose ed esaurienti informazioni.