Re: [utenti] conversione Macro Excel in Starbasic

2009-02-04 Per discussione Nord Studio snc
Vi chiedo scusa me ne sono accordo dopo un paio di messaggi inoltrati, 
non utilizzando la mia posta privata non mi ricordavo che quella 
aziendale prevede la richiesta di notifica.
Colgo l'occasione per ringraziare ancora le persone che mi hanno aiutato 
nel risolvere le problematiche espresse.
Un rungraziamento particolare a Paolo per la cortesia ed il tempo 
impiegato nelle spiegazioni, ne farò tesoro e base di partenza con le 
indicazioni di studio e approfondimento che mi ha indicato (ciò non mi 
esimerà dal contattarvi di nuovo in caso di necessità).

Alle prossime.

Danilo



Paolo Mantovani ha scritto:

Ciao Danilo,

i tuoi post mi chiedono sempre la ricevuta di ritorno, potresti
disattivarla per favore?

Nord Studio snc ha scritto:
Mi hai dato una mano incredibile, ti ringrazio Paolo. Ti chiedo o vi 
chiedo se altri mi possono aiutare, ancora l'ultimo sforzo: se la 
riga che io sono andato a copiare nel secondo foglio la voglio 
colorare con un fondo salmone che istruzioni devo aggiungere?



Il codice che ti ha suggerito Bart Aimar va benissimo, in alternativa
potresti aggiungere in fondo alla macro questa linea:

oShArchivio.Rows(2).CellBackColor = RGB(255, 128, 128)

Come vedi è molto simile a quella di Bart, ma ho usato la funzione RGB
per rendere più "leggibile" il colore.
La funzione RGB è descritta nell Help di StarBasic (scrivi RGB
nell'editor e schiaccia F1)

Perchè la codifica che mi hai mandato tu, sintatticamente è molto 
più ristretta di quella che mi appare se io registro una macro?


Per fortuna, nonostante l'età, contro il registratore di macro riesco
ancora a giocarmela ;-)

Battute a parte, anche la codifica del registratore VBA è estremamente
prolissa.
la macro che ti ho postato, ripulita di commenti e righe vuote, tolti
anche i due controlli iniziali che nella tua versione non erano
previsti, consta di sole 12 linee, delle quali solo 7 sono in realtà
strettamente necessarie, altre 5 servono solo a migliorare la leggibilità
Pertanto, abbiamo 7 linee contro 50 e passa della tua macro originale
registrata in VBA



Ti faccio un esempio stupido: ho provato a registrare una macro per
 il cambio colore di cui ti accennavo e mi ha restituito tutto 
questo po po di roba: sub colore

[...]

end sub



Il registratore di macro registra tutto quello che succede. Spesso però
quello che ti serve davvero è svolto da una piccola parte delle righe
registrate.
Ad esempio, se ci fai caso, la macro che ti ho passato non fa 
assolutamente spostare il cursore e non attiva/disattiva le tabelle.


Il registratore invece tiene conto di tutti gli spostamenti del 
cursore ecc.

Questo avviene sia in VBA che in StarBasic.

Oltre a questo, il registratore di macro di OpenOffice usa una sintassi
piuttosto prolissa e monotona (ma tutto sommato semplice) perché di
fatto qualsiasi operazione viene effettuata chiamando sempre lo stesso
servizio DispatchHelper.



C'è una guida in italiano che spiega passo passo come programmare
in Starbasic? 


http://docs.sun.com/app/docs/coll/1278.1?l=it&q=StarOffice+8+Collection%2C+Italian 



Con un po di ricerca negli archivi di questa lista e della lista 
d...@it.openoffice.org potrai tovare moltissime informazioni 
interessanti su come cominciare al meglio.


Ti segnalo comunque questi thread dove ci sono ulteriori 
considerazioni sul registratore e consigli per iniziare (leggi 
attentamente anche le risposte):


http://www.mail-archive.com/d...@it.openoffice.org/msg01125.html
http://www.mail-archive.com/d...@it.openoffice.org/msg01267.html

Per focalizzare sulle cose cose essenziali, per iniziare al meglio ti 
serve:


- Manuale SUN StarBasic (vedi sopra)

- Scarica e installa il tool Xray di Bernard Marcelly

- Scarica e installa il SDK (Software Development Kit) di OOo

Non ho i link sottomano ma sono certo che non avrai difficoltà a 
trovare tutto.


Se l'inglese non è un problema ci sono anche molti altri documenti tra 
i quali spicca il famoso "Andrew Pitonyak's Macro Document"




La cosa mi interesserebbe per bagaglio personale ma quando vedo 
tutte queste costruzioni per un'operazione base perdo 
l'amore...cosa che invece nella tua codifica e abbastanza 
intuitiva la cosa almeno all'apparenza.


Come ho detto il codice registrato da OpenOffice sembra complesso ma
alla fine è molto semplice.
Ora non voglio dilungarmi in una trattazione completa, ma basta
osservare meglio il codice per vedere che qualsiasi operazione viene
eseguita con una costruzione simile a questa:

dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$3:$K$3"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

Come vedi le prime righe preparano i parametri del comando sotto forma 
di coppie nome:valore
In questo caso il nome parametro è ToPoint e il valore desiderato è 
"$A$3:$K$3"


L'ultima riga è quella che effettivamente esegue il comando che è 
quello specificato dalla stringa ".uno:GoToCell"


In altre parole: "sposta 

Re: [utenti] conversione Macro Excel in Starbasic

2009-02-04 Per discussione Paolo Mantovani

Ciao Danilo,

i tuoi post mi chiedono sempre la ricevuta di ritorno, potresti
disattivarla per favore?

Nord Studio snc ha scritto:
Mi hai dato una mano incredibile, ti ringrazio Paolo. Ti chiedo o 
vi chiedo se altri mi possono aiutare, ancora l'ultimo sforzo: se 
la riga che io sono andato a copiare nel secondo foglio la voglio 
colorare con un fondo salmone che istruzioni devo aggiungere?



Il codice che ti ha suggerito Bart Aimar va benissimo, in alternativa
potresti aggiungere in fondo alla macro questa linea:

oShArchivio.Rows(2).CellBackColor = RGB(255, 128, 128)

Come vedi è molto simile a quella di Bart, ma ho usato la funzione RGB
per rendere più "leggibile" il colore.
La funzione RGB è descritta nell Help di StarBasic (scrivi RGB
nell'editor e schiaccia F1)

Perchè la codifica che mi hai mandato tu, sintatticamente è molto 
più ristretta di quella che mi appare se io registro una macro?


Per fortuna, nonostante l'età, contro il registratore di macro riesco
ancora a giocarmela ;-)

Battute a parte, anche la codifica del registratore VBA è estremamente
prolissa.
la macro che ti ho postato, ripulita di commenti e righe vuote, tolti
anche i due controlli iniziali che nella tua versione non erano
previsti, consta di sole 12 linee, delle quali solo 7 sono in realtà
strettamente necessarie, altre 5 servono solo a migliorare la leggibilità
Pertanto, abbiamo 7 linee contro 50 e passa della tua macro originale
registrata in VBA



Ti faccio un esempio stupido: ho provato a registrare una macro per
 il cambio colore di cui ti accennavo e mi ha restituito tutto 
questo po po di roba: sub colore

[...]

end sub



Il registratore di macro registra tutto quello che succede. Spesso però
quello che ti serve davvero è svolto da una piccola parte delle righe
registrate.
Ad esempio, se ci fai caso, la macro che ti ho passato non fa 
assolutamente spostare il cursore e non attiva/disattiva le tabelle.


Il registratore invece tiene conto di tutti gli spostamenti del cursore ecc.
Questo avviene sia in VBA che in StarBasic.

Oltre a questo, il registratore di macro di OpenOffice usa una sintassi
piuttosto prolissa e monotona (ma tutto sommato semplice) perché di
fatto qualsiasi operazione viene effettuata chiamando sempre lo stesso
servizio DispatchHelper.



C'è una guida in italiano che spiega passo passo come programmare
in Starbasic? 


http://docs.sun.com/app/docs/coll/1278.1?l=it&q=StarOffice+8+Collection%2C+Italian

Con un po di ricerca negli archivi di questa lista e della lista 
d...@it.openoffice.org potrai tovare moltissime informazioni interessanti 
su come cominciare al meglio.


Ti segnalo comunque questi thread dove ci sono ulteriori considerazioni 
sul registratore e consigli per iniziare (leggi attentamente anche le 
risposte):


http://www.mail-archive.com/d...@it.openoffice.org/msg01125.html
http://www.mail-archive.com/d...@it.openoffice.org/msg01267.html

Per focalizzare sulle cose cose essenziali, per iniziare al meglio ti serve:

- Manuale SUN StarBasic (vedi sopra)

- Scarica e installa il tool Xray di Bernard Marcelly

- Scarica e installa il SDK (Software Development Kit) di OOo

Non ho i link sottomano ma sono certo che non avrai difficoltà a trovare 
tutto.


Se l'inglese non è un problema ci sono anche molti altri documenti tra i 
quali spicca il famoso "Andrew Pitonyak's Macro Document"




La cosa mi interesserebbe per bagaglio personale ma quando vedo 
tutte queste costruzioni per un'operazione base perdo 
l'amore...cosa che invece nella tua codifica e abbastanza 
intuitiva la cosa almeno all'apparenza.


Come ho detto il codice registrato da OpenOffice sembra complesso ma
alla fine è molto semplice.
Ora non voglio dilungarmi in una trattazione completa, ma basta
osservare meglio il codice per vedere che qualsiasi operazione viene
eseguita con una costruzione simile a questa:

dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$3:$K$3"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

Come vedi le prime righe preparano i parametri del comando sotto forma 
di coppie nome:valore
In questo caso il nome parametro è ToPoint e il valore desiderato è 
"$A$3:$K$3"


L'ultima riga è quella che effettivamente esegue il comando che è quello 
specificato dalla stringa ".uno:GoToCell"


