Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

calc: menu a tendina e stampa moduli

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

calc: menu a tendina e stampa moduli

Postdi lucagb » 21/02/10 21:21

devo stampare 150 moduli prelevando i dati da un elenco

ho cercatouna macro specifica di compilazione ma sn tutte complicate, per il mio livello di pazienza e di comprensione

il problema è semplice: ho un elenco di 150 nominativi con alcuni dati per ogni riga circa una 30na
ho creato in un altro foglio un modulo, di cui poi dovrò stampare una copia per ogni nominativo compilata con i dati dell'elenco; ho concatenato le celle del modulo con le celle della riga corrispondente

in cima al modulo c'è il nominativo a cui è intestato il modulo

ho creato un menù a tendina dei nominativi ma non sò come riportare in automatico i dati corrispondenti concatenando le parti del modulo al solo cambiamento del nominativo di intestazione:

tipo di elenco:

luca 4 si 6 h 8 0
mario 5 no 5 b 5 0
laura 3 si 5 b 4 0


sono stato poco chiaro lo so se qualcuno può darmi qualche dritta
grazie
luca

il mio OO è 3.1.1
lucagb
Utente Junior
 
Post: 10
Iscritto il: 29/04/06 07:55

Sponsor
 

Re: calc: menu a tendina e stampa moduli

Postdi Flash30005 » 21/02/10 21:57

Con Ms Office basterebbe fare un "modulo" con Word e una stampa unione che riporti tutti i campi interessati.

OO non so se lo permette, ma credo che sia simile per queste cose.

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: calc: menu a tendina e stampa moduli

Postdi Anthony47 » 21/02/10 23:24

Volendo rimanere sul foglio di calcolo, una volta che hai inserito il nominativo puoi usare la funzione equivalente a Cerca.Vert, che ti consente di trovare sulla tabella d' origine un valore cercato, e poi estrarre una cella adiacente; la sintassi di Cerca.Vert in excel e'
Codice: Seleziona tutto
=Cerca.Vert(IlValore;IndirizoDiTabella;NumColonnaDaEstrarre;0)

In inglese e' VLOOKUP.
In excel e' una funzione chiave, immagino che ci sia una uguale o equivalente in Calc.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: calc: menu a tendina e stampa moduli

Postdi lucagb » 23/02/10 19:07

ok cerca vert funziona, immetto un numero e appare il nome corrispondente

quindi un problema è risolto grazie, per una cella, per fare apparire anche i dati delle celle di tutta la riga con quel numero?

1) luca 3 4 si 5
2) mario 2 3 si 3

ora riesco a fare: immetto "1" appare "luca"

quindi funziona
lucagb
Utente Junior
 
Post: 10
Iscritto il: 29/04/06 07:55

Re: calc: menu a tendina e stampa moduli

Postdi lucagb » 23/02/10 19:08

cmq scusa non ho ancora ringraziato grazie
lucagb
Utente Junior
 
Post: 10
Iscritto il: 29/04/06 07:55

Re: calc: menu a tendina e stampa moduli

Postdi lucagb » 23/02/10 21:59

fatto
grazie sono riuscito nell'intento
...non ho proprio creato una macro ma almeno mi basta inserire il numero d'ordine del nominativo per trovarmi il modulo compilato con i dati corrispondenti

grazie
luca
lucagb
Utente Junior
 
Post: 10
Iscritto il: 29/04/06 07:55

Re: calc: menu a tendina e stampa moduli

Postdi lucagb » 24/02/10 07:41

=CERCA.VERT(K9;$'foglio1'.A12:AO120;41)

