Alle 10:48, martedì 17 gennaio 2006, Mirko Santarelli ha scritto:

>
> Diciamo che a me la funzione folder non serve in quanto ho messo un
> percorso assoluto e voglio che venga salvata sempre li comunque con
> questo codice a me va.
>
Indipendentemente dal voler usare la funzione Folder() o inserire il 
percorso direttamente nel codice
la tua macro funziona correttamente, ma potrebbe anche non funzionare
come quella di Bart, mi spiego:

Ho fatto varie prove e credo di essere riuscito a ricreare l' errore.
Dico subito che il problema è nella c di "calc_pdf_Export" che deve 
essere minuscola(e nel tuo codice lo è)

1 Aprite OOo scrivete Calc(con la C maiuscola) e date il run alla macro
dovrebbe dare il solito errore correggete la c da maiuscola a minuscola
non dovrebbe dare più l' errore
a questo punto se si rimette la C maiuscola stranamente continua a funzionare
questo bisognerebbe chiederlo a chi ha programmato l' interprete di StarBasic

2 Ora, prima di chiudere OOo, rimettete la c minuscola e salvate la macro
chiudete e riaprite calc date il run alla macro e tutto funziona 

richiudete e riaprite e ricominciate dal punto 1 e sarà sempre la solita 
storia
ricordarsi fra un cambio e un' altro di salvare -> chiudere -> riaprire 

Nota: tutto questo non succede con OOo1.1.3 che riesce a digerire 
anche le C maiuscole

>      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"
'  questa sopra è la linea incriminata 
>    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

A questo punto, se tutto funziona anche a voi come a me
il codice dovrebbe essere così: 

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()
'Questa variabile chiama la funzione Folder()
'la quale apre una finestra nella quale puoi
'scegliere la cartella dove vuoi salvare.
        If sCartella = "/" Then Exit Sub' nel caso un utente dovesse premere 
Cancella 
'nella finestra di dialogo, il che darebbe un errore
 '      print sCartella
'La riga "sUrl= "file:/// ...." può essere modificata
'così
      sUrl= sCartella+ "Fattura_" +oNumero + "-" + oAnno + ".pdf" 'così a
        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 = "calc_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
        Dim sCartella   As String
        Dim Barra       As String
        oCartella = CreateUnoService("com.sun.star.ui.dialogs.FolderPicker")
        iAccetta = oCartella.Execute()
        If iAccetta = 1 Then sCartella = oCartella.GetDirectory()
        Barra = Right(sCartella, 1) 'Viene passata alla variabile Barra 
        ' l' ultimo carattere di sCartella
        If Barra <> "/" Then sCartella = sCartella + "/"
        ' Viene controllato se c' è questa benedetta barra
        ' se non c' è viene aggiunta  
        Folder() = sCartella     
End Function

Ciao Lido

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Rispondere a