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]