Newsgroup: it.istruzione.scuola
Titolo: Macro Word calcolo su tabelle

Spesso, per una serie di ragioni, tipo fare i pagellini o 
generare soluzioni automatiche per molti gruppi diversi di 
verifiche, o cmq dover lavorare con documenti 
prevalentemente di testo in cui le tabelle numeriche siano 
solo una delle componenti, o cmq ogniqualvolta per qualsiasi 
ragione sia meglio lavorare con un DOC che non con un foglio 
elettronico schietto (che personalmente come mero editor di 
testo mi rifiuto di imparare ad usare), cmq sia tornerebbe 
utile avere una parte delle funzionalità di excel esposte 
dentro word.
 
Mi sono scritto alcune MACRO (sono comandi eseguibili che 
estendono le funzioni intrinseche dei menu) per WORD (per 
chi conosce le API e gli oggetti di OO potrebbero pure 
essere portate, ma io non le conosco quasi per nulla) che 
possono fare queste cose :
 
1) accettare, tramite la clipboard di windows (gli appunti) 
una serie di istruzioni, anche multiriga, di calcoli 
elementari (le 4 operazioni più radicale, potenza / 
esponenziale e logaritmo a base qualsiasi, più, 
preziosissima, l'ASSEGNAZIONE), supportano literals (cioè 
numeri floating point inseriti direttamente nelle 
istruzioni, e riferimenti di memoria alla tabella di WORD 
che contiene la selezione (il riferimento è relativizzato e 
quindi dovrebbe lavorare in qualsiasi documento)
Questi riferimenti, nel formato @XXX (in cui XXX è un numero 
intero, di qualunque numero di cifre, indica LA COLONNA 
della tabella, zero-based e numerata in modo semre relativo 
a partire dalla SELEZIONE rettangolare di colonne x righe. 
L'operatore meno "-" unario è regolarmente rilevato e 
distinto dalla sottrazione, quando generato internamente ... 
non so se lo è anche se inserito ad hoc.
 
La macro viene automaticamente ripetuta per tutte le righe 
di una selezione (non sull'intera tabella, salvo che venga 
selezionata tutta).
 
Con il ";" (o con a-capo) sono supportate istruzioni 
multiriga, ossia distinte.
 
Il controllo sintattico è veramente scarno (buttato giù in 
un paio di giorni) e di poco aiuto, e si limita a rilevare 
errati annidamenti delle parentesi, e la presenza di un 
L-Value (una reference di cella) a sinistra 
dell'assegnazione (che serve per SCRIVERE dati calcolati 
nelle colonne della tabella)
 
In sostanza è come una funzione Eval un po' più evoluta 
(supportando variabili oltre a costanti ed essendo multiriga).
 
La gestione degli errori è assente e mi è passata la voglia.
Inoltre siccome è un accrocchio imbastito senza design, 
funziona così com'è ma non sembrerebbe estensibile 
facilmente ... Mi stavano tentando operatori di confronto e 
condizioni implicite, tipo (A > B ? Fa questo : Fa 
quest'altro). Che si, tornerebbero molto comodi, ma dispero 
di poterli stratificare su un codice nato gracilino.
 
Cmq sia, può tornare utile per dare un elevato numero di 
verifiche con solo i dati diversi, per computarsi 
automaticamente e senza fare errori, né annoiarsi, tutti i 
possibili risultati di ogni gruppo.
 
Se a qualcuno interessa, anche per beta-testare un minimo, 
posso mandare i sorgenti.
Non richiedono nessuna installazione o compilazione : basta 
incollarli in "normal.dot" da Strumenti > Macro > Editor di 
Visual Basic, poi il comando diventa disponibile, dato che 
il motore VBA è sempre presente sotto il cofano di tutta la 
suite Office.
Me lo sono messo in una toolbar di pulsanti testuali per 
averlo ad un click.
 
 
 
 
 
-- 
1) Resistere, resistere, resistere.
2) Se tutti pagano le tasse, le tasse le pagano tutti
Soviet_Mario - (aka Gatto_Vizzato)
 


dimenticavo questo : gli assegnamenti sono DIFFERITI alla 
conclusione di tutte le istruzioni applicate ad ogni riga 
(righe diverse sono incomunicanti tra loro, per design ... i 
registri sono row-oriented). Quindi anche se una colonna 
viene assegnata dall'istruzione per es. numero II, se 
nell'istruzione IV successiva si fa riferimento a quella 
stessa colonna, conterrà ancora il valore originale e non 
quello modificato.
Se si vuole questo secondo risultato
O si applicano a mano, in sequenza, istruzioni monoriga, 
oppure al posto di una reference, si deve inserire 
l'espressione intera che l'avrebbe generata.
 
Forse potrebbe essere semplice estendere le reference a 
multiriga (per ottenere statistiche tipo somma di voti etc) 
... ma non avevo voglia inizialmente, e ora il parsing 
sarebbe da rivedere radicalmente.
Boh


 i sorgenti.
 
 
Sono interessato.
 
Perdonami ma oggi sono completamente fuso e non ho capito
cosa faccia di preciso la tua macro.
 
Conosco un poco il VBA. Anzi sino al 2006 l'ho usato anche con i ragazzi
al posto del Pascal. Poi non l'ho piů toccato.
 
Personalmente mi interessa una Macro che in Word mi permetta di gestire
gli elenchi numerati-puntati come voglio, ovvero cambiando a mio piacere
l'ordine, con lo scopo di gestire i test a risposta multipla. Esempio
 
a.pippo
b.topolino
c.pluto
 
deve diventare a random
a.pluto
b.pippo
c.topolino
 
Mi sembra che anche le tue macro siano finalizzate a facilitarci
il lavoro. Le guarderei con piacere cosě magari mi viene la voglia
di riprendere il VBA.
 
 
 
 
__________ Informazioni da ESET Smart Security, versione del database delle firme digitali 7708 (20121119) __________
 
Il messaggio č stato controllato da ESET Smart Security.
 
www.nod32.it
 
 
 
 
 


 


 news:50a97405$0$17946$4faf...@reader1.news.tin.it...
 
Conferma con un SI, sia per la spedizione che per la mail valida
 
********************
Leva ++ nella mail.
 
Ti ringrazio in anticipo.
 
Ciao. 
 
 
 
__________ Informazioni da ESET Smart Security, versione del database delle firme digitali 7708 (20121119) __________
 
Il messaggio � stato controllato da ESET Smart Security.
 
www.nod32.it
 
 
 
 
 


 
