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]