Calc-ban Makroba ágyazott "Kersesés és csere" nem frissül

Táblázatkezelő
Pivandras
Hozzászólások: 8
Csatlakozott: 2015. január 25., vasárnap 23:21

Calc-ban Makroba ágyazott "Kersesés és csere" nem frissül

Hozzászólás Szerző: Pivandras »

Szervusztok!
Egy Calc táblázatban Makro funkcióval szeretnék különböző változásokat végrehajtatni, méghozzá úgy, hogy egy cellából adnám be a makroba ágyazott "Keresés és csere" kereső ablakába a keresett adatot és a talált cella lenne a kiindulása a változásoknak.
A problémám az, hogy a makro mindig csak azt a keresést hajtja végre, amit a makro létrehozásakor írok a cellába. (Hiába teszek be törlési utasítást, nem segít.)
Úgy is próbáltam, hogy nyitva hagyom a keresőt és közvetlenül oda írom be az aktuális értéket, de így is mindig csak a létrehozáskor beírt értéket hajtja végre a makro.
Tudnátok segíteni, mi kerüli el a figyelmemet?
Megoldásnak látnám még fügvénnyel megkeresni a keresett cellát és a kapott cella címre ugratnám valahogy a kijelölést, de ezzel sem boldogultam! Bár ez gondolom a "Keresés és csere" funkció barkács változata :)
Előre is köszönöm a segítséget!
Apache OpenOffice 4.1.1 , Windows XP
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4084
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Calc-ban Makroba ágyazott "Kersesés és csere" nem frissü

Hozzászólás Szerző: Zizi64 »

Fel kell töltened ide a makrókódot, vagy egy dokumentumot, aminek egy Basic modulja a makrót is tartalmazza. Másként nem sokat lehet róla látatlanban mondani. Hiszen még azt se írtad le, hogy a Makrórögzítővel készítetted a makródat (ami nem túl hatékony dolog, és nem is lehet vele a legminimálisabbnál bonyolultabb, működőképes kódot összeállítani kézi beavatkozás nélkül), vagy pedig ismered az API függvényeket, és azok felhasználásával ÍRTAD a makrót.

Ez utóbbi lesz csak a járható út a feladatod megvalósításához. Még ha a cellakijelölést, vágólapra másolást fel is vennéd a Makrórögzítővel, akkor is bele kell nyúlnod kézzel a rögzített kódba, hogy a vágólap tartalma megfelelő módon a keresés mezőbe jusson. (...és vágólapon keresztül megoldani nem is túl elegáns, és nem is túl biztonságos...)
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].
Pivandras
Hozzászólások: 8
Csatlakozott: 2015. január 25., vasárnap 23:21

Re: Calc-ban Makroba ágyazott "Kersesés és csere" nem frissü

Hozzászólás Szerző: Pivandras »

Köszönöm a választ!
Igen, sajnos én egyelőre csak a Makrorögzítőt ismerem és ezzel próbálok ügyeskedni. Mivel a feladat nem bonyolult, reménykedtem, hogy gyorsan meg leszek vele...
Feltöltöttem egy táblázatot, amiben a K1 makro a kiindulási cellából, ami csak a B oszlopban lehet, végrehajtja a változtatásokat. Ezzel bármelyik B cellából indulva az ahhoz a cellához viszonyítva veszi az adatokat, és helyezi el, úgy ahogy az nekem kell.
A K2 makroba ágyaztam be a Keresés és csere funkciót, amibe Bevitel mezőből másolnám be a B oszlopban keresendő Kód-ot, de ez nem akar működni.

Elkezdtem megnézni az API kódokat. Csábító, bár ha jól látom, ez azért több mint 1-2 óra, tekintve, hogy nem vagyok informatikus...sőt!
Elnézést, ha kevés az info!
Bocs, most látom, hogy az ots kiterjesztés nem engedélyezett a fájlfeltöltésben... Rohannom kell. Este valahogy megoldom!
Apache OpenOffice 4.1.1 , Windows XP
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4084
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Calc-ban Makroba ágyazott "Kersesés és csere" nem frissü

