Alle 20:38, venerdì 27 gennaio 2006, Marco Caresia ha scritto:
> Paolo Mantovani wrote:
> > Function DocumentInfo(Info As String) As Variant
> > vTmp = ThisComponent.DocumentInfo.getPropertyValue(Info) [...]
> > End Function
>
> Ciao Paolo,
> per prima cosa ti ringrazio dei commenti benevoli che sto pensando di
> mettere in calce al mio curriculum vitae ;)
LOL :-)
>
> Ho provato la tua funzione ma mi da un errore se chiudo e riapro il file
> dopo averla inserita in una cella.
> Correggimi se sbaglio, ma credo che il problema sia in "ThisComponent"
> durante l'esecuzione delle funzioni all'apertura del file.
la tua analisi è corretta e se io avessi fatto qualche prova come hai fatto
tu, mi sarebbe tornato in mente che usare ThisComponent nelle formule crea
*sempre* problemi :-(
Il fatto è che il primo evento "calculate" avviene *prima* che la variabile
ThisComponent sia effettivamente collegata al documento corrente.
Questa sequenza non è sempre stata così, in alcune versioni thiscomponent
veniva assegnata prima del ricalcolo, in altre dopo. (nelle ultime in
particolare)
In ogni caso è necessario evitare ThisComponent (e anche
StarDesktop.getCurrentComponent) nelle formule
> Pensavo di
> risolvere inserendo la riga "On Error Resume Next" ma la prima volta mi
> manda in crash Calc e la successiva mi cancella i valori.
> Forse ho modificato qualche opzione?
No, purtroppo il problema non si può risolvere con la gestione degli errori.
> Tra l'altro mi sembra di ricordare che è stato uno dei motivi per cui
> sono passato dall'usare getURL() a richiedere l'URL del file
> direttamente come argomento della funzione.
Dovevo immaginare che dietro quel parametro URL ci fosse un difficile
conflitto interiore!!!
Rinnovo pertanto l'apprezzamento per la tua precedente soluzione. :-)
Alla luce di quanto detto finora, non mi rimane altro che modificare anche la
mia formula in modo da usare l'inevitabile parametro URL ...
Va comunque detto che il URL si può sempre recuperare dinamicamente usando la
funzione =CELLA("FileName") anche se occorrono un po di rielaborazioni sul
risultato.
Segue versione corretta.
(supporta sempre gli stessi argomenti della precedente)
grazie
Paolo M
REM ***** BASIC *****
Global oDocInfo As Object
Function DocumentInfo(DocumentURL As String, Info As String) As Variant
Dim vTmp, vTmpDate
On Error GoTo ErrH
If IsNull(oDocInfo) Then
oDocInfo =
CreateUnoService("com.sun.star.document.StandaloneDocumentInfo")
End If
oDocInfo.loadFromURL(DocumentURL)
vTmp = oDocInfo.getPropertyValue(Info)
If IsUnoStruct(vTmp) Then
'should be a css.util.DateTime
vTmpDate = DateSerial(vTmp.Year, vTmp.Month, vTmp.Day) + _
TimeSerial(vTmp.Hours, vTmp.Minutes, vTmp.Seconds)
DocumentInfo = vTmpDate
Else
DocumentInfo = vTmp
End If
Exit Function
ErrH:
REM DocumentInfo = "Errore: " & Err & " " & Error$
DocumentInfo = ""
End Function
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]