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]

Rispondere a