Salve a tutta la sonnolenta lista,
:-)

Sono anni che scarabocchio macro traballanti che tentano di trasferire grandi quantità di dati da un doc.calc ad un altro.

Ci ho perso su un numero di ore inverosimile con il risultato di avere macro funzionanti solo su certe versioni di OOo, su determinati sistemi operativi, determinate macchine e nemmeno sempre. :-(
Ovvero macro che sembrano funzionare "per caso".

(con la versione 3 di OOo il problema sembra drammaticamente peggiorato... sopratutto sotto win)

Sostanzialmente i metodi che ho trovato prevedono sempre che si vada da un frame all'altro e fanno uso pesante della clipboard. Ci sono problemi di threading, il codice non sa mai bene su che frame si trova, e anche se lo sa, passa avanti alla situazione contingente eseguendo le cose nei frame sbagliati.

(Sto parlando di range di migliaia di elementi, perché su poche celle in genere funziona...)

Nel tentativo (ormai disperato) di trovare una soluzione sempre funzionante ho indagato un po' il metodo
oDocView.insertTransferable(...
ma mi pare che anche, per questo metodo, sia necessario passare da un doc all'altro con le ovvie conseguenze del caso...

Ora, considerando che è quantomeno strano che gli sviluppatori non abbiano pensato alla possibilità di trasferire via macro agevolmente i dati da da un doc all'altro, domando:

qualcuno sa come fare?
-------------------------------------------------------

Se non ci sono idee migliori avrei un'ultima ipotesi (mi è apparsa in sogno questa notte... ma un corvo nero accompagnava la visione...)

Un metodo da GUI certamente efficace è:
Menu Inserisci > Collegamento a dati esterni
perché non prevede il copia/incolla.
Ma anche qui ho qualche problema.

Il mio codice già sa le seguenti informazioni:
- url doc sorgente -
- url doc destinazione
- range sorgente (anche sotto forma di Nome di area)
- indirizzo cella destinazione
(non dovrebbe servire altro)

Quello che mi manca è un metodo real API che mi consenta di utilizzarli.
Esiste?

In alternativa ho provato con il registratore,
ma questo, dopo aver individuato la cella di destinazione si ferma lasciando questa riga (disattivata): ' oDispatcher.executeDispatch(oDocumentFrame, ".uno:InsertExternalDataSource" ,"" ,0 ,Array())

la riga è anche priva dei necessari argomenti (giusto un suggerimento) e, anche decommentandola, mi apre la finestra della GUI per la selezione del file e dell'area (sorgenti).

Ho provato a pasticciare un po', ma del registratore ho sempre capito poco... ed ho molto "inventato". Inevitabilmente il risultato è sempre quello sopra (proposta della wizard GUI).

il codice è questo:

dim args2(2) as new com.sun.star.beans.PropertyValue
 args2(0).Name = "FileName"
 args2(0).Value = sSourceURL
 args2(1).Name = "FilterName"
 args2(1).Value = "sCalc"
 args2(2).Name = "Source"
 args2(2).Value = sAreaSourceName
dispatcher.executeDispatch(tFrame, ".uno:InsertExternalDataSource", "", 0, args2())

Ho giocato male i "numerini" tra parentesi ?
mi manca qualche argomento, oppure l'ho definito o informato male?

Qualche suggerimento?

Vi ringrazio per la pazienza...

Bart

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Rispondere a