Hozzászólás Szerző: Zizi64 »

Én se tudom, hogy az '.ots' (template/sablon) kiterjesztés miért nem engedélyezett itt, de egyszerűen mentsd el '.ods'-be: az biztosan működik, ha a fájlod nem nagyobb, mint 128 KiB. Nagyobb fájl esetén használj fájlmegosztó oldalakat (Google, stb., és a linket helyezd el itt.
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].
Pivandras
Hozzászólások: 8
Csatlakozott: 2015. január 25., vasárnap 23:21

Re: Calc-ban Makroba ágyazott "Kersesés és csere" nem frissü

Hozzászólás Szerző: Pivandras »

Köszönöm a tanácsot, így már sikerült csatolnom! :)
Irtam egy kicsit bővebb magyarázó szöveget a táblázatba.

Ahogy ennyit töröm a fejem ezen a témán, már nem is vagyok biztos benne, hogy a kereső ablak nem frissül!
Úgy veszem észre, hogy a Makrorögzítő cellacím "érzékeny" azaz ha egy cellából a nyilakkal átnavigálok, akkor a kiinduló cella lesz a műveletek végrehajtásában a bázis, de ha közben a kurzorral átugrok egy másik cellára, attol kezdve mindegy, hogy melyik celláról indultam, amikor az átugrással kijelölt cellához ér a Makro, a művelet onnan folytatódik tovább azaz "elfelejti", hogy az induló cellához kellene viszonyítania a műveleti cellákat. Vagy ez triviális?

Félre ne értsd, nem ragaszkodom én a Makrorögzítőhöz...csak szeretném megérteni az okokat. Aztán jöhetnek az API függvények! ;)
Csatolmányok
tanulotabla.ods
(12.91 KiB) Letöltve 128 alkalommal.
Apache OpenOffice 4.1.1 , Windows XP
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4084
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Calc-ban Makroba ágyazott "Kersesés és csere" nem frissü

Hozzászólás Szerző: Zizi64 »

De nincs fájlodban a makró, így kipróbálni sem lehet!
Te az Office program Makrókönyvtárába mentetted, és ha nem másolod át a fájl Makrókönyvtárába, akkor én semmit nem látok a makróból... Se a kódsorokat, se a működését.

Számomra ez a feladat tipikus FKERES() /VLOOKUP()/ függvénnyel megvalósítható feladatnak tűnik, de nem látok persze rá a problémára teljes körűen. És a FKERES() függvénnyel nem egyetlen, hanem 'n' darab keresés esetén éppen 'n' darab kiindulási cella kell, amibe beírod a keresendő kifejezést és amihez a függvény megtalálja a hozzátartozó, vele egy sorban lévő adatot.

Meg lehet csinálni makróval is persze... kérdés, hogy mennyire szükséges automatizálni. Kell-e automatikus sorszám-növelés a célterületre (soros elérés), vagy mindig a kézzel kijelölt sorba kell helyezni a megtalált adatot (véletlenszerű elérés)?
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].
Pivandras
Hozzászólások: 8
Csatlakozott: 2015. január 25., vasárnap 23:21

Re: Calc-ban Makroba ágyazott "Kersesés és csere" nem frissü

Hozzászólás Szerző: Pivandras »

Bocsánat, remélem most már megy a makro is. Ezt a tanulotabla1.ods-t Ubuntu12.04 Libre Office 3-al hoztam létre, nem tudom számít-e vagy mindegy?