In altre parole: "sposta il cursore alla posizione a3:k3"

Le macro registrate sono una sequenza di costruzioni simili a questa.
Ci possono essere comandi che richiedono una lunga lista di parametri e 
altri che non richiedono nessun parametro, ma il meccanismo è sempre 
identico.


C'è da dire che questo meccanismo basato sull'oggetto dispatcher è stato 
creato appositamente per il registratore di macro e non è assolutamente 
rappresentativo rispetto alle tecniche usate dai programmatori di macro.


Certo ci possono essere casi in cui anche lo sviluppatore di macro 
utilizza il dispatcher ma solitamente si usano oggetti specializzati che 
co

Re: [utenti] conversione Macro Excel in Starbasic

2009-02-03 Per discussione nicola
ciao, mi chiamo Nicola scusate se mi intrometto ma visto che avete iniziato 
un argomento che che mi interessa particolarmente vorrei proporvi un mio 
problema simile a quello di Danilo.
Sto cercando di convertire dei file di excel con delle macro che mi copiano 
dei dati dal foglio1 del file "vendite" e li copiano nel foglio1 del 
file"archivio" allego il codice vba.


' copio i dati di diverse celle nella riga 10
Range("S10") = Range("G9")
Range("T10") = Range("G11")
Range("U10") = Range("G49")
Range("W10") = Range("a13")
Range("x10") = Range("a14")
Range("y10") = Range("a15")
Range("z10") = Range("a16")

' seleziono il range interessato e lo copio
Range("Q10:Aw10").Select
Selection.Copy

' apro il file "archivio"
Workbooks.Open "C:\archivio.xls"

' trovo la prima riga libera
Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select

'incollo i dati copiati e salvo il file "archivio"
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWindow.Close

'seleziono una cella del foglio "vendite"
Range("A13").Select

Grazie a tutti. Nicola 



-
To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org
For additional commands, e-mail: utenti-h...@it.openoffice.org



Re: [utenti] conversione Macro Excel in Starbasic

2009-02-03 Per discussione Paolo Mantovani
Nord Studio snc ha scritto:
[...]
>> inserisci questedue righe più o meno in fondo alla macro di Paolo
>>
>>   ' colorare in salmone la riga 3
>>   oShArchivio.GetCellByPosition(0,2).rows.CellBackColor=16744576
>>
> OK ma se sevo limitare la colorazione alle celle A3:K3 ?

oShArchivio.getCellRangeByName("A3:K3").CellBackColor = RGB(255,128,128)


ciao
Paolo M


-
To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org
For additional commands, e-mail: utenti-h...@it.openoffice.org



Re: [utenti] conversione Macro Excel in Starbasic

2009-02-03 Per discussione Nord Studio snc



Bart Aimar ha scritto:

Nord Studio snc ha scritto:

Mi hai dato una mano incredibile, ti ringrazio Paolo.
Ti chiedo o vi chiedo se altri mi possono aiutare, ancora l'ultimo 
sforzo: se la riga che io sono andato a copiare nel secondo foglio la 
voglio colorare con un fondo salmone che istruzioni devo aggiungere?


inserisci questedue righe più o meno in fondo alla macro di Paolo

  ' colorare in salmone la riga 3
  oShArchivio.GetCellByPosition(0,2).rows.CellBackColor=16744576


OK ma se sevo limitare la colorazione alle celle A3:K3 ?


-
To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org
For additional commands, e-mail: utenti-h...@it.openoffice.org

Re: [utenti] conversione Macro Excel in Starbasic

2009-02-03 Per discussione Italo Vignoli
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Nord Studio snc wrote:
> Non ho parole sei un grande! Azzeccata in pieno la richiesta
> e funziona che è una meraviglia.
Sostengo la candidatura di Paolo Mantovani per i "miti del terzo
millennio".

- --
Italo Vignoli
tel +39.348.5653829
it...@italovignoli.com
skype italovignoli
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkmISlwACgkQQ44yrkJdo0AozwCfVcMv0a1AVnHQwEnh3NBjqbl+
KNQAnj6uEraqP+GVx3oLolRSeIrNAUFP
=DCz8
-END PGP SIGNATURE-


-
To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org
For additional commands, e-mail: utenti-h...@it.openoffice.org



Re: [utenti] conversione Macro Excel in Starbasic

2009-02-03 Per discussione Bart Aimar

uff... mi correggo...

Bart Aimar ha scritto:


tra qui e d...@it.openoffice.org sono passati molti messaggi ...


Bart

-
To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org
For additional commands, e-mail: utenti-h...@it.openoffice.org



Re: [utenti] conversione Macro Excel in Starbasic

2009-02-03 Per discussione Bart Aimar

Nord Studio snc ha scritto:

Mi hai dato una mano incredibile, ti ringrazio Paolo.
Ti chiedo o vi chiedo se altri mi possono aiutare, ancora l'ultimo 
sforzo: se la riga che io sono andato a copiare nel secondo foglio la 
voglio colorare con un fondo salmone che istruzioni devo aggiungere?


