Az „Excel” fórum célja, hogy keretet adjon az Excel felhasználók széles táborának tapasztalataik megosztására, és lehetőséget a segítséget kérőknek. Az alábbi összefoglaló azért készült, hogy segítse a helyes kérdésfeltevést.
– Írd le szabatosan a problémát. Úgy fogalmazz, hogy ne csak te magad, de a szakértő is megértse, mire szeretnél választ kapni.
– Írd le, hogy milyen verziójú Excellel dolgozol. (Vagy ha nem – ill. nem csak – Excel, akkor micsoda?)
– Írd le, hogy milyen úton indultál el, és hol akadtál el rajta.
– A kérdés megértése szempontjából sokat segíthet, ha feltölteszt egy képet, amin látszik, hogy mit szeretnél, vagy illusztrálja azt.
– Még jobb, ha feltöltesz egy minta munkafüzetet valahová (pl. data.hu). Feltöltés előtt távolítsd el belőle a nem publikus adatokat.
– Ha a feladat jellege olyan, célszerű az "előtte" és "utána" állapotokat bemutatni. (Miből kellene csinálni mit?)
– Ha VBA kódon kell javítani, másold be a releváns kódrészt. Rövid kód mehet hozzászólásba, hosszú kód inkább ide: http://pastebin.com/
– Ha valami nem úgy működik, ahogy kellene, add meg a rendellenes viselkedés jellemzőit, a hibaüzenetet, és a hibát okozó programsort.
Pontosítsunk a fogalmakon, a közös nyelv érdekében.
A "munkafüzet" az az excel fájl maga, aminek valami.xlsx a neve.
A munkafüzet egy vagy több "munkalapot" tartalmaz. A Munkalap az az 1048576 x 16384 cellát tartalmazó nagy cellatér, amelyeket sokan "füleknek" neveznek, és alapértelmezésben a Munka1, Munka2, stb. nevet kapják.
A táblázat pedig a munkalapon egy teszőleges téglalap alakú cellatartomány.
Ha jól értem, akkor azt szeretnéd, hogy a munkafüzeted 3. lapjára, bizonyos cellákba fixen bekerüljenek adatok. Az általad leírt viselkedés természetes, a cellába írt képlet a bemenő paraméterek változása után aktualizálja az értékét. A célod elérésére két lehetőséget látok:
1) ha a számításhoz szükséges feltételek/adatok a 3. munkalapon is adottak, akkor nem a 2. munkalapon kellene mókolni a napi teljesítmény manuális kiszámolásával, hanem a 3. munkalapon a kívánt cellába kellene beírni azt a képletet, amely ezt kiszámolja.
2) Ha ez nem lehetséges, akkor egy makró (programkód) tudná a manuálisan kiszámolt értéket áttenni a megfelelő helyre. A makró megírásához több infó kellene, a munkalapok felépítéséről, pl. mit kell áttenni, mi alapján lehet megtalálni a cél cellát, stb.. Ezen kívül meg kellene határozni, hogy milyen akcióra vagy történésre induljon a makró. Ez lehet gombnyomás, duplakatt egy adott cellára, a munkafüzet mentésa, vagy sok minden egyéb is.
Segítséget szeretnék tőletek kérni. Nem vagyok profi exceles, de próbálom az életem megkönnyíteni.
Kérdés: hogyan lehet megoldani, hogy eredmény kerüljön át egy munkafüzetre?
A kiinduló, egy táblázatban három munkafüzet van. Az első az adatokat tárolja (termékek, normatívák, nevek, dátum lista). A második munkafüzeten van két lista érvényesítés egy dátum és egy név. Ez legördíthető ennyi.
Azt szeretném elérni, hogy ha kiválasztom a dátumot a listából, a nevet a listából és az alatta lévő részen a napi teljesítményt kiszámolom, akkor a harmadik munkafüzetbe a szintén kiválasztott naphoz és személyhez rendelje azt az összeget a dátum név metszésében lévő cellához, és az eredmény maradjon is ott meg állandó jelleggel.
Remélem megfelelő volt a leírás. Nem nagyon találtam rá megoldást, mert megpróbáltam, de abban a pillanatban hogy a második munkafüzeten a listán nevet és dátumot váltok kitörli az eredményt.
Fel tudnád tölteni valahová azt a jelszavas fájlt, amiben a programom nem talált meg semmit? És megírni, hogy mit kell keresni benne? Letesztelném, hogy miért nem működik, Nekem ugyanis mindig megtalálta, amit kellett.
Elsőre úgy gondoltam, de csak azért mert nem tudtam, hogy úgy bonyolultabb :)
Majd egy szimpla másolással megoldom, hogy a fájlok egy könyvtárban legyenek, az nem gond.
A szókereső program tesztelése során arra jutottam, hogy a jelszóval védett fájlban nem találja meg a keresett stringet, amellett, hogy a megnyitható oszlopban az igaz szó szerepel. Tehát elvileg a jelszavast is meg tudja nyitni. A jelszót nem ronthattam, el, teszt jelleggel csak egy "a" betű volt.
(3db xls fájlt csináltam, az egyik nem jelszavas, a másik kettő jelszavas eltérő tartalommal, de a nem jelszavas adatai is szerepelnek bennük, a nem jelszavasban megtalál mindent, a jelszavasokban semmit).
Pedig ez a bekérős formula nagyon jó lenne, a még nálam gyengébb userek is használni tudják :)
Mármint mire nincs kész megoldás? Hiszen Te magad írtad nemrég, hogy a Jimmy által küldött szókereső program elvégzi a dolgot. Én nem próbáltam ki, csak elhittem. Ha tényleg elvégzi, akkor minek kellene ezen görcsölni?
Jogos. Ha szükséges lesz, és nincs kész megoldás rá valahol, akkor megpróbálom. Egyébként a permutációra végül a saját szórakoztatásom céljából megcsináltam. Így már több elem permutálása is megoldható lenne. Csak nem tettem közkinccsé. Gyakorlati haszna úgysem sok lenne.
Pontosítom a kérdést: Remélem, nem úgy gondolod, hogy az adott könyvtár összes alkönyvtárában, meg azok alkönyvtáraiban? Mert az túl bonyolult lenne.
A legjobb, ha egy könyvtárban összegyűjtöd a fájlokat. Az nem lesz gond.
De ha több könyvtárról van szó, akkor kellene egy lista azokról a könyvtárakról, amelyekben keresni kell a fájlokat. Ez a lista lehetne a programot tartalmazó munkafüzet egyik munkalapján, aminek legyen a neve például "Könyvtárak". Ebben az esetben az eredményt tartalmazó munkalapnak is adjunk nevet, mondjuk "Találatok" (De a neveket majd tetszésed szerint írd meg).
Ez alapján meg tudom oldani a programban, az automatikus keresést.
Egyébként a Jimmy által küldött szókereső program elvégzi ugyanezt. Megadod a könyvtárat. Szkenneled (ekkor végigmegy az alkönyvtárakon, kigyűjti a fájlokat). Aztán megadod a keresendő kifejezést, a használt jelszót/jelszavakat, majd egy új munkafüzetbe listázza az eredményt.
Hát, én nem próbáltam ki... szóval lehet, hogy kamu. De ez furcsa, mert nem találtam más, hasonló applikációt, pedig nem tűnik olyan egetrengetőnek a feladat.
Na akkor küldök egy mintát, hogy milyen úton tudnál elindulni. Persze nem ismerem az adatállományaidat, ezért a programban kézzel kell meghívnod a fájlokat. Ezt nyilván több száz fájllal nem fogod megtenni. De ha majd kitalálsz egy eljárást, hogy milyen módon lehet majd programba írni a feldolgozandó fájlok listáját, ahhoz már könnyű lesz hozzáigazítani a programot.
Szóval nyiss egy új excel munkafüzetet, és a következőt másold be a VBA ablakba. A legelső sorban az x-ek helyére írd be a jelszavadat és a keresendő kifejezést.
A program kéri, hogy válaszd ki a fájlokat (később majd ezt automatizálhatjuk), megnyitja azokat, végignézi azok munkalapjait, és ahol talál egyezőt, úgy az
A oszlopba kiírja találatokat (munkalaponként csak az elsőt, de ezt is lehet módosítani).
Próbáld ki néhánnyal, aztán ha ez jó, akkor majd térjünk vissza az automatizálásra.
Const jelszo As String = "xxxx", keresokif As String = "XXXX"
Option Explicit
Sub beolvas()
Dim hely As String, aktwb As Workbook, aktws As Worksheet, kiirws As Worksheet, filenev As Variant, utolsosor As Long, mf As Long, sor As Long, _
eredm As Range, mfnev As String
Set kiirws = ThisWorkbook.Worksheets(1) ' Ide írjuk ki az eredményeket
Hát én nem is tudom mit mondjak.... nagyon szépen köszönöm, kb 2 órás melóval rendezve van minden..... na nem mintha érteném a függvényedet... de köszönöm😅
De szerintem a hivatkozott oldal ugyan azt állítja magáról, hogy jelszóval védett fájlokban keres szövegeket, majd ezután végig a jelszó megtalálás lehetőségéről ír.
Egyébként meg szerintem ez inkább egy lehúzós oldal, ami kecsegtet egy 30 napos fully-functional verzióval, csak az éppen nem érhető el. Az meg nem derül ki, hogy ténylegesen mit kap az érdeklődő az 50 ezres befizetés után. Nem hiszem el, hogy tényleg tud keresni a védett dokumentumokban.
Egyébként meg egyetértek veled, hogy ha az illetékesek meggyőzése nem megy, akkor programmal oldható meg a dolog. Persze ha a kérdező meg tudja adni a paramétereket, amelyek segítségével meg lehet találni a fájlokat.
Miért működne? Arra készült, hogy keresd meg a biztonsági lyukat a jelszavas védelemmel kapcsolatban. (It was designed to search and find security holes related to password protection.)
Szerintem nem létezik megoldás arra, hogy jelszóval védett Office fájlokat meg lehessen nyitni azok ismerete nélkül. Legfeljebb a nagyon rövid (3 karakter), vagy nagyon primitív (12345) jelszavak megtalálására van esély.
Igen erre én is gondoltam, de sajnos az adatokat többen is használják, és évek óta így készítik és használják. Ezen az adott terület illetékesei nem akarnak változtatni. Pl ha valakinek el kell küldeni az adott fájlt, akkor azzal meg vacakolni kell. Olyanok is használják akik nem értenek ezekhez a dolgokhoz. :( (pedig milyen egyszerű lenne)
Ha nekem kéne ezt megoldani, akkor nem vacakolnék programozással, hanem összeszedném ezeket a fájlokat egy helyre (bár nem feltétlenül egyetlen mappába), aztán mindegyikről levenném a jelszót, és gyártanék nekik egy jelszóval védett mappát például TrueCrypt-tel vagy BitLocker-rel (http://truecrypt.sourceforge.net/). Ha ezt a védett mappát megnyitjuk, akkor utána már lehet benne keresni a kulcsszavakra.
A véleményeteket szeretném kérni, hogy szerintetek ebben az esetben milyen irányba kellene elindulni a megoldással? Adott, viszonylag sok (több 100) excel fájl,több könyvtárban, ezekben kellene megkeresni egy-egy adott szót (vagy több szót: pl nevet). Egyesével megnyitogatni nem lenne túl hatékony :) Eredményként elég lenne a fájl neve, hogy ebben/ezekben megtalálható az adott szó. A probléma azzal "súlyosbodik", hogy a fájlok jelszavasak, a fájl is és a munkafüzet(ek) is. (a jelszót természetesen tudom, és minden esetben ugyanaz a jelszó). Mit javasolnátok ? Köszönöm előre is !