Próbálkozom az általad ajánlott VKERES függvénnyel, ami a kigyűjtésre tényleg jó lenne de én mást is szeretnék egy füst alatt elvégeztetni (pl. cella hátérszínének megváltoztatása) és hát beviteli cellát is csak egyet szeretnék. Minden OK. lenne, ha a Makrorögzítő nem "fényképként" kezelné a létrehozásakor megnyitott Keresés ablakot a beleírt adatokkal, hanem frissítené... már megint itt tartok!
Felfedeztem, hogy a Makro szerkesztés módban meg lehet nézni, mit is csináltam a rögzítés folyamán (bocs, nekem újdonság) és áttanulmányoztam. Szerencsére a konkrét adatok olyanok, mint idegen nyelvű könyvben a képek, ezért többé-kevésbé értettem is, hogy mit látok. Hát nem nyugodtam meg! A látottakból vettem a fentebb írt "fényképként" jelzőt, mert a Kereső alkalmazás egy utasításhalmazban van a konkrét, létrehozáskor beírt értékekkel. A Makro futtatásakor a kereső ablakba beírt adatok nem változnak. Persze nem értem, miért csodálkozok: A Makro korlátainak felsorolásakor ( https://help.libreoffice.org/3.4/Common ... a_Macro/hu ) két pont is erre utal. Mondjuk az, hogy "Az ablakok megnyitása nincs rögzítve" ebben a formában nem igaz, mert rögzül, csak a makro futásakor nem nyit újat.

Nézzétek el nekem, hogy ilyen alap dolgokat írok le, de rengetegszer olvasom felmerülő kérdéseimmel kapcsolatban (ritkán kérdezek) a fórumokat (Ubuntu,OpenOffice, elektronika,stb.) és nagyon szoktam örülni, ha a kérdező megírja azokat a lépéseket, amik megvilágították az agyát! Hátha lesz, aki tudja hasznosítani, amit kiokoskodtam. És egyúttal kérem, hogy ha hülyeséget írtam, szóljatok.

Kedves Zizi64! Most már értem, miért nem lelkesedsz a Makrorögzítőért. Várom véleményedet, illetve hogy merre induljak tovább.

Lenne egy napirenden kívüli kérdésem is: Létezik olyan utasítás, függvény, bármi amivel az egyik cellából egy másik cellára tudok ugrani? Konkrétan mondjuk a B12 cellában szerepel a V218 adat. Erre a cellacímre szeretnék átugrani! Pl. olyan, hogy UGORJ(B12)
Csatolmányok
tanulotabla2.ods
(19.13 KiB) Letöltve 104 alkalommal.
Apache OpenOffice 4.1.1 , Windows XP
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4084
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Calc-ban Makroba ágyazott "Kersesés és csere" nem frissü

Hozzászólás Szerző: Zizi64 »

Felfedeztem, hogy a Makro szerkesztés módban meg lehet nézni, mit is csináltam a rögzítés folyamán (bocs, nekem újdonság) és áttanulmányoztam.
No pont ott, a Basic IDE felületén fogod megírni az API függvényekkel a működőképes és igazán hatékony makródat!

IDE: Integrated Developpment Environment = Beépített Fejlesztő környezet
És bár manapság már elavult programnyelvnek számít - a Basic nyelvet kezeli legközvetlenebbül a LO/AOO. Hiszen az abban megírt kódot képes ellenőrizni, a hibákat közvetlenül jelezni, és azonnal futtatni is az Office csomag.
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].
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4084
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Calc-ban Makroba ágyazott "Kersesés és csere" nem frissü

Hozzászólás Szerző: Zizi64 »

Lenne egy napirenden kívüli kérdésem is: Létezik olyan utasítás, függvény, bármi amivel az egyik cellából egy másik cellára tudok ugrani? Konkrétan mondjuk a B12 cellában szerepel a V218 adat. Erre a cellacímre szeretnék átugrani! Pl. olyan, hogy UGORJ(B12)
Természetesen tudsz olyan szubrutint írni, amely a fókuszt, a kurzort a kérdéses cellára helyezi, azaz: aktívvá teszi. De az API függvényekkel nem minden esetben kell a felhasználó szemszögéből is aktívnak látszóvá tenni egy cellát ahhoz, hogy annak a tartalmát le tudd kérdezni, vagy meg tudd változtatni.