inserisci questedue righe più o meno in fondo alla macro di Paolo

  ' colorare in salmone la riga 3
  oShArchivio.GetCellByPosition(0,2).rows.CellBackColor=16744576



Perch� la codifica che mi hai mandato tu, sintatticamente � molto pi� 
ristretta di quella che mi appare se io registro una macro?


Ti faccio un esempio stupido: ho provato a registrare una macro per il 
cambio colore di cui ti accennavo e mi ha restituito tutto questo po po 
di roba:
Perché Il registratore usa il dispatch... che è una cosa complicata che 
non ho mai capito... :-)

 ma ogni tanto è molto utile.

Paolo saprà spiegarti meglio...


C'� una guida in italiano che spiega passo passo come programmare in 
Starbasic? La cosa mi interesserebbe per bagaglio personale ma quando 
vedo tutte queste costruzioni per un'operazione base perdo 
l'amore... cosa che invece nella tua codifica e abbastanza intuitiva 
la cosa almeno all'apparenza.


Di materiale in italiano non c'è molto... e al momento non ho il tempo 
di cercarti i link... (una consegna urgente)

In generale c'è molto materiale.. ma piuttosto sparso...
tra qui e d...@api.openoffice.org sono passati molti messaggi che 
riportavano link e istruzioni.

Prova a fare qualche ricerca in rete...

saluti

Bart

-
To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org
For additional commands, e-mail: utenti-h...@it.openoffice.org



Re: [utenti] conversione Macro Excel in Starbasic

2009-02-03 Per discussione Paolo Mantovani
Francesco Forti ha scritto:
[]
> Scusate, ma come presidente della associazione "Anti-UCAS" :-) dove ucas 
> è il famigerato ufficio complicazione affari semplici, io avrei tenuto un solo
> foglio, avrei impostato una colonna con il valore "produzione" e "archivio" ed
> avrei usato i filtri . Basta cambiare valore alla riga e scegliere il filtro 
> giusto ed
> il gioco è fatto. Poi con la formattazione condizionale posso mettere il 
> colore che voglio alle celle dell'archivio o con una certa data o valore
> economico, in modo dinamico. 

In linea generale sono pienamente d'accordo.
Riguardo all'uso delle macro il mio motto è "se puoi, evita"
Non perché le macro siano un male, solo che come tutte le cose utili,
quando sono usate a sproposito diventano controproducenti.

Nel caso specifico però, non ho un'opinione precisa. Non ho studiato il
problema e può anche darsi che la macro in questo caso rappresenti la
soluzione più efficiente o comunque più comoda.

C'è da dire che spesso le macro diventano indispensabili nel momento in
cui si vuole fare il lavoro di un database con un foglio elettronico.

ciao
Paolo M

-
To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org
For additional commands, e-mail: utenti-h...@it.openoffice.org



Re: [utenti] conversione Macro Excel in Starbasic

2009-02-03 Per discussione Nord Studio snc
Non è proprio così semplice come dici tu nel senso che i due fogli sono 
obbligati in quanto ci sono l'utilizzo di ben 22 colonne di lavorazione 
a cui vanno aggiunte tante righe quanto le commesse in lavorazione.
Comunque valuterò l'utilizzo della formattazione condizionale se rientra 
nel nostro caso (non la conosco e quindi non mi posso esprimere a priori).

Grazie per la  dritta.

Danilo


Francesco Forti ha scritto:

At 10:41 03.02.2009, Nord Studio snc wrote:
  

Mi hai dato una mano incredibile, ti ringrazio Paolo.
Ti chiedo o vi chiedo se altri mi possono aiutare, ancora l'ultimo sforzo: se 
la riga che io sono andato a copiare nel secondo foglio la voglio colorare con 
un fondo salmone che istruzioni devo aggiungere?
Perchè la codifica che mi hai mandato tu, sintatticamente è molto più ristretta 
di quella che mi appare se io registro una macro?
Ti faccio un esempio stupido: ho provato a registrare una macro per il cambio 
colore di cui ti accennavo e mi ha restituito tutto questo po po di roba:



Scusate, ma come presidente della associazione "Anti-UCAS" :-) dove ucas 
è il famigerato ufficio complicazione affari semplici, io avrei tenuto un solo

foglio, avrei impostato una colonna con il valore "produzione" e "archivio" ed
avrei usato i filtri . Basta cambiare valore alla riga e scegliere il filtro 
giusto ed
il gioco è fatto. Poi con la formattazione condizionale posso mettere il 
colore che voglio alle celle dell'archivio o con una certa data o valore
economico, in modo dinamico. 


Ciao,
Francesco 
A-UCAS







  
-
To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org
For additional commands, e-mail: utenti-h...@it.openoffice.org

Re: [utenti] conversione Macro Excel in Starbasic

2009-02-03 Per discussione Bart Aimar



Francesco Forti ha scritto:
Scusate, ma come presidente della associazione "Anti-UCAS" :-) dove ucas 
è il famigerato ufficio complicazione affari semplici, io avrei tenuto un solo

