Direi che funziona perfettamente!
Oso troppo se chiedo come fare per salvare l'area selezionata come file
di calc invece che esportarla in pdf?
Mirko
Bart Aimar ha scritto:
Ci ho messo una pezza... anche se mi sembra strano che sia necessario
distruggere tutte le aree di stampa esistenti sul docucumento...
Questo è il codice aggiornato... probabilmente è da ripulire... ma
sono stanco e così già funziona...
Adesso possiamo avere diverse sheet nella medesima workbook, ciascuna
con un diverso range pre-definito da "stampare" in pdf...
'notte
bart
REM INIZIO CODICE
Sub esporta_fattura_in_pdf_
' si rende necessario cancellare prima tutte le aree
' di stampa esistenti sula Worksheet
' Quindi, dopo aver passato questa macro, l'unica area di stampa
' sarà solo quella definita nel nostro range qui sotto...
Dim selArea(0) as new com.sun.star.table.CellRangeAddress
Dim sCartella As String
Dim oName as string
Dim oMycell as object
Dim oDoc as object
Dim oCell as object
Dim oNumero as string
Dim oSheet as object
Dim oSheets
Dim i%
oDoc = Thiscomponent
oSheets = ThisComponent.Sheets ' enumeta le sheets
For i = 0 to oSheets.getCount() - 1
oSheet = ThisComponent.Sheets.getByIndex(i)
oSheet.setPrintareas(array()) ' e su caduna cancella
Next ' le aree di stampa
oNomeSheet = odoc.currentcontroller.activesheet.name
selArea(0).StartColumn = nStC
selArea(0).StartRow = nStR
selArea(0).EndColumn = nEndC
selArea(0).EndRow = nEndR
oSheet=ThisComponent.Sheets.getByName(oNomeSheet)
oSheet.setPrintareas(selArea())
Dim myProps(1) as New com.sun.star.beans.PropertyValue
'il valore di questo array va impostato a 1
' non capisco ma mi adeguo
oSheet = ThisComponent.CurrentController.ActiveSheet
oMycell = oSheet.getCellRangeByName("$j$5")
oNumero = oMycell.string
' print oNumero 'adesso hai una parte del nome
' potrebbe essere il numero della fattura
' allo stesso modo puoi prelevare il nome del cliente
' adesso aggiungamo un po' di roba
oAnno = "2006"
oRange = oSheet.getCellRangeByName("A1:H51").getRangeAddress()
ThisComponent.CurrentController.getActiveSheet().setPrintAreas(Array(oRange))
'queste 2 linee precedenti servono aselezionare un' area del
foglio attivo
'in questo caso A1 H51
sCartella = Folder()
print sCartella
'Questa variabile chiama la funzione Folder()
'la quale apre una finestra nella quale puoi
'scegliere la cartella dove vuoi salvare.
'La riga "sUrl= "file:/// ...." può essere modificata
'così
sUrl= sCartella+ "/" + "Fattura_" +oNumero + "-" + oAnno + ".pdf"
' oppure come si preferisce...
Print sUrl 'adesso hai anche la path corrente come prima
proposta
myProps(1).Name = "Selection"
myProps(1).Value = true
'queste due linee per salvare solo la parte selezionata
myProps(0).Name="FilterName"
myProps(0).Value = "Calc_pdf_Export"
thisComponent.storetoUrl(sUrl,myProps())
End Sub
Function Folder()
Dim oCartella as Object
Dim iAccetta as Integer
oCartella = CreateUnoService("com.sun.star.ui.dialogs.FolderPicker")
iAccetta = oCartella.Execute()
If iAccetta = 1 Then Folder() = oCartella.GetDirectory()
End Function
REM INIZIO CODICE
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]