API tanfolyamot persze nem tudok tartani itt egy hozzászólás keretén belül (már csak azért sem mért én is csak az alapfok fölött egy picivel érzem a magam helyzetét), de átnézem a rögzített kódot, és fogok konkrét javaslatot tenni a hatékonyabb programlépésekre (ha valaki meg nem előz...)
Addig is keresd Andrew Pitonyak dokumentumait, amiben rengeteg API alapú makrópélda van, (és főleg Basicben megírt függvényekről van szó)

Az ugrás API függvénnyel:

Kód: Egész kijelölése

Dim oDoc as object
Dim oSheet As Object
Dim oCells As Object
  oDoc = ThisComponent ' "Ezt a dokumentumot", azaz az éppen aktív dokumentumot szólítod meg így
  oSheet = oDoc.Sheets.getByName("Munkalap1") ' ezzel a módszerrel a neve szerint szólítod meg a munkalapot
  oCells = oSheet.getCellRangeByName("B12") 'megfogod a B12 cellát, és
  ThisComponent.CurrentController.select(oCells) ' kiválasztod, azaz aktívvá teszed
Természetesen az ugrás helyét paraméterként is át lehet adni a rutinnak: akár szöveges paraméterként a cella "nevét" (betű és szám koordinátáját), akár számként a sorának és az oszlopának a számát (vigyázz ez a módszer "0 alapú" - azaz a számolás 0-nál kezdődik), de akár objektumként is átadhatod a célcella adatot.

De ha le akarod kérdezni a cella tartalmát akkor az utolsó kódsor helyett írd ezt:

Kód: Egész kijelölése

MyString = oCells.String
Ha pedig írni akarod az értékét, akkor ezt:

Kód: Egész kijelölése

oCells.String = "Hello world"
Persze nem csak szöveges értéket vihetsz be a cellába, hanem számértéket is:

Kód: Egész kijelölése

oCells.Value = 123.456
És persze nem csak konstans értéket vihetsz be, hanem bármely változó értéké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].
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4084
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Calc-ban Makroba ágyazott "Kersesés és csere" nem frissü

Hozzászólás Szerző: Zizi64 »

De természetesen a makrórögzítővel felvett makrót is megbuherálhatod: a konstans, macskakörömben lévő értékek helyett használhatsz szöveges változókat amelyeknek az értékeit valamilyen módszerrel meghatározod a dispatcher (diszpécser) számára.
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].
Pivandras
Hozzászólások: 8
Csatlakozott: 2015. január 25., vasárnap 23:21

Re: Calc-ban Makroba ágyazott "Kersesés és csere" nem frissü

Hozzászólás Szerző: Pivandras »

Klassz!
Kedves Zizi64! Köszönöm szépen a gyors és részletes válaszokat! Persze most kipróbálom a leírtakat és azt hiszem egyet-kettőt alszom is rá, hogy leülepedjen.
A Makro buherálásával fogok kezdeni. Ez valahogy még mindig vonz... :oops:
Megírom majd, hogy mire jutottam! Persze, valószínűleg kérdéseim is lesznek még, meg várom a rögzített kóddal kapcsolatos tanácsokat is!
Apache OpenOffice 4.1.1 , Windows XP
Pivandras
Hozzászólások: 8
Csatlakozott: 2015. január 25., vasárnap 23:21

Re: Calc-ban Makroba ágyazott "Kersesés és csere" nem frissü

Hozzászólás Szerző: Pivandras »

Kipróbáltam a leírtakat, pontosabban megpróbáltam a leírtakat beépíteni a Makrorögzítő által létrehozot Makro buherálásával, de nem sikerült. Valószínűleg a Makrorögzítő és az API nem fésülhető össze?