foglio, avrei impostato una colonna con il valore "produzione" e "archivio" ed
avrei usato i filtri . Basta cambiare valore alla riga e scegliere il filtro 
giusto ed
il gioco è fatto. Poi con la formattazione condizionale posso mettere il 
colore che voglio alle celle dell'archivio o con una certa data o valore
economico, in modo dinamico. 


Alla faccia della semplificazione... :-)

Mi viene da pensare che la semplicità sia un mero "punto di vista"...

:-)

Bart

-
To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org
For additional commands, e-mail: utenti-h...@it.openoffice.org



Re: [utenti] conversione Macro Excel in Starbasic

2009-02-03 Per discussione Francesco Forti
At 10:41 03.02.2009, Nord Studio snc wrote:
>Mi hai dato una mano incredibile, ti ringrazio Paolo.
>Ti chiedo o vi chiedo se altri mi possono aiutare, ancora l'ultimo sforzo: se 
>la riga che io sono andato a copiare nel secondo foglio la voglio colorare con 
>un fondo salmone che istruzioni devo aggiungere?
>Perchè la codifica che mi hai mandato tu, sintatticamente è molto più 
>ristretta di quella che mi appare se io registro una macro?
>Ti faccio un esempio stupido: ho provato a registrare una macro per il cambio 
>colore di cui ti accennavo e mi ha restituito tutto questo po po di roba:

Scusate, ma come presidente della associazione "Anti-UCAS" :-) dove ucas 
è il famigerato ufficio complicazione affari semplici, io avrei tenuto un solo
foglio, avrei impostato una colonna con il valore "produzione" e "archivio" ed
avrei usato i filtri . Basta cambiare valore alla riga e scegliere il filtro 
giusto ed
il gioco è fatto. Poi con la formattazione condizionale posso mettere il 
colore che voglio alle celle dell'archivio o con una certa data o valore
economico, in modo dinamico. 

Ciao,
Francesco 
A-UCAS







Re: [utenti] conversione Macro Excel in Starbasic

2009-02-03 Per discussione Nord Studio snc

Mi hai dato una mano incredibile, ti ringrazio Paolo.
Ti chiedo o vi chiedo se altri mi possono aiutare, ancora l'ultimo 
sforzo: se la riga che io sono andato a copiare nel secondo foglio la 
voglio colorare con un fondo salmone che istruzioni devo aggiungere?
Perchè la codifica che mi hai mandato tu, sintatticamente è molto più 
ristretta di quella che mi appare se io registro una macro?
Ti faccio un esempio stupido: ho provato a registrare una macro per il 
cambio colore di cui ti accennavo e mi ha restituito tutto questo po po 
di roba:


sub colore
rem --
rem define variables
dim document   as object
dim dispatcher as object
rem --
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem --
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$3:$K$3"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem --
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "BackgroundColor"
args2(0).Value = 16744576

dispatcher.executeDispatch(document, ".uno:BackgroundColor", "", 0, args2())


end sub

C'è una guida in italiano che spiega passo passo come programmare in 
Starbasic? La cosa mi interesserebbe per bagaglio personale ma quando 
vedo tutte queste costruzioni per un'operazione base perdo 
l'amore... cosa che invece nella tua codifica e abbastanza intuitiva 
la cosa almeno all'apparenza.


Grazie ancora Danilo.




Paolo Mantovani ha scritto:

Ciao Danilo,


Nord Studio snc ha scritto:



Buongiorno, mi chiamo Danilo.
Abbiamo appena migrato il pacchetto Office verso OpenOffice ma ci 
stiamo imbattendo in un muro per quanto riguarda l'utilizzo di una 
macro per il nostro sistema di pianificazione settimanale.


C'è qualcuno che ci può aiutare nell'operazione?
In parole povere utilizziamo due fogli in Calc dove sul primo 
denominato "produzione" ci sono delle righe che descrivono le varie 
commesse con i dati di lavorazione.
Quando l'operatore finisce quel determinato lavoro, clicca sul 
pulsante collegato alla macro che sposta l'intera riga selezionata 
(quindi c'è un problema di cella attiva perchè non sempre i lavori 
vengono ultimati sequenzialmente) e spostati (tagliati) sul secondo 
foglio denominato ""archivio" Eseguiti" nella riga 3 spostando verso 
il basso le righe già presenti e inserendo la data e l'ora 
dell'avvenuta operazione nella cella C3.


Allego se può essere utile la macro originale in VBA.


Premetto che hai fatto benissimo ad allegare il codice, purtroppo però 
in questo caso, il codice VBA è stato ottenuto mediante registratore 
di macro, contiene molte ripetizioni (c'è un copia/incolla effettuato 
sugli stessi dati per ben 3 volte) e parti apparentemente inutili. Non 
è una buona base di partenza perché richiederebbe un po di pulizia 
tenendo sottomano Excel per le varie prove.



Io ho provato a decodificare StarBasic ma se devo essere sincero è 
abbastanza complicato e non di facile interpretazione.


Detto francamente, ho grosse perplessità riguardo quanto affermi, 
comunque, bando alle ciance e veniamo al sodo.


