PDA

View Full Version : Open Office, Calc WorkSheet, StarBasic...e la mia ignoranza!


bsummer
26-04-2003, 20:40
Ciao a tutti.

Avrei un problemino da proporvi, in quanto io non so più dove sbattere la testa.
Ho recentemente installato Open Office (v1.0.1, sotto Linux Mandrake v9.0) trovandolo molto ben fatto. Abituato al Micro$oft Office, il passaggio è stato quasi indolore in quanto, devo dire, i due prodotti sono molto simili.
Quasi indolore, ho detto, perchè un piccolo fastidio l'ho avuto, e ce l'ho ancora adesso.

Il problema nasce con il calc worksheet, cioè il corrispettivo di Excel.
Finchè si tratta di utilizzare il foglio di lavoro, nessun problema.
Il casino nasce quando tento da uno script codificato in starbasic (che praticamente è come il vbscript) di accedere ( o scrivere) al contenuto di una cella del foglio di lavoro.

In vb basta scrivere:

cells(x,y).value = z

oppure

z = cells(x,y).value

In sBasic non si sa...Ho scaricato vari Mb di guide (tra cui quella officiale di Open Office) ma da nessuna parte si fa riferimento a queste piccole ma fondamentali operazioni.

Solo in un pacchetto di esempi ho trovato una nota nella quale si faceva riferimento a tale esigenza...e, meraviglia, c'era scritto che per accedere ad una cella bisogna fare:

in lettura
r = cells(x,y,z).value

in scrittura
cells(x,y,z).insert(r)

Ora, nel primo caso mi viene detto che Value non è una proprietà dell'oggetto cells.
Nel secondo caso non mi viene detto nulla, ma il valore non viene cmq inserito nella cella.

Anche tutti gli esempi che ho trovato in giro e che ho provato hanno dato lo stesso risultato.

La domanda nasce spontanea: ma siamo sicuri che Open Office in effetti permetta tale cosa? Beh, credo proprio di si, visto che oltre a utilizzare un suo formato è in grado di importare numerosi tipi di file creati con altri fogli elettronici (e anche di salvarli in tali formati, se si desidera).

Non credo che il mio problema sia dovuto ad un bug del programma (troppo evidente per essere sfuggito in fase di testing), piuttosto credo sia da imputare ad un utilizzo scorretto da parte mia.

C'è qualcuno che mi può illuminare a riguardo?

Grazie.

a2000
26-04-2003, 23:02
chi lascia la strada vecchia per quella nuova sa i che lascia ma non quelli ch trova !!! :D

(Pasquale del Grande Fratell' : la port' del debagg' s'è rott' )

a2000
26-04-2003, 23:12
c'è questo ?

_____________________________________________________________
Oggetto CodeModule[b]
Rappresenta il codice alla base di un componente, quale un form, una classe o un documento.

Osservazioni

L'oggetto CodeModule consente di modificare tramite inserimenti, eliminazioni e modifiche il codice associato a un componente.
Ciascun componente è associato a un solo oggetto CodeModule, che a sua volta può essere associato a più riquadri del codice.

I metodi associati all'oggetto CodeModule consentono di gestire il testo del codice e di restituire informazioni relative al codice riga per riga. È possibile, ad esempio, utilizzare il metodo AddFromString per aggiungere testo in un modulo. Con questo metodo il testo viene inserito immediatamente prima della routine iniziale del modulo oppure, se non esiste alcuna routine, alla fine del modulo.

Per restituire l'oggetto VBComponent associato a un modulo di codice, è necessario utilizzare la proprietà Parent.[/size]
_____________________________________________________________


Cioè a dire: codice che scrive codice :eek:

a2000
28-04-2003, 11:08
Originally posted by "a2000"

c'è questo ?

_____________________________________________________________
Oggetto CodeModule[b]
Rappresenta il codice alla base di un componente, quale un form, una classe o un documento.

Osservazioni

L'oggetto CodeModule consente di modificare tramite inserimenti, eliminazioni e modifiche il codice associato a un componente.
Ciascun componente è associato a un solo oggetto CodeModule, che a sua volta può essere associato a più riquadri del codice.

I metodi associati all'oggetto CodeModule consentono di gestire il testo del codice e di restituire informazioni relative al codice riga per riga. È possibile, ad esempio, utilizzare il metodo AddFromString per aggiungere testo in un modulo. Con questo metodo il testo viene inserito immediatamente prima della routine iniziale del modulo oppure, se non esiste alcuna routine, alla fine del modulo.

Per restituire l'oggetto VBComponent associato a un modulo di codice, è necessario utilizzare la proprietà Parent.[/size]
_____________________________________________________________



richiedo: c'è questo ?

grazie :)

bsummer
28-04-2003, 18:32
Scusa il ritardo...
No, non c'è :(

a2000
28-04-2003, 21:33
C'est pas grave. :)

e questi ?

BESSEL.I
BESSEL.J
BESSEL.K
BESSEL.Y
FUNZ.ERRORE

MATR.DETERM
MATR.PRODOTTO
MATR.INVERSA

Strumenti > Risolutore

......

?[/siz]

bsummer
29-04-2003, 20:55
Non li ho guardati tutti, ma alcuni esistono...naturalmente con altri nomi.
Queste infatti che citi sono delle macro predefinite.

Ad esempio MATR.DETERM in open office si chiama MDETERM, e MATR.PRODOTTO invece MPRODUCT.

Ora ho installato la versione 1.0.2 di OpOff e l'unica miglioria è stata che adesso non mi da più errore se scrivo

x = Cells(1,1).value

Il problema è che tale operazione non restituisce alcun valore in X.

Uffa! :(

a2000
29-04-2003, 21:17
anche "addressando" in un modulo separato ?

x = Worksheets("Foglio1").Cells(1, 1) (vuole la , o il ; ? )

e togliendo quel cazzabbuffo di .value

Prova anche con una conversione di tipo, per esempio:

x = CStr(Worksheets("Foglio1").Cells(1, 1))


Comunque lo stesso bug c'era (a volte ... ) in Excel97, in quel caso era tutto legato alla conversione di tipo.

bsummer
30-04-2003, 21:02
Ho provato. Ed ho scoperto una cosa strana.

Se scrivo una cosa del genere:

Dim x
x = caccadidrago("puzzolente",19)

...non mi da nessun errore!

Naturalmente in x non viene messo alcun valore significativo, ma come minimo mi si dovrebbe dire che il riferimento a "caccadidrago" non esiste!

Naturalmente ho già provato ad usare "option explicit" senza trovare alcun giovamento...

A questo punto non ci capisco + niente. Ho scaricato per intero la documentazione sulle API di OpenOffice, ma dallo StarBasic non riesco a farne funzionare una che sia una!

Il bello è che se faccio una funzione o procedura banalissima in basic, questa funziona, ma appena faccio qualcosa che deve interagire col foglio di lavoro, nisba, niet, nada, non ne vuole sapere.

E quello che mi fa inca%%are ancor di più è che non è concepibile che non funzioni di suo, quindi l'inetto devo essere per forza io!
Ma non riesco proprio a capire dove sto sbagliando...

a2000
01-05-2003, 08:33
Torna! :o :o :o
'Sta casa aspetta a te... :o :o :o
Torna! :o :o :o
Che smania 'e te vedé!... :o :o :o
E torna!... Torna!... Torna!... :o :o :o :o :o :o
Ca, si ce tuorne tu, :o :o :o
nun ce lassammo cchiù :o :o :o :o :o :o :o :o :o