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.
Nem tudom milyen a tábláid szerkezete, de ha az 1. sorban a mezőnevek, alatta további sorokban az adatok vannak, és más semmi (pl. összegző sor alul stb), akkor a A:D hivatkozással is végezheted az adatbázis műveleteket.
A legegyszerűbb módszer, ami nem igényel magasabb ismereteket ha elnevezed a tartományt. Kijelölöd a kérdéses területet és a szerkesztőléc bal oldalán a név mezőbe beírsz egy nevet mondjuk „alapadatok” Range("A1:E20").Select helyett Range("alapadatok").Select
Azt nem tudom hogy makroba hogy kell integralni, de ha az adathalmazra nyomsz egy "format as table" opciot akkor az ad neki egy nevet (Table1 pl.) amire aztan hivatkozhatsz a makroban.
Visszaolvasva korábbi kérdéseket próbáltam megoldást találni az alábbi problémára, de nem találtam.
A következőről lenne szó. Néhány feladatnál próbálok makró rögzítéssel, majd futtatással gyorsítani a munkámon. Ez több kevesebb sikerrel működik is. Egy olyan számomra VB-ben megoldhatatlannak látszó problémába ütköztem, amiben szeretnék segítséget kérni:
Változó nagyságú adatbázisokon szeretnék bizonyos műveleteket elvégezni, pl törölni. Ehhez valamilyen feltételeknek megfelelő sorokat kellene kijelölni és azt törölni. Viszont ezek a feltételek egy cellában helyezkednek el.
Konkrétan:
Az adatbázis mérete A1:D25, és ebből azokat a sorokat szeretném törölni, amelyikben a D oszlop adatai közül pl. nagyobb mint 100, vagy amelyik pl üres, vagy nem tartalmaz számot stb.
Viszont ha egy hagyományos módon rögzített makróval akarom ezt megoldani, akkor ezt nem érzékeli egy más méretű adatbáziban, csak az eredeti rögzítéskor kijelölt cellákkal hajtja végre a műveletet.
(Nem vagyok otthon VB-ben csak amit saját magam ellestem a makro készítése közben az Excel-től Amit próbáltam: hogy beírok a Range("A1:E20").Select –ben a 20 helyére valami cellahívatkozást, vagy képletet de ez nagy hülyeség…)
A következő makróval tudna boldoggá tenni valaki, nem tudom, mekkora munka ez. (Off. 2007)
A táblázattal azonos könyvtárban levő, fix nevű csv-t (pl. jancsika.csv) nyissa meg, cserélje le benne globálisan a CRLF (CHR(13)CHR(10)) előfordulásokat egy-egy szóközre (a sima LF marad), és mentse el, majd importálja új üres munkafüzetbe a következő paraméterekkel:
tagolt
kódolás UTF-8
tagolójel pontosvessző
szövegjelölő idézőjel
egymást közvetlenül követő szövegjelölők nem számítanak egynek (nincs pipa)
Tud ebbe valaki segíteni?
Az első feléhez nem kéne Excel, de így egy menetben lefutna és nem kéne még egy program (mivel nem én fogom használni).
Alt F11 után beillesztesz egy új modult az Insert/Modul paranccsal, majd ctrl+c ctrl+v -vel bemásolod a makrót.
Utána kijavítod. Ugyanis megfeledkeztem arról, hogy ez a kurva fórummotor elzabrálja a blackslash \ jelet. Tehát a Path után nem "" van, hanem "\". Azaz helyesen a sor:
a = ActiveWorkbook.Path & "\" & "statutso" & b ".xlsm"
Ha akarod, átírhatod még a „statutso”-t filenevet neked valami kedvezőbbre, és persze a dimorphystatmentés makrónevet is.
A makró futtatásakor az ALT F8 listából kiválasztod és Run.
A makró a filet xlsm-be (tehát makróbarátként) menti, tehát nem csak munkalapokat de a makrót is menti. Ez sajnos problémát okozhat, mert a biztonsági beállításaitok nem biztos, hogy engedik megnyitni. Akkor azokat át kell állítani. Vagy ha ezt nagyon nem akarjátok, továbbfejlesztem a makrót, hogy xlsx-ben mentsen.
Köszi szépen! Az irányított beillesztés eszembe nem jutott volna... :)
Erről a makróról tudnál mondani valamit? Semmilyen szinten nem tudok makrózni de ezt a mentés dolgot automatizálnám amennyire csak lehet. Már ha azt csinálja. Mit csinál esetleg hova kell beírnialt(alt+f11?) és hol futattom?
Megcsinálható. Én úgy csinálnám, hogy nem a Munkafüzeteket menteném stabilra , hanem a statfüzetet, pdf-ként, vagy html-ként. Vagy akár xlsx-be is, ha elötte a stat munkafüzet hivatkozásait fixálnám a ctrl+c/irányitott beillesztés/érték paranccsal. Persze nem sima mentéssel mentenék, hanem mentés másként-tel, mondjuk „utsostat” néven. Vagy ami még jobb: utsostat&datum néven.
Ezt viszonylag egyszerűen bebillentyüzheted, de itt egy makró is rá:
Most kértés merült fel bennem hogy meg lehet-e oldani, hogy van egy összesítő táblázatom ami különböző excel file-okból szedik ki az infót a felsővezetésnek.
Kérdésem az hogy meg lehet-e oldani hogy az utolsó infókat "jegyezze meg statikusan"(mintha statisztika.xlsx-be pötyögtem volna be unalmamba) az excel vagy minden Munkafüzetet le kell mentegetnem mindig a hivatkozások miatt pdf-be vagy html-be?
Adok nektek egy jó tanácsot teljesen ingyen! Sose rejtsétek el azt az oszlopot, ahol a szűrő be van kapcsolva, ha látni akarjátok az összes sort! Ááááá....
Tudja valaki, hogy az hol van leírva, hogy a#=2*b% típusú képletben a double adattipusú a# változó értéke nem léphet ki az integerekre megadott intervallumból? És hogy miért van ez?
A kérdésre válaszolva: msgbox csak akkor jön fel ha engedélye van rá. A konkrét fileben egy form jön fel amit a megrendelőnek ki kell tölteni. Semmi másra nincs jogosultsága. A raktári oldal csak két dolgot tehet: elvégezte a műveletet illetve nyomtani akar. A megfeelő helyre pipát tesz. Változtatni a táblázatban egyik sem tud.
Nincs gazdagép. Van egy Excel file a hálózatban ami megosztott. A különböző gépek shortcut-tal kapcsolónak rá. A mikor valaki műveletet kezdeményes akkor egy makró megnézi, hogy milyen jogosultsági csoportba tartozik. Csak azt engedélyezi amit neki elő van írva. Két fő csoport van. Az egyik a raktár, másik az összes többi. Az első indításkor a gépeken feljön egy kérdés: raktár vagy megrendelő vagy. Ez a kérdés többször nem jön fel.
Az hogy viselkedne megosztott munkafüzetnél, ha selection change eseményre írsz egy sima msgbox-ot a változás helyével/tartalmával? Csak a gazdagépen jelenne meg?
Amikor valaki befejezi az adatbevitelt akkor azt egy gombbal lezárja ami elindít egy kb. így kinéző makrót ami 5 perc múlva teljesképernyőre felnyitja a megnevezett gépen a kicsire csukott lapot:
Esetleg vmi segedprogram ami figyeli h az adott file mikor valtozik (timestamp-et/meretet nezi) es sikit ha valtozott? Konkretan nem ismerek ilyet, de biztos van milliofele.
Azt miért nem lehet megcsinálni, hogy a frissitő utasítás egy excel formázási parancsot is küld?
Pl. Feltételesen formázottak a raktári munkalapok, teszem azt ha A1=0 akkor a cellák szine normal, ha A1=1 akkor meg sárga. Ha ezekután a frissitéssel megy az A1=1 parancs is, akkor a munkalapok sárgára váltanak, esetleg valami szöveg is láthatóvá válik, amit aztán a raktáros, miután tudomásul vette a változást, A1=0 -val visszavált.
Egy érdekes és szokatlan probléma megoldásához kérnék segitséget.
Adott egy excel file egy belső hálózatban ami meg van osztva egy vagy több raktári géppel illetve a raktárnak a megrendelést feladó gépekkel. Bárhol történik valami változás az 5 percen belül megjelenik az összes gépnél. Ez rendben működik egy kis hibával. A raktári gépeken szükség lenne valami jelzésre, hogy változás történt azaz megrendelés érkezett. Jó megoldás lenne az automatikus megnyitása a filenek vagy a kicsire csukott excel lap felugrása ezetleg egy pop-up balak automatikus felugrása.
Másképpen mondva azt hívom frissítésnek, amikor egy ikonra kattintással vagy menüpont kiválasztásával vagy billentyűkombinációval bezárás nélkül frissül valami.
Akkor mégiscsak ugyanarról beszélünk. Mert ezeket az excel mind tudja: Office-gomb/Legutóbbi dokumentumok/ 1.számú file megnyitása
E kattokhoz rendelhetsz ikont is, billentyű kombinációt is.
Egyébként szerény véleményem szerint akkor igazán hasznos a frissítés, ha nem csak a frissült állapotot mutatja, hanem magát a frissitést is jelzi. Hasonlatosan a doc-filek korrektura összehasonlításához. Ilyet az excel valóban nem tud. Tudtommal legalábbis.
Alapból jól látod, Excelben nem lehet. Ha jól értem, a Google Docs-hoz hasonlót szeretnél, valaki módosít, a másik pár pillanat múlva már látja magánál a módosítást. A Sharepont 2013 segítségével és új Office verzióval meg lehet majd csinálni.
Köszi, ezeket is tudom. A frissítés célja az, hogy lássam, ha változik valami. Feltettem egy egyszerű kérdést, amire senki nem meri azt mondani, hogy nem lehet, pont, hanem ehelyett mindenféle ekézéseket kapok. Köszi szépen. Lapozzunk.
Milyen célból kellene neked frissíteni? Ha az Excel folyamatosan jelezné, hogy a hálózaton lévő fájlban a felhasználók módosításokat végeznek, az felesleges energia pazarlás lenne. Én biztos gutaütést kapnék, hogy két percenként jönne a figyelmeztetés, hogy valaki módosította az adatokat. Amikor olvasásra kivetted a fájlt, kvázi tudomásul vetted, hogy az akkori állapotot látod. Ha egy óra múlva meg akarod nézni, akkor újra megnyitod. Nem kell bezárnod sem, csak újra rá kell nyitni.
Egy esetben működik egy frissítésnek nevezhető funkció. Ha valaki megnyitja a fájlt, majd ezután te is megnyitod, akkor te már csak olvasásra tudod megnyitni, azonban feldob egy ablakot, amiben felajánlja, hogy értesít, amikor felszabadul a fájl.
„A fájl zárolva van szerkesztésre. Megnyithatja ’Olvasásra’, vagy válassza az ’Értesítés’ gombot, ha az olvasásra való megnyitás mellett értesítést is kér, mikor a dokumentum használatát befejezték.”
Ha másik felhasználó bezárta a fájlt, akkor a következő üzenetet kapod:
„A fájl már elérhető szerkesztésre. Szerkesztéshez válassza az ’Írásra is’ gombot.”
Másképpen mondva azt hívom frissítésnek, amikor egy ikonra kattintással vagy menüpont kiválasztásával vagy billentyűkombinációval bezárás nélkül frissül valami.
Nagyon sok weboldal egyébként még jelzi is, hogy mikor kéne frissíteni! És nem teljes újratöltéssel. Gondolom, AJAX van ezek mögött.
De ne csináljunk már úgy, mintha a piros lámpánál üresbe tenni az autót és a zöldnél egyesbe ugyanaz volna, mint leállítani a motort, kiszállni, bezárni, visszaszállni... A köznyelvi szóhasználat szerint értettem a frissítést, ahogy pl. egy könyvtárlistánál is. A weblap pont rossz példa, mert a weblapok képesek saját magukat frissíteni mindenféle technikákkal még akkor is, maikor nem akarom, de ott se szeretném bezárni a böngészőt vagy azt a fülét, majd újra nyitni egy üres fület, újra beírni az URL-t és újra legörgetni a lap közepéig. Egész egyszerűen nem ezt hívják frissítésnek.
Szóval lényegében azt mondtad, hogy nem lehet frissíteni, csak jó bonyolultan.
Újra betöltés alatt bezárás/megnyitást értesz? Mert az nem frissítés.
Már miért nem? Amikor F5-tel frissítesz egy weblapot, akkor is ez történik, újra megnyitod a weblapot, ami felülírja a régit. Vagy te mit nevezel frissítésnek? Írd meg kérlek, hagy okosodjak.
Újra betöltés alatt érthetem a bezárás/megnyitást is, de a bezárás az excelnél ugyanúgy elhagyható mint a weblapok újra megnyitásánál.
A calculate alatt az F9-t értem. Ha csatolásban vagy a másik fájllal, akkor lehet ezt alkalmazni. De az egyidejűleg megnyitott munkafüzetek között nincs csatolás. Legalábbis E.István 21368 sz. hsz-e alapján ezt szűrtem le. De te is valami ilyesmit írtál, amikor írtad hogy nincs real time kapcsolat a megnyitott munkafüzetek között.