Provo a riepilogare quello che hai detto sperando di avere inteso bene 
tutto quanto:


0) situazione iniziale:
==
hai due tabelle: chiamiamole "produzione" e "archivio"
L'utente è nella tabella "produzione", seleziona una cella che fa 
parte del record da spostare e clicca su un pulsante che aziona la macro.


La macro a questo punto deve fare alcune cose

1) tabella "produzione":
copiare i dati contenuti nella riga individuata dalla cella
attiva

2) tabella "archivio":
inserire una riga vuota nella posizione 3
incollare i valori precedentemente copiati
inserire la data corrente nella cella C3

3) tabella "produzione":

eliminare la riga contenente la cella selezionata


La procedura che ho descritto ha un punto debole, ovvero: che succede 
se l'utente nella tabella "produzione" ha selezionato un range con più 
righe? e in caso di selezione multipla?


Per questo motivo, io prima di procedere con le istruzioni successive 
farei controllino alla selezione.


Ok  ora vediamo come tradurre in codice l'algoritmo descritto.
vedi codice alla fine di questo post

NB:
Il codice sotto riportato può potenzialmente causare perdita di dati o 
altri problemi e risultati imprevedibili.
Sconsiglio vivamente l'utilizzo del codice a meno che non si sappia 
esattamente quello che si sta facendo.

In ogni caso declino qualunque responsabilità.

NB2: il codice è solo una proposta, dovrai adattarlo alle tue necessità.


saluti
Paolo Mantovani


-8<-
REM

Re: [utenti] conversione Macro Excel in Starbasic

2009-02-03 Per discussione Nord Studio snc
Non ho parole sei un grande! Azzeccata in pieno la richiesta e 
funziona che è una meraviglia.

Grazie infinite.
Danilo.




Paolo Mantovani ha scritto:

Ciao Danilo,


Nord Studio snc ha scritto:



Buongiorno, mi chiamo Danilo.
Abbiamo appena migrato il pacchetto Office verso OpenOffice ma ci 
stiamo imbattendo in un muro per quanto riguarda l'utilizzo di una 
macro per il nostro sistema di pianificazione settimanale.


C'è qualcuno che ci può aiutare nell'operazione?
In parole povere utilizziamo due fogli in Calc dove sul primo 
denominato "produzione" ci sono delle righe che descrivono le varie 
commesse con i dati di lavorazione.
Quando l'operatore finisce quel determinato lavoro, clicca sul 
pulsante collegato alla macro che sposta l'intera riga selezionata 
(quindi c'è un problema di cella attiva perchè non sempre i lavori 
vengono ultimati sequenzialmente) e spostati (tagliati) sul secondo 
foglio denominato ""archivio" Eseguiti" nella riga 3 spostando verso 
il basso le righe già presenti e inserendo la data e l'ora 
dell'avvenuta operazione nella cella C3.


Allego se può essere utile la macro originale in VBA.


Premetto che hai fatto benissimo ad allegare il codice, purtroppo però 
in questo caso, il codice VBA è stato ottenuto mediante registratore 
di macro, contiene molte ripetizioni (c'è un copia/incolla effettuato 
sugli stessi dati per ben 3 volte) e parti apparentemente inutili. Non 
è una buona base di partenza perché richiederebbe un po di pulizia 
tenendo sottomano Excel per le varie prove.



Io ho provato a decodificare StarBasic ma se devo essere sincero è 
abbastanza complicato e non di facile interpretazione.


Detto francamente, ho grosse perplessità riguardo quanto affermi, 
comunque, bando alle ciance e veniamo al sodo.


Provo a riepilogare quello che hai detto sperando di avere inteso bene 
tutto quanto:


0) situazione iniziale:
==
hai due tabelle: chiamiamole "produzione" e "archivio"
L'utente è nella tabella "produzione", seleziona una cella che fa 
parte del record da spostare e clicca su un pulsante che aziona la macro.


La macro a questo punto deve fare alcune cose

1) tabella "produzione":
copiare i dati contenuti nella riga individuata dalla cella
attiva

2) tabella "archivio":
inserire una riga vuota nella posizione 3
incollare i valori precedentemente copiati
inserire la data corrente nella cella C3

3) tabella "produzione":

eliminare la riga contenente la cella selezionata


La procedura che ho descritto ha un punto debole, ovvero: che succede 
se l'utente nella tabella "produzione" ha selezionato un range con più 
righe? e in caso di selezione multipla?


Per questo motivo, io prima di procedere con le istruzioni successive 
farei controllino alla selezione.


Ok  ora vediamo come tradurre in codice l'algoritmo descritto.
vedi codice alla fine di questo post

NB:
Il codice sotto riportato può potenzialmente causare perdita di dati o 
altri problemi e risultati imprevedibili.
Sconsiglio vivamente l'utilizzo del codice a meno che non si sappia 
esattamente quello che si sta facendo.

In ogni caso declino qualunque responsabilità.

NB2: il codice è solo una proposta, dovrai adattarlo alle tue necessità.