Annyiban azért előrébb vagyok, hogy keresni és cellára ugrani már tudok.
(Erre úgy jöttem rá, mint az alapos tudós, aki kíváncsiságból elkezdi egyesével kitépkedni a százlábú lábait. Minden kitépett láb után rákiált a rovarra, hogy: fuss! Az meg fut. Amikor az utolsó lábát is kitépte, hiába kiáltozott, hogy: fuss! A rovar nem futott! Erre akurátusan feljegyezte, hogy ha a százlábú összes lábát kitépjük...akkor megsüketül!)

Szóval egyesével kigyomláltam a Makrorögzítő által beírt "keresés" utasítás listáját és két sor maradt.
Íme:
args2(1).Name = "SearchItem.SearchString"
args2(1).Value = "888"
A 888 egy tetszőleges, általam a Makroba beírt érték. Viszont most jönne a kérdésem: a 888 helyére hogyan tudnám egy cella értékét beolvastatni?
Egyébként becsülettel elkezdtem keresni és olvasgatni az API programozást (Andrew Pitonyak) is de mivel nem beszélem az angolt, így kicsit nehézkes. A magyar leírás, legalább is amiket találtam, meg elég általános és szétszórt.
Jól gondolom, hogy Zizi64 általad ajánlottakat API programozási ismereteim fejlődése után tudom majd alkalmazni?

Apropó: Tudnátok ajánlani egy oldalt vagy könyvet vagy bármit, ahol a Makroparancsok és jelentéseik össze vannak foglalva? Ha lehet, magyarul... :oops:
Apache OpenOffice 4.1.1 , Windows XP
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4084
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Calc-ban Makroba ágyazott "Kersesés és csere" nem frissü

Hozzászólás Szerző: Zizi64 »

Valószínűleg a Makrorögzítő és az API nem fésülhető össze?
De, összefésülhető a két programkód fajta. Persze tudni kell, hogy mit lehet kigyomlálni az egyikből, és mivel lehet helyettesíteni, vagy kiegészíteni azt a másik fajtából.


Legalább egy minimális angol tudás nélkül nehéz lesz a dolog. Aki programozásra adja a fejét, annak MUSZÁJ egy kicsit tudni angolul. Ha mást nem is, az If-then/do/While/ (stb) alapvető Basic parancsok értelmét ismerni kell. De az API függvények nevei is beszélő nevek: elég jól körülírják, hogy mit és hogyan végez a rutin.


