ciao Bart,
Alle 16:15, domenica 5 febbraio 2006, Bart Aimar ha scritto:
> Quesito:
>
> Come, usando una macro, copiare la formula da una cella e incollarla in
> altra posizione, ma facendo si che i riferimenti si adeguino alla
> nuova posizione.
>
> Es:
>
> In A1 ho la formula "= A3"
> la voglio copiare in B1, e vorrei che la formula diventasse "= B3".
>
> (Ovvero come un normale copia/incolla...)
>
> Con il dispatch è la cosa più semplice del mondo... ma lo escluderei per
> ovvie ragioni.
>
>
> Se invece estraggo con l'api la formula da A1
> e poi la inserisco nella cella B1 avrò inevitabilmente un riferimento
> assoluto..., ciè la cella B1 avrà sempre il riferimento ad A3... e non a
> B3 come si vorrebbe...
>
> Si potrebbero anche fare tutti i conti e modificare il riferimento... ma
> se la formula è un pochino più complicata direi che diventa un incubo...
>
> C'è qualche altra strada?
Potresti fare in due modi, anzi, tre :-) (per quel che ne so io ovviamente):
1) metodo copyRange
esempio (copia la cella A1 in B3):
-------------------
sub test
oSheet = thisComponent.CurrentController.ActiveSheet
oSrc = oSheet.getCellRangeByName("A1").RangeAddress
oDest = oSheet.getCellRangeByName("B3").CellAddress
oSheet.copyRange(oDest, oSrc)
end sub
-------------------
vedi documentazione IDL per ulteriori dettagli:
http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/XCellRangeMovement.html#copyRange
2) metodo fillAuto - equivale al "trascinamento" con il mouse
esempio (riempie automaticamente le celle da B3 a B12 usando come base il
contenuto della cella B3) :
-------------------
sub test
oSheet = thisComponent.CurrentController.ActiveSheet
oCellRange = oSheet.getCellRangeByName("B3:B12")
oCellRange.fillAuto(com.sun.star.sheet.FillDirection.TO_BOTTOM, 1)
end sub
-------------------
anche qui vedi documentazione IDL per ulteriori dettagli
http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/XCellSeries.html#fillAuto
3) Credo proprio che questa cosa si possa fare usando opportunamente i
NamedRanges di cui si parlava alcuni gg fa.
Ricordi il "parametro oscuro"? :-)
Parameter aPosition
specifies the base address for relative cell references.
ho avuto un'illuminazione e mi sono convinto che sia fatto apposta per questi
casi :-)
saluti
Paolo M
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]