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]

Rispondere a