A Diszpécser rutinokban szinte csak a bemeneti paraméterek értékéhez érdemes hozzányúlni. (Ezek a Név/Érték macskakörmös konstans-párok második tagjai a te kódodban.


Egy cella értékét (szöveges értékét, mert van neki képlet-értéke, meg számértéke is!) az alábbi kóddal tudod beolvasni. Ehhez meg kell szólítanod a Dokumentumot - nyilván az aktív (az éppen buherált) dokumentumról van szó. Aztán meg kell szólítanod a Munkalapot (itt már nem biztos, hogy éppen a látható munkalap egy cellájára vagy kíváncsi: de van mód név nélkül az aktív, vagy névvel, esetleg a számával bármelyik munkalap megszólítására. Aztán meg kell szólítanod egy cellatartományt, és abból kiválasztani a kívánt cellát. Ennek aztán lekérdezheted a String, a Value és a Formula értékét is akár.

Kód: Egész kijelölése

'Deklaráljuk a változókat az "o" előteg jelentse az Objektum típusú változót, a "s" előtad a string típusú változót (ez nem kötelező, de később ránézésre is fogod tudni, hogy milyen változóval is állsz szemben:
Dim oDoc as object ' a dokumentum változója
Dim oSheet as object 'a munkalap változója
Dim oCell as object 'a Cella változója
Dim sMyString as string
Dim MyValue as double


oDoc = Thiscomponent 
' a dokumentum változó értékét állítsuk be az aktuális dokumentumra. Ezután oDoc néven hivatkozhatsz rá.
oSheet = ThisComponent.Sheets(0) 
' most a számával hivatkozok egy munkalapra: a "0" jelenti az első (a füleket tekintve a bal oldali munkalapot) választottam ki.

'Most megmarkolom az A1 cellát a koordinátáinál fogva:
oCell = oSheet.getCellByPosition(0,0)

'Akkor olvassuk most már ki a cella szöveges és számértékét:
sMyString =  oCell.string
MyValue = oCell.value 
Természetesen ez csak EGY módszer volt a sok közül.
A "sMyString" változó értékét pedig beírhatod a diszpécser rutinjába bemenő változóként (csak azt a két sort másolom ide, amit te is kiemeltél, de így önmagában nem lesz működőképes, csak a diszpécserre vonatkozó sorokkal együtt!:

Kód: Egész kijelölése

args2(1).Name = "SearchItem.SearchString"
args2(1).Value = sMyString
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].
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4084
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Calc-ban Makroba ágyazott "Kersesés és csere" nem frissü

Hozzászólás Szerző: Zizi64 »

Apropó: Tudnátok ajánlani egy oldalt vagy könyvet vagy bármit, ahol a Makroparancsok és jelentéseik össze vannak foglalva?
Nem létezik olyan csoport, hogy "Makróparancsok".

1. Létezik a Basic IDE, amit a Basic programnyelv szabályai szerint lehet használni. (Lásd: magyar súgó.) Itt tudsz megírni egy saját programot, ami HASZNÁLJA a programcsomag API függvényeit, és a programozás általános utasításait.

2. Létezik a Makrórögzítő és a Diszpécser, ami több kevesebb sikerrel megpróbálja "leutánozni' azt, amit te kézzel végrehajtottál. (Csak végszükségben használom egy saját programkódban.)

3.: Léteznek az API függvények, amiket többféle programnyelv használatával is el tudsz érni, a Basic csak egy a sok közül. Az API függvények nem mások, mint "a program tudásának a fogantyúi". A segítségükkel gyakorlatilag mindent el tudsz érni egy általad írt programból is, amit az Office programcsomag tud...

https://help.libreoffice.org/Basic/Prog ... h_Basic/hu
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].
Pivandras
Hozzászólások: 8
Csatlakozott: 2015. január 25., vasárnap 23:21

Re: Calc-ban Makroba ágyazott "Kersesés és csere" nem frissü

Hozzászólás Szerző: Pivandras »

Megoldva!
Szervusztok!
Bocsánat, eltűntem egy kis időre...
Viszont jó hírem van! Sikerült megtalálni a megoldást... persze be kell valljam, nem ment egyedül. Még egyszer köszönöm Zizi64 és K. Zoli barátom(aki privát segített) hasznos tanácsait!
Tehát a megoldás:
A Makrorögzítővel felvett Makroba (amiben a kereső funkciót ctrl-F is használtam!) beléptem az Eszközök/Makrók/Makrók rendezése/LibreOffice Basic/Tanulo2/Standard/Mkr1/Szerkesztés -el.
Az alábbiból, ami a ctrl-F hatására jött létre

Kód: Egész kijelölése

rem ----------------------------------------------------------------------
dim args1(17) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.Backward"
args1(4).Value = false
args1(5).Name = "SearchItem.Pattern"
args1(5).Value = false
args1(6).Name = "SearchItem.Content"
args1(6).Value = false
args1(7).Name = "SearchItem.AsianOptions"
args1(7).Value = false
args1(8).Name = "SearchItem.AlgorithmType"
args1(8).Value = 0
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 0
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "106026"
args1(11).Name = "SearchItem.ReplaceString"
args1(11).Value = ""
args1(12).Name = "SearchItem.Locale"
args1(12).Value = 255
args1(13).Name = "SearchItem.ChangedChars"
args1(13).Value = 2
args1(14).Name = "SearchItem.DeletedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.InsertedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.TransliterateFlags"
args1(16).Value = 1280
args1(17).Name = "SearchItem.Command"
args1(17).Value = 0

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
Mindent kitöröltem, hogy ez maradjon:

Kód: Egész kijelölése

rem ----------------------------------------------------------------------
dim args1(17) as new com.sun.star.beans.PropertyValue

args1(10).Name = "SearchItem.SearchString"
args1(10).Value = "106026"
args1(11).Name = "SearchItem.ReplaceString"
args1(11).Value = ""

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
Majd a "106026" -ot kicseréltem erre:

Kód: Egész kijelölése

ThisComponent.Sheets.getByName("Munkalap1").getCellRangeByName("J2").String
azaz, ez lett belőle (a Munkalap1 és a J2 a mellékelt Tanulo2 dokumentum értékei! Természetesen az aktuális munkalap nevet és a cella nevét kell beírni!):

Kód: Egész kijelölése

rem ----------------------------------------------------------------------
dim args1(17) as new com.sun.star.beans.PropertyValue
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = ThisComponent.Sheets.getByName("Munkalap1").getCellRangeByName("J2").String
args1(11).Name = "SearchItem.ReplaceString"
args1(11).Value = ""

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())
Mentettem és már működött is! :)))