comando (cella del modulo in cui digito di volta in volta l'indice;foglio di riferimento.matrice;num.colonna)

1 luca 3 4 6 5
2 alfredo 3 7 4 1
3
4
5 maria 2 6 3 1

- ho numerato le righe con una colonna da non stampare
- foglio di riferimento è il foglio da cui pesco i dati
- matrice è la parte del foglio di riferimento che utilizzo, per indicarla è necessario selezionare dalla cella in alto a sinistra a quella in basso a destra, includendo anche la colonna di numeri (indici) da non stampare
- numero colonna è quello che distingue il dato che voglio nella cella del modulo che devo vedere compilata a seconda dell'indice che digito

es: metto questa formula nella cella dell'intestazione del modulo (diversa dalla cella k9 dove digito)
digito 1 nella cella k9.....nell'intestazione mi appare il nome luca
se digito 2 in k9....nell'intestazione mi appare alfredo ecc.

usando la stessa formula in tutte le parti, celle, del modulo da compilare riesco a riportare i dati del foglio 1 nel modulo
e a poter stampare volta per volta un modulo precompilato per ogni nominativo

grazie antony 47
solo dopo essermelo un po' studiato ho capito che me lo avevi quasi già spiegato
lucagb
Utente Junior
 
Post: 10
Iscritto il: 29/04/06 07:55

Re: calc: menu a tendina e stampa moduli

Postdi Anthony47 » 24/02/10 15:53

Non avendo Calc non potevo dire di piu' sulla struttura delle formule da impostare; la cosa buona e che adesso che l' hai capita da solo non te la scordi piu', vero?

Ciao


ps:
in excel, verca.vert usa anche un "indice" che definisce se la funzione deve cercare una corrispondenza esatta o anche solo approssimata; questa seconda impostazione pero' produce talvolta esiti imprevisti, quindi va (quasi) sempre evitata.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: calc: menu a tendina e stampa moduli

Postdi Nicolantonio » 06/03/10 16:53

Bravo !
ora non ti resta che automatizzare la stampa ripetitiva dei moduli con una macro.
Fai come me :
H1 contiene il primo Identificativo da stampare (es. 1 luca)
H2 contiene l'ultimo Identificativo da stampare (es. 5 maria)
J1 contiene la formula =H2+1-H1 che determina la quantità di moduli ancora da stampare ( nell'esempio 5)
J2 contiene la formula =H1+1 che determina l'Identificativo del modulo (successivo) da riempire e stampare

Accendi il Registratore di macro (Strumenti --> Registra Macro)

Comanda la stampa del modulo corrente
Clicca su J2
Copia
Clicca su H1
Incolla Speciale Numeri

Spegni il Registratore di Macro
Assegna un nome alla macro (es. Stampamoduli) e inserisci dentro la cartella Personali Standard Module1

Studia quì il Basic OpenOffice http://wiki.services.openoffice.org/wiki/IT/Documentation/BASIC_Guide/Structure_of_Spreadsheets

Sempre con Strumenti Macro Gestione esamina la macro e modificala aggiungendo nei punti opportuni un Loop condizionato testando se il valore di J1 è maggiore di 0
Sul codice che segue

REM ***** BASIC *****

sub Stampamoduli
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object

dim doc as object
dim foglio as object
dim cella as object

rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

doc = ThisComponent
foglio = doc.Sheets.getByName("Fatture")
dim args1(1) as new com.sun.star.beans.PropertyValue
dim args2(0) as new com.sun.star.beans.PropertyValue
dim args4(0) as new com.sun.star.beans.PropertyValue
dim args5(5) as new com.sun.star.beans.PropertyValue

do
rem ----------------------------------------------------------------------
args1(0).Name = "Copies"
args1(0).Value = 1
args1(1).Name = "Collate"
args1(1).Value = true

dispatcher.executeDispatch(document, ".uno:Print", "", 0, args1())
for i = 1 to 10000000
next

rem ----------------------------------------------------------------------
args2(0).Name = "ToPoint"
args2(0).Value = "$J$2"

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

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
args4(0).Name = "ToPoint"
args4(0).Value = "$H$1"

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

rem ----------------------------------------------------------------------
args5(0).Name = "Flags"
args5(0).Value = "V"
args5(1).Name = "FormulaCommand"
args5(1).Value = 0
args5(2).Name = "SkipEmptyCells"
args5(2).Value = false
args5(3).Name = "Transpose"
args5(3).Value = false
args5(4).Name = "AsLink"
args5(4).Value = false
args5(5).Name = "MoveMode"
args5(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args5())

cella = foglio.getCellRangeByName("J1")
Loop While cella.Value > 0

end sub

Ho :
- aggiunto le istruzioni che fanno riferimento alle variabili doc foglio e cella
- spostato le Dim prima del loop
- inserito il loop
do ... Loop While
- inserito un ciclo for i = 1 to 10000000 next per permettere al gestore delle code di stampa di portar via i dati del modulo corrente (da migliorare)

Ho riportato il codice integralmente perchè forse potrebbe servire anche ad altri (forse si potrebbe fare anche meglio)
Saluti
Nicolantonio
Newbie
 
Post: 7
Iscritto il: 04/03/10 22:43


Torna a Applicazioni Office Windows


Topic correlati a "calc: menu a tendina e stampa moduli":


Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti