Il 26/11/2010 01:46, Paolo Mantovani ha scritto:
Ciao Bart,
Ciao Paolo
...zoootttt...
Ho ripetuto l'operazione usando il
DispatchToApiRecorder-20060707.uno.pkg
di Paolo Mantovani (e che spero legga ancora questa lista),
presente.
Ottimo! :-)
...zott....
In rete ho trovato anche questa soluzione:
http://user.services.openoffice.org/en/forum/viewtopic.php?f=20&t=25535
basata anche questa sulla modifica delle printareas.
Va detto che l'esportazione basata su printareas è l'esatto contrario
dell'esportazione di un range selezionato, quindi mi pare un sistema
un po contraddittorio.
Giusto! Non l'avevo valutata da questa angolazione.
Il mio sguardo (peraltro non ben esplicitato nel mio messaggio) partiva
dal "lato utente".
Ovvero l'inaffidabile utente si ritrova ad impostare per ciascun foglio
del suo Doc una serie di parametri, comprese le aree di stampa che
vengono "registrate" come printareas.
Questo è ciò che vede e che verifica con la preview.
Ma, quando va in "stampa" (nel mio caso specifico almeno) è nella
necessità di stampare una sola sheet per volta.
Se fa a manina e:
1) non ha selezionato un range
2) si ricorda di mettere la spunta su "Selezione"
la sheet viene stampata correttamente (e solo quella)
Ma l'esperienza mi insegna che si inciampa spesso uno di quei due errori.
(come utente sono mediamente inaffidabile)
Da qui l'idea di avere una macro che bypassi la possibilità di sbagliare
esportando in pdf solo l'area di stampa della sheet attiva.
In ogni modo, ...zooottttt...
Qualche buona idea ?
Ovviamente, :-) ma prima non potevo esimermi dal triturarti i maroni
con una pedante und prolissa und irritante spiegazione tecnica.
che malgrado il mio taglio del quoting ho letto con attenzione ed
interesse (il dispatch.. questo sconosciuto...)
La prima idea è guardare la docu ufficiale:
http://wiki.services.openoffice.org/wiki/API/Tutorials/PDF_export
ok! RTFM... :-) ma ne converrai che è roba piuttosto difficile da digerire!
Applicando la documentazione si ottiene il seguente codice:
sub test
'prepara il range da esportare:
oRng = ThisComponent.Sheets.Foglio1.getCellRangeByName("A15:B17")
Ottimo, certamente funziona!... potremmo quindi aggiungere un
[Solved]... invece modifico il titolo della discussione.
Infatti, non a caso, mi sono fermato su quella riga del tuo codice.
Perché Il presupposto per fare bingo è quello di avere un range preciso.
Ma come accennavo sopra il "range preciso" vorrebbe essere quello
impostato nella printareas di quella sheet e ci si trova quindi nella
necessità di andare a leggerlo.
E qui casca l'asino perché non riesco a recuperare la printareas di una
sheet.
Print_area = ThisComponent.currentController.activeSheet.getPrintAreas
dovrebbe "contenere" un array con il range cercato... ma non riesco ad
"aprirlo"...
(Ovvio, oltre a non comprendere a fondo lo sforzo di taglio ho qualche
problema con gli array)
L'idea sarebbe quella di appunto di leggere la printareas della sheet
attiva, e poi di riproporla come range da stampare!
Ma:
xray Print_area
mi restituisce: 0 | Structure : com.sun.star.table.CellRangeAddress
ovvero un index min = 0 , index max = 0
temo ci sia qualcosa che non va...
Nelle mie prove il codice ha funzionato senza intoppi.
Con questa impostazione, oltre a ridurre la gran massa del codice si
evita di pastrocchiare con le printareas
Anche nelle mie ha funzionato alla grande... ed è giusto evitare di
pastrocchiare le printareas, ma si riesce almeno a leggerle?
Ciao e Grazie per la pazienza
Bart
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]