Bernardini Lido ha scritto:
C' è da fare una piccola correzione nella linea sottostante
sUrl= sCartella+ "/" + "Fattura_" +oNumero + "-" + oAnno + ".pdf"
Così:
sUrl= sCartella+ "Fattura_" +oNumero + "-" + oAnno + ".pdf"
Altrimenti si ritrova due "/" prima del nome della fattura
perchè la function Folder() ritorna una stringa già con la barra (/) finale
Non ho risposto subito perchè la tua affermazione sembrava a volte
giusta e a volte nò!! (??? primo mistero...)
Oggi come oggi, provato e riprovato su oo2.0 (linux e win), oo2.01 (solo
win), il codice corretto mi risulta questo:
sUrl= sCartella+ "/" + "Fattura_" +oNumero + "-" + oAnno + ".pdf"
Lido potresti controllare?
Il secondo mistero è che ad un certo punto la macro smette di
funzionare.. senza apparenti ragioni...
Si ferma immancabilmente su:
thisComponent.storetoUrl(sUrl,myProps())
adducendo un BASIC runtime error.
An exception occured
Type: com.sun.star.task.ErrorCodeException
Messagge:.
Ho provato a riprodurre l'errore... ma non ci sono riuscito.
A questo punto, prima di inserire la macro sul wiki, mi piacerebbe
venisse testata in modo eteso...
Questa è l'ultima versione...
Mi fate sapere?
grazie
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 as object
Dim i%
Dim sURL as string
print "Si! questa sono certo Funzionava! ... Vediamo adesso!"
oSheets = ThisComponent.Sheets
Del_print_Areas ' richiama una Sub che elimina tutte
' le aree di stampa esistenti
Dim myProps(1) as New com.sun.star.beans.PropertyValue
'il valore di questo array va impostato a 1
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 aggiungiamo un po' di roba
oAnno = "2006"
oRange = oSheet.getCellRangeByName("A1:E33").getRangeAddress()
ThisComponent.CurrentController.getActiveSheet().setPrintAreas(Array(oRange))
'queste 2 linee precedenti servono a selezionare un'area del foglio
attivo
'in questo caso A1 E33
sCartella = Folder$()
print "cartella " + 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"
' sUrl= sCartella+ "Fattura_" +oNumero + "-" + oAnno + ".pdf" 'così a
' me non funziona...
' oppure come si preferisce...
Print sUrl 'adesso hai anche la path
myProps(1).Name = "Selection"
myProps(1).Value = true
'queste due linee per salvare solo la parte selezionata
myProps(0).Name="FilterName"
myProps(0).Value = "writer_pdf_Export"
thisComponent.storetoUrl(sUrl,myProps())
' Il range è stato adesso esportato in pdf
' ma se proprio non vogliamo lasciare tracce
' ricancelliamo l'area di stampa richiamando la
' solita sub
Del_print_Areas
End Sub
Sub Del_print_Areas 'questa sub cancella tutte le aree
' di stampa esistenti sulla Worksheet
' Scopiazzata con ampia licenza poetica da
' "Useful Macro Information For OpenOffice" di Andrew Pitonyak
' Author of original macro: Cor Nouws <[EMAIL PROTECTED]>
' on idea of David French
Dim oDoc as object
Dim oSheet as object
Dim oSheets
Dim i%
oDoc = Thiscomponent
oSheets = ThisComponent.Sheets
For i = 0 to oSheets.getCount() - 1
oSheet = ThisComponent.Sheets.getByIndex(i)
oSheet.setPrintareas(array())
Next
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
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]