ToPoint a változóban tárolt koordinátákra (megoldva)
-
- Hozzászólások: 21
- Csatlakozott: 2011. május 11., szerda 13:27
ToPoint a változóban tárolt koordinátákra (megoldva)
Szeretnék makrót írni egy LibreOffice táblázathoz.
A cél az lenne, hogy az adott munkalap adott koordinátájú celláján állva átjutssak a következő munkalap ugyanolyan koordinátájú cellájára.
A következő gombkombinációkat szeretném egy makróként használni (de az a bajom, hogy a másolás-beillesztés helyett konkrét érték beszúrását rögzíti a makrórögzítő):
Shift+Ctrl+F5 (Névdobozra áll)
Ctrl+A (Kijelöl ott mindent)
Ctrl+C (Másol)
Ctrl+PgDwn (Egy munkalappal odébb áll)
(Shift+Ctrl+F5 (Névdobozra áll) - nem fontos, mert úgyis ott áll)
Ctrl+A (Kijelöl ott mindent)
Ctrl+V (Beszúr)
Enter (érvényesíti a beállított koordinátát)
Magyarán, azt szeretném, ha ehelyett:
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "C12"
... inkább a vágólapon levő értéket (vagy akár egy előzőleg oActiveCell = oSelectedCell.CellAddress -ben tárolt Row és Column értéket) ragasztaná be a makró.
A cél az lenne, hogy az adott munkalap adott koordinátájú celláján állva átjutssak a következő munkalap ugyanolyan koordinátájú cellájára.
A következő gombkombinációkat szeretném egy makróként használni (de az a bajom, hogy a másolás-beillesztés helyett konkrét érték beszúrását rögzíti a makrórögzítő):
Shift+Ctrl+F5 (Névdobozra áll)
Ctrl+A (Kijelöl ott mindent)
Ctrl+C (Másol)
Ctrl+PgDwn (Egy munkalappal odébb áll)
(Shift+Ctrl+F5 (Névdobozra áll) - nem fontos, mert úgyis ott áll)
Ctrl+A (Kijelöl ott mindent)
Ctrl+V (Beszúr)
Enter (érvényesíti a beállított koordinátát)
Magyarán, azt szeretném, ha ehelyett:
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "C12"
... inkább a vágólapon levő értéket (vagy akár egy előzőleg oActiveCell = oSelectedCell.CellAddress -ben tárolt Row és Column értéket) ragasztaná be a makró.
A hozzászólást 1 alkalommal szerkesztették, utoljára szabozoltan969 2011. május 16., hétfő 10:42-kor.
LibreOffice 4.0.2.2 Ubuntu 13.04
- Zizi64
- Globális moderátorok
- Hozzászólások: 4084
- Csatlakozott: 2008. november 12., szerda 21:22
- Tartózkodási hely: Budapest
Re: ToPoint a változóban tárolt koordinátákra
Üdv!
Első észrevételem:
A makrórögzítő csak korlátozott képességekkel bír. (és csak a Writerben meg Calcban működik egyáltalán). Igazán hatékony makróprogramozást az API függvények tanulmányozásával és valamelyik itt alkalmazható programnyelv elsajátításával tudsz megvalósítani. (Jómagam csak a Basic területén tudok segíteni.)
Második észrevételem:
Amit eddig csináltál (próbálkoztál) azt mindenképpen érdemes ide feltöltened, mert az alapján pontosabban megállapíthatja a reménybeli segítő, hogy mit kéne másképp csinálnod. (képletet, képernyőképet, rögzített, vagy megírt makrót, példafájlt, bármit...)
Például: először azt írod:
Később meg már adatmásolás/mozgatás a célod...
Harmadik észrevételem:
Első észrevételem:
A makrórögzítő csak korlátozott képességekkel bír. (és csak a Writerben meg Calcban működik egyáltalán). Igazán hatékony makróprogramozást az API függvények tanulmányozásával és valamelyik itt alkalmazható programnyelv elsajátításával tudsz megvalósítani. (Jómagam csak a Basic területén tudok segíteni.)
Második észrevételem:
Amit eddig csináltál (próbálkoztál) azt mindenképpen érdemes ide feltöltened, mert az alapján pontosabban megállapíthatja a reménybeli segítő, hogy mit kéne másképp csinálnod. (képletet, képernyőképet, rögzített, vagy megírt makrót, példafájlt, bármit...)
Például: először azt írod:
Tehát úgy tűnik, csak mozogni kell, de az nem derül ki egyértelműen, hogy mereven megadott celláról mereven megadott cellára, vagy mindig az éppen aktuális kijelöltről a következő (mit jelent a "következő?": eg másik, megnevezett? az aktuálishoz képest eggyel nagyobb sorszámú?) munkalap azonos koordinátájú cellájára?A cél az lenne, hogy az adott munkalap adott koordinátájú celláján állva átjutssak a következő munkalap ugyanolyan koordinátájú cellájára.
Később meg már adatmásolás/mozgatás a célod...
Harmadik észrevételem:
Miért kellene mindet kijelölni az adat beillesztése előtt? Minden cellába az az adat kell?Ctrl+A (Kijelöl ott mindent)
Ctrl+V (Beszúr)
Enter (érvényesíti a beállított koordinátát)
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
-
- Hozzászólások: 21
- Csatlakozott: 2011. május 11., szerda 13:27
Re: ToPoint a változóban tárolt koordinátákra
Azt szeretném, hogy a makró a következő (tehát a jelenlegitől jobbra levő) munkalap azon cellájára ugorjon, ahol a mostani munkalapon állok. Tehát ha a 3. munkalap b3-as celláján állok éppen, akkor ugorjon a 4. munkalap b3-as cellájára.
Az a "Copy+Paste" ügyet azért írtam a szkriptbe, mert a bal fent levő "Névdoboz" tartalmával machináltam. Tehát ott, ami mutatja az aktuális cellapozíciót. Azt az értéket akartam kiszedni és a következő munkalapon betenni (szó sincs cellatartalom-másolásról).
A részleteket a következő hozzászólásban...
Az a "Copy+Paste" ügyet azért írtam a szkriptbe, mert a bal fent levő "Névdoboz" tartalmával machináltam. Tehát ott, ami mutatja az aktuális cellapozíciót. Azt az értéket akartam kiszedni és a következő munkalapon betenni (szó sincs cellatartalom-másolásról).
A részleteket a következő hozzászólásban...
LibreOffice 4.0.2.2 Ubuntu 13.04
-
- Hozzászólások: 21
- Csatlakozott: 2011. május 11., szerda 13:27
Re: ToPoint a változóban tárolt koordinátákra
Voltak kísérleteim a makrórögzítésen kívül is, pl. az alábbi kettő, de a koordináta-átadás még nem perfekt. Képernyőképet nem tudok mutatni, mert csak pozícionálásról szól a nóta.
=============
(Megj: az oActiveCell.Row és oActiveCell.Column egy számértéket tartalmaz, amely megfelel a kévánatos koordinátáknak, csak 0-tól indítva a számozást. Ezeket nem tudtam hol felhasználni, pedig a GotoCell-ben hasznos lenne...)
=== Meg egy másik, szintén nem nagy sikerekkel járó irány ============
Kód: Egész kijelölése
sub UgrasUaCellara
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oSelectedCell = ThisComponent.CurrentSelection
oActiveCell = oSelectedCell.CellAddress
dispatcher.executeDispatch(document, ".uno:JumpToNextTable", "", 0, Array())
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = oActiveCell
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
end sub
(Megj: az oActiveCell.Row és oActiveCell.Column egy számértéket tartalmaz, amely megfelel a kévánatos koordinátáknak, csak 0-tól indítva a számozást. Ezeket nem tudtam hol felhasználni, pedig a GotoCell-ben hasznos lenne...)
=== Meg egy másik, szintén nem nagy sikerekkel járó irány ============
Kód: Egész kijelölése
dispatcher.executeDispatch(document, ".uno:FocusCellAddress", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:WordRightSel", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:JumpToNextTable", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:FocusCellAddress", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:WordRightSel", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
LibreOffice 4.0.2.2 Ubuntu 13.04
- Zizi64
- Globális moderátorok
- Hozzászólások: 4084
- Csatlakozott: 2008. november 12., szerda 21:22
- Tartózkodási hely: Budapest
Re: ToPoint a változóban tárolt koordinátákra
Akkor, ha jól értem, valami ilyesmit szeretnél:
Ez a makró nemcsak ugyanazon cellát, hanem ugyanazon kijelölt cellatartományt képes a következő lapon kijelölni. Kérdés, hogy miért kell neked ezt kijelölni? Gondolom a feladat itt nem ér véget, valamit kell csinálni a kijelölt tartománnyal...
Ez a makró nemcsak ugyanazon cellát, hanem ugyanazon kijelölt cellatartományt képes a következő lapon kijelölni. Kérdés, hogy miért kell neked ezt kijelölni? Gondolom a feladat itt nem ér véget, valamit kell csinálni a kijelölt tartománnyal...
Kód: Egész kijelölése
Sub Ugras_a_kovetkezo_munkalap_ugyanazon_cellatartomanyara
oDoc = ThisComponent
oView = oDoc.getCurrentController()
oSheet= oView.getActiveSheet()
oSel = oDoc.getCurrentSelection()
oAddr = oSel.getRangeAddress()
FromSheet = oAddr.Sheet
nSCol = oAddr.StartColumn
nSRow = oAddr.StartRow
nECol = oAddr.EndColumn
nERow = oAddr.EndRow
ToSheet = FromSheet + 1
Ugras(ToSheet+1)
'Figyelni kell a 0-tól számoló "oAddr.Sheet" függvény, meg az 1-től számoló "Jump" számozására...
oNewView = oDoc.getCurrentController()
oNewSheet = oNewView.getActiveSheet()
oNewView.select(oNewSheet.getCellRangeByPosition(nScol, nSRow, nECol, nERow))
end sub
sub Ugras(Munkalapszam as integer)
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = Munkalapszam
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
end sub
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
-
- Hozzászólások: 21
- Csatlakozott: 2011. május 11., szerda 13:27
Re: ToPoint a változóban tárolt koordinátákra
Köszi, ez tökéletes!
Egyébként pusztán ennyi a cél: átugrani a köv. munkalap azonos pozíciójú cellájára.
Ez amiatt kell, mert van egy jó széles és hosszú munkalapom, amely többnyire számértékeket tartalmaz. ( http://hup.hu/node/102837 )
Van egy ennek megfelelő másik munkalapom, amely e számértékekhez fűzött szöveges megjegyzéseket, felvilágosításokat tartalmaz.
E két "réteget" szeretném valahogy (együtt)láttatni a felhasználókkal.
Ha ugyanolyan pozícióba teszem a két munkalap celláit, akkor (a táblázat felső régióiban) könnyen meg lehet nézni az egyes számértékek szöveges párját, hiszen csak egy CTRL+PgUp(v Dwn), és kész is. Csakhogy munka közben többnyire elgörgetődik egymástól a két oldal, és akkor csak nyögvenyelősen lehet megkeresni az összetartozó cellákat. Ennek áthidalását végzi a kért (és remekül működő
) makró.
Lehet, hogy van olyan módszer, amivel elérhető, hogy a két munkalap együtt gördüljön? Esetleg van más kulturális megoldás, amivel ezt a két réteget ügyesen lehet egyszerre (vagy egyenként) láttatni egymáson? Vagy van vmi nem-kézi módszer, amivel az első munkalap celláihoz megjegyzésként lehet rendelni a másik munkalap azonos pozíciójú celláit? Ilyen kérdések még lappanganak bennem.
A teljesség kedvéért jelzem, hogy itt: http://hup.hu/node/102880 is kaptam egy megoldást a fenti kérdésre ironcat-től.
Egyébként pusztán ennyi a cél: átugrani a köv. munkalap azonos pozíciójú cellájára.
Ez amiatt kell, mert van egy jó széles és hosszú munkalapom, amely többnyire számértékeket tartalmaz. ( http://hup.hu/node/102837 )
Van egy ennek megfelelő másik munkalapom, amely e számértékekhez fűzött szöveges megjegyzéseket, felvilágosításokat tartalmaz.
E két "réteget" szeretném valahogy (együtt)láttatni a felhasználókkal.
Ha ugyanolyan pozícióba teszem a két munkalap celláit, akkor (a táblázat felső régióiban) könnyen meg lehet nézni az egyes számértékek szöveges párját, hiszen csak egy CTRL+PgUp(v Dwn), és kész is. Csakhogy munka közben többnyire elgörgetődik egymástól a két oldal, és akkor csak nyögvenyelősen lehet megkeresni az összetartozó cellákat. Ennek áthidalását végzi a kért (és remekül működő

Lehet, hogy van olyan módszer, amivel elérhető, hogy a két munkalap együtt gördüljön? Esetleg van más kulturális megoldás, amivel ezt a két réteget ügyesen lehet egyszerre (vagy egyenként) láttatni egymáson? Vagy van vmi nem-kézi módszer, amivel az első munkalap celláihoz megjegyzésként lehet rendelni a másik munkalap azonos pozíciójú celláit? Ilyen kérdések még lappanganak bennem.
A teljesség kedvéért jelzem, hogy itt: http://hup.hu/node/102880 is kaptam egy megoldást a fenti kérdésre ironcat-től.
LibreOffice 4.0.2.2 Ubuntu 13.04