A mellékelt Tanulo2 dokumentum csak egy példa, hogy mire fogom használni a megoldást. Ennek lényege, hogy a J2 cellába vonalkód olvasóval beviszem a kód értéket és a makro futtatásával megjelölöm a tételt és egy füst alatt a kigyűjtést is elkészítem.

Felteszek majd még ide egy címet, ahol le van írva, hogyan lehet a makróhoz nyomógombot létrehozni és csatolni. Múltkor olvastam, de most nem találom...
 Szerkesztett: Használd a Code TAG-et a makrokódok ábrázolásához. Kiemeli azt, és áttekinthetőbbé teszi a fix szélességű betűkészlet is, ami a Code TAG sajátja... 
Apache OpenOffice 4.1.1 , Windows XP
Pivandras
Hozzászólások: 8
Csatlakozott: 2015. január 25., vasárnap 23:21

Re: Calc-ban Makroba ágyazott "Kersesés és csere" nem frissü

Hozzászólás Szerző: Pivandras »

Bocs, nagy sietségemben elfelejtettem az ígért Tanulo2 -t mellékelni!
Csatolmányok
Tanulo2.ods
(19.16 KiB) Letöltve 120 alkalommal.
Apache OpenOffice 4.1.1 , Windows XP
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4084
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Calc-ban Makroba ágyazott "Kersesés és csere" nem frissü

Hozzászólás Szerző: Zizi64 »

hogyan lehet a makróhoz nyomógombot létrehozni és csatolni.
A dokumentum felületére is tudsz Űrlapelemet ráhelyezni:
Nézet - Eszköztárak - Űrlap vezérlőelemek: láthatóvá teszed, kiválasztod a Gomb elemet és a dokumentumban az egérrel húzol egy téglalapot, amekkora a gomb legyen. A gombon jobb klikk, és mindent be tudsz állítani rajta - azt is hogy melyik makró rutin fusson a gombra történő kattintáskor.

Továbbá tudsz általános (mindig látható), vagy a dokumentumba ágyazott saját Eszköztárat létrehozni (ami csak akkor jelenik meg, ha pont azt a dokumentumot töltöd be.) Azon aztán a beépített ikonok közül (vagy általad importált ikonok) közül választhatsz és ahhoz hozzárendelheted a makródat.

Persze saját Menüpontot is hozhatsz létre egy makró futtatásához.

És Gyorsbillentyűt is beállíthatsz ugyanezen célból.


Ha bármelyik érdekel, leírhatom részletesebben is.
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].
Válasz küldése