saluti
Paolo Mantovani


-8<-
REM  *  BASIC  *

Sub Main

  'inizializzamo alcune variabili
  oDoc = ThisComponent
  oSelection = oDoc.getCurrentSelection()
  oActiveSheet = oDoc.CurrentController.ActiveSheet
  oShProduzione = oDoc.Sheets.getByName("produzione")
  oShArchivio = oDoc.Sheets.getByName("archivio")

  'sanity checks:
  If Not (oActiveSheet.Name = "produzione") Then
sMsg = "Per lanciare la procedura occorre spostarsi "
sMsg =  sMsg & "sulla tabella ""produzione"""
MsgBox sMsg, 64
Exit Sub
  End If

  If Not oSelection.supportsService("com.sun.star.sheet.SheetCell") Then
sMsg = "Ce l'hai quasi fatta ma "
sMsg =  sMsg & "è necessario selezionare una sola cella"
MsgBox sMsg, 64
Exit Sub
  End If

  'ok se siamo arrivati fino a qui la selezione è a posto!

  'individuo la riga contenente la cella attiva:
  iRowIndex = oSelection.CellAddress.Row

  'ottengo il range da spostare (l'intera riga)
  oSrcRow = oShProduzione.Rows.getByIndex(iRowIndex)

  'tabella "archivio":
  'inserisco una riga vuota nella posizione 3 (ovvero indice 2)
  oShArchivio.Rows.insertByIndex(2, 1)

  'incollare i valori contenuti nella riga selezionata
  'della tabella archivio
  aDest = oShArchivio.getCellRangeByName("A3").CellAddress()
  aSrc = oSrcRow.RangeAddress()
  oShArchivio.copyRange(aDest, aSrc)

  'inserire la data corrente nella cella C3
  oShArchivio.getCellRangeByName("C3").FormulaLocal = Now()

  'tabella "produzione":
  'eliminare la riga contenente la cella selezionata
  oShProduzione.Rows.removeByIndex(iRowIndex, 1)

End Sub

-
To unsubscribe, e-mail: utenti-unsubsc

Re: [utenti] conversione Macro Excel in Starbasic

2009-02-02 Per discussione Paolo Mantovani

Ciao Danilo,


Nord Studio snc ha scritto:



Buongiorno, mi chiamo Danilo.
Abbiamo appena migrato il pacchetto Office verso OpenOffice ma ci stiamo 
imbattendo in un muro per quanto riguarda l'utilizzo di una macro per il 
nostro sistema di pianificazione settimanale.


C'è qualcuno che ci può aiutare nell'operazione?
In parole povere utilizziamo due fogli in Calc dove sul primo denominato 
"produzione" ci sono delle righe che descrivono le varie commesse con i 
dati di lavorazione.
Quando l'operatore finisce quel determinato lavoro, clicca sul pulsante 
collegato alla macro che sposta l'intera riga selezionata (quindi c'è un 
problema di cella attiva perchè non sempre i lavori vengono ultimati 
sequenzialmente) e spostati (tagliati) sul secondo foglio denominato 
""archivio" Eseguiti" nella riga 3 spostando verso il basso le righe già 
presenti e inserendo la data e l'ora dell'avvenuta operazione nella 
cella C3.


Allego se può essere utile la macro originale in VBA.


Premetto che hai fatto benissimo ad allegare il codice, purtroppo però 
in questo caso, il codice VBA è stato ottenuto mediante registratore di 
macro, contiene molte ripetizioni (c'è un copia/incolla effettuato sugli 
stessi dati per ben 3 volte) e parti apparentemente inutili. Non è una 
buona base di partenza perché richiederebbe un po di pulizia tenendo 
sottomano Excel per le varie prove.



Io ho provato a decodificare StarBasic ma se devo essere sincero è 
abbastanza complicato e non di facile interpretazione.


Detto francamente, ho grosse perplessità riguardo quanto affermi, 
comunque, bando alle ciance e veniamo al sodo.


Provo a riepilogare quello che hai detto sperando di avere inteso bene 
tutto quanto:


0) situazione iniziale:
==
hai due tabelle: chiamiamole "produzione" e "archivio"
L'utente è nella tabella "produzione", seleziona una cella che fa parte 
del record da spostare e clicca su un pulsante che aziona la macro.


La macro a questo punto deve fare alcune cose

1) tabella "produzione":
copiare i dati contenuti nella riga individuata dalla cella
attiva

2) tabella "archivio":
inserire una riga vuota nella posizione 3
incollare i valori precedentemente copiati
inserire la data corrente nella cella C3

3) tabella "produzione":
eliminare la riga contenente la cella selezionata


La procedura che ho descritto ha un punto debole, ovvero: che succede se 
l'utente nella tabella "produzione" ha selezionato un range con più 
righe? e in caso di selezione multipla?


Per questo motivo, io prima di procedere con le istruzioni successive 
farei controllino alla selezione.


Ok  ora vediamo come tradurre in codice l'algoritmo descritto.
vedi codice alla fine di questo post

NB:
Il codice sotto riportato può potenzialmente causare perdita di dati o 
altri problemi e risultati imprevedibili.
Sconsiglio vivamente l'utilizzo del codice a meno che non si sappia 
esattamente quello che si sta facendo.

In ogni caso declino qualunque responsabilità.

NB2: il codice è solo una proposta, dovrai adattarlo alle tue necessità.


saluti
Paolo Mantovani


-8<-
REM  *  BASIC  *

Sub Main

  'inizializzamo alcune variabili
  oDoc = ThisComponent
  oSelection = oDoc.getCurrentSelection()
  oActiveSheet = oDoc.CurrentController.ActiveSheet
  oShProduzione = oDoc.Sheets.getByName("produzione")
  oShArchivio = oDoc.Sheets.getByName("archivio")

  'sanity checks:
  If Not (oActiveSheet.Name = "produzione") Then
sMsg = "Per lanciare la procedura occorre spostarsi "
sMsg =  sMsg & "sulla tabella ""produzione"""
MsgBox sMsg, 64
Exit Sub
  End If

  If Not oSelection.supportsService("com.sun.star.sheet.SheetCell") Then
sMsg = "Ce l'hai quasi fatta ma "
sMsg =  sMsg & "è necessario selezionare una sola cella"
MsgBox sMsg, 64
Exit Sub
  End If

  'ok se siamo arrivati fino a qui la selezione è a posto!

  'individuo la riga contenente la cella attiva:
  iRowIndex = oSelection.CellAddress.Row

  'ottengo il range da spostare (l'intera riga)
  oSrcRow = oShProduzione.Rows.getByIndex(iRowIndex)

  'tabella "archivio":
  'inserisco una riga vuota nella posizione 3 (ovvero indice 2)
  oShArchivio.Rows.insertByIndex(2, 1)

  'incollare i valori contenuti nella riga selezionata
  'della tabella archivio
  aDest = oShArchivio.getCellRangeByName("A3").CellAddress()
  aSrc = oSrcRow.RangeAddress()
  oShArchivio.copyRange(aDest, aSrc)

  'inserire la data corrente nella cella C3
  oShArchivio.getCellRangeByName("C3").FormulaLocal = Now()

  'tabella "produzione":
  'eliminare la riga contenente la cella selezionata
  oShProduzione.Rows.removeByIndex(iRowIndex, 1)

End Sub

-
To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org
For additional commands, e-mail: utenti-h...@it.openoffice.org



[utenti] conversione Macro Excel in Starbasic

2009-01-30 Per discussione Nord Studio snc



Buongiorno, mi chiamo Danilo.
Abbiamo appena migrato il pacchetto Office verso OpenOffice ma ci stiamo 
imbattendo in un muro per quanto riguarda l'utilizzo di una macro per il 
nostro sistema di pianificazione settimanale.


C'è qualcuno che ci può aiutare nell'operazione?
In parole povere utilizziamo due fogli in Calc dove sul primo denominato 
"produzione" ci sono delle righe che descrivono le varie commesse con i 
dati di lavorazione.
Quando l'operatore finisce quel determinato lavoro, clicca sul pulsante 
collegato alla macro che sposta l'intera riga selezionata (quindi c'è un 
problema di cella attiva perchè non sempre i lavori vengono ultimati 
sequenzialmente) e spostati (tagliati) sul secondo foglio denominato 
"Archivio Eseguiti" nella riga 3 spostando verso il basso le righe già 
presenti e inserendo la data e l'ora dell'avvenuta operazione nella 
cella C3.


Allego se può essere utile la macro originale in VBA.

Io ho provato a decodificare StarBasic ma se devo essere sincero è 
abbastanza complicato e non di facile interpretazione.


Vi chiedo aiuto, grazie.



Sub ESEGUITI()
  
  

   cella_base = ActiveCell.Address

   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select
   ActiveCell.End(xlToRight).Select

   Range(cella_base, ActiveCell).Select
'Con Selezione.Interno
'   .IndiceColore = 22
 '  .Motivo = xlContinuo
  ' Fine Con
   Sheets("Produzione").Select
   Selection.Copy
   Sheets("Archivio Eseguiti").Select
   Range("a3").Select
   Selection.Insert Shift:=xlDown
   
   Range("a3").Select

   ActiveSheet.Paste
   
Sheets("Archivio Eseguiti").Select

   Range("C3").Select
   ActiveCell.FormulaR1C1 = Now
  
Application.CutCopyMode = False

   Selection.Copy
   Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
   SkipBlanks:=False, Transpose:=False
  
   Range("a3").Select
   
   Sheets("Produzione").Select

   Application.CutCopyMode = False
   Selection.Delete Shift:=xlUp
   Sheets("Archivio Eseguiti").Select
   
   
   Range("a3").Select

   Selection.Copy
   Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
   SkipBlanks:=False, Transpose:=False
   Sheets("Produzione").Select
   Range("A1").Select
 Windows("000aaa.XLS").Activate
   ActiveWorkbook.Close
   End Sub

-
To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org
For additional commands, e-mail: utenti-h...@it.openoffice.org