Il 29/11/2010 07:33, Bart Aimar ha scritto:
[...]
Ma come lo fa rimane per me un mistero, che neppure xray sembra capace
di indagare...
In realtà il codice esamina solo il caso in cui la printarea sia
costituita da un solo range.
In tutti gli altri casi viene stampato tutto
il metodo getPrintAreas() restituisce un array, ovvero una matrice o un
vettore, insomma si tratta di un insieme di valori accessibili per mezzo
di un indice.
mAreas() = oSheet.getPrintAreas()
aRangeAddress = mAreas(0)
Come per tutti gli array in Basic puoi eseguire un ciclo anche senza
usare direttamente gli indici (ciclo For Each...)
mAreas() = oSheet.getPrintAreas()
For Each aRangeAddress in mAreas()
xray aRangeAddress
Next
Certo che un paio di righe capaci di riconoscere l'esistenza di una
printAreas
costituita da selezioni multiple potrebbe evitare al povero ed
inaffidabile utente qualche frustrazione.
Intercettare la printarea "multipla" non è difficile, ma occorre
decidere cosa fare poi...
In realtà io penso che la soluzione al problema non sia quella nel
codice di esempio che ti ho postato.
Alla luce di quanto osservato fino ad ora riguardo ai limiti
dell'esportazione "selezione", penso che la procedura seguente sia più
indicata per ottenere l'esportazione del foglio corrente:
REM ***** BASIC *****
sub test
Dim mSheetAreas()
oDoc = ThisComponent
oSheets = oDoc.Sheets()
oActiveSheet = oDoc.CurrentController.ActiveSheet()
For Each oSh In oSheets
If oSh.Name <> oActiveSheet.Name Then
AppendItem(mSheetAreas(), Array(oSh.Name, oSh.PrintAreas()))
oSh.PrintAreas() = Array()
End If
Next
'parametri di esportazione
Dim mStoreOpts(1) As New com.sun.star.beans.PropertyValue
mStoreOpts(0).Name = "Overwrite"
mStoreOpts(0).Value = True
mStoreOpts(1).Name = "FilterName"
mStoreOpts(1).Value = "calc_pdf_Export"
sUrl = "file:///home/paolo/Scrivania/test.pdf"
oDoc.storeToURL(sURL, mStoreOpts())
For Each mShArea In mSheetAreas()
oSh = oSheets.getByName(mShArea(0))
oSh.PrintAreas() = mShArea(1)
Next
End Sub
'______________________________________________________________________________
Sub AppendItem(mList(), vItem)
Dim iMax As Long
iMax = UBound(mList())
iMax = iMax + 1
Redim Preserve mList(iMax)
mList(iMax) = vItem
End Sub
----------------------------------
ciao
Paolo
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]