Telefonszámunk: 1-472-0679

Autofilter beállítások mentése

Kezdőlap Fórumok Excel programozás Autofilter beállítások mentése

11 bejegyzés megtekintése - 1-11 / 11
  • Szerző
    Bejegyzés
  • #2524
    Vbacube
    Felhasználó

      Tisztelt Imre, kedves Fórumozók!
      Azt kellene megoldanom, hogy egy Excel táblázat autoszűrő beállításait a file bezárását követően valaki más vissza tudja állítani akkor, ha valamilyen módon megkapja a szűrőbeállításokat. Csak hogy érthető legyen, a táblázat gyakorlatilag üres, az adatai egy lekérdezésből származnak, ami minden megnyitásnál frissül, de soha nincs elmentve. Az egyik munkahelyen eszközölt (egyébként szintén gyakran változó) szűrőbeállításokkal egy másik munkahelyen dolgoznának ugyanebből a file-ból.
      Keresgéltem a neten, és ezt találtam, de nem egészen világos, hogy hogy is kellene működésre bírni a mentésre szolgáló függvényt /Function SaveFilters(…)/ – ld. fentről a második ablakban:

      http://stackoverflow.com/questions/9489126/in-excel-vba-how-do-i-save-restore-a-user-defined-filter

      A Sub ReDoAutoFilter()-rel elboldogultam, de az nem elég, mert az én file-om a visszaállítás előtt mindenképpen mentés nélkül (vagyis üresen) bezárásra kerül, csak a szűrőbeállításokra lesz szükség belőle.
      Excel 2010-ben és 2013-ban egyaránt használnám.

      Kérhetnék ebben egy kis segítséget?

      Előre is köszönöm.

      #2525
      horvimi
      Adminisztrátor

        Szia!

        Nézd meg ezt! Az egyik kedvencem.
        http://excel-bazis.hu/tutorial/villamgyors-valtas-az-autoszuresek-kozott

        Kipróbáltam így:
        – Egy új fájlba bemásoltam egy táblázatot
        – Elmentettem néhány szűrőt
        – Elmentettem a fájlt
        – Kitöröltem a táblázatot
        – Elmentettem újra a fájlt
        – Visszamásoltam a táblázatot
        – Az elmentette szűrőket alkalmaztam

        Működött!!!

        Lényeg, hogy ugyanarra a lapra kerüljön mindig a táblázat.
        Ez azonban teljesül, mert a lekérdezés eredménye ugyanoda kerül a frissítéskor.

        Nagyon kíváncsi vagyok!

        Imre

        #2528
        horvimi
        Adminisztrátor

          Rossz hírem van!

          Kíváncsi voltam, ezért kipróbáltam adatkapcsolatos verzióban.
          Itt az a gond, hogy a frissített külső adatkapcsolatok Táblázatként jelennek meg.
          Így viszont ugye nincs egyéni nézet.

          Ha átalakítom tartománnyá, akkor elvész az adatkapcsolat, ráadásul az egyéni nézet nem ismeri fel a tartományt.

          Access lekérdezéshez kapcsolódtam.

          Úgyhogy ez nem lesz ennyire egyszerű sajnos.
          🙁

          #2529
          horvimi
          Adminisztrátor

            Megnéztem a hivatkozott makrót.
            Ha boldogultál vele, ez kezdetnek bíztató.
            Viszont az elmentett szűrőbeállítások nem kerülhetnek bele a fájlba, ha mentés nélkül bezárják.
            Emiatt csak az lehetséges, hogy egy másik Excel munkafüzetbe, vagy egy TXT fájlba kerül az elmentett szűrés, amit egy makróval be kell olvasni.

            Tehát azt a tömböt, amiben a filterek vannak, ki kell tenni valahová, elmenteni, és a két fájl együtt mozog.

            Más nem nagyon jut eszembe.

            Imre

            #2531
            Vbacube
            Felhasználó

              Szia Imre,
              köszönöm a gyors válaszokat. Nálunk az adatforrás lekérdezése nem táblázatként, hanem normál tartományként jelenik meg, úgyhogy én még reménykedem (Infor-ból származik a lekérdezés, ODBC, MS Query)
              Probléma lehet viszont az új sorok megjelenése a meglévők alatt, azok ugyanis jönnek, és jönnek, és jönnek…
              Arra gondoltam, hogy ezért magát az egyéni nézetet makróval hoznám létre, mindig akkor, amikor az adatok frissültek. Törlöm a korábbit, létrehozom az újat, mentés, aztán használhatják a többiek. Frissíteni csak én fogok, úgyhogy szerintem ez így OK lesz.
              Igen, a makró, amit a linkben küldtem, működik, de a hivatkozott függvénnyel nem igazán tudtam mit kezdeni, de egyelőre akkor hátha nem is kell.
              Kipróbálni csak hétfőn fogom tudni, de amint van eredmény, azt jelzem.
              Üdvözlettel
              András

              #2532
              Vbacube
              Felhasználó

                Közben észrevettem, hogy azzal, amit az előbb írtam az a gond, hogy nincs mentés, az adatokat mindig üres munkalapra töltjük be (ezt nekem is nehéz megszokni). Szóval, nem készítek minden alkalommal új egyéni nézetet, hanem csak egyszer. Felfedeztem a szűrő mellett az „Újból alkalmaz” gombot, amivel az új sorok is bekerülnek a szűrésbe :).
                Ha valami mégsem fog működni, akkor B tervnek marad az általad javasolt két file-os megoldás.
                Még egyszer köszönöm.
                Üdv
                András

                #2544
                horvimi
                Adminisztrátor

                  Mikor sima tartománnyal kipróbáltam úgy, hogy létrehoztam az egyéni nézeteket, üresen mentettem a fájlt, bezártam, kinyitottam, majd bemásoltam egy szűrendő tartományt, nagyobbat, mint az egyéni nézet ,létrehozásakor volt, akkor működött. Az „újra alkalmaz” úgy tűnik, arra való, hogy ha az érvényben lévő szűrés közben új rekordok kerülnének a végére, azokra is érvényesíti a szűrést.
                  A szűrés törlésekor vagy a tartomány törlésekor, a fájl bezárásakor szürke lesz.

                  Majd írd meg mi lett!

                  #2547
                  Vbacube
                  Felhasználó

                    Szia Imre,

                    Kipróbáltam több módon is. Sima tartománnyal nekem is sikerült, de ha a tartomány mögött adatkapcsolat van, akkor az egyéni nézet gomb inaktív, úgyhogy erre sajnos úgy tűnik, nem vezet több út.

                    A makró, amit korábban küldtem, szépen teszi a dolgát, de mivel a korábban alkalmazott szűrőket a file bezárása után kellene visszaállítanom, nem sokra megyek vele.
                    További probléma, hogy a file-nak tetszőleges számú szűrt állapota lehet, amiket utólag külön-külön alkalmazni kellene tudni, úgy, hogy miután megnyitáskor betöltődnek a lekérdezésből a friss adatok, alkalmazásra kerülnek a mentett szűrők.

                    A végleges megoldás az lehetne, ha sikerülne egy olyan kódot létrehoznom, amiben eltárolásra kerülnek a szűrőbeállítások, hivatkozni lehet rá (tehát linkként küldhető pl. Outlook naptárban), és kattintáskor a file a linkbe kódolt szűrőbeállításokkal nyílna meg (mintha pl. beolvasnánk egy vonalkódot).

                    Látsz erre bármilyen lehetőséget?

                    András

                    #2548
                    horvimi
                    Adminisztrátor

                      Az a helyzet, hogy valahová mindenképpen le kell tárolnod a szűrőbeállításokat.
                      Ha ez lehetséges, akkor lehet továbblépni.

                      Ha jól gondolom, a fájl helye adott, csak soha nem mentik el. Ha ez igaz, akkor ugyanabba a mappába letehetnéd a szűrőbeállításokat is egy általad kitalált struktúrájú szövegfájlba.
                      Kicsit bonyolítja a helyzetet, hogy több beállítás is lehet, amiből valahogy még választani is tudni kellene, de ez legyen későbbi probléma.

                      Ha a fájl különben xlsm lehet, akkor a workbook open eseményhez megírhatnád, hogy saját magával egy mappában lévő adott nevű fájlból olvassa be egy tartományba, vagy tömbbe a legutoljára elmentett szűrőbeállításokat. Aztán valami shortcut-ra kidobhat egy menüt, hogy válasszanak belőle.

                      Egy másik shortcut-ra meg elmenthetné az aktuális beállításokat. Aztán szűr egy másikat, és azt meg hozzáfűzheti.

                      DE hogy hogyan döntöd el, mikor kel felülírni a régi szűrőbeállításokat, és mikor kell hozzáfűzni, már megint egy újabb probléma.

                      Érdekes.

                      Különben megoldható, hogy paraméterrel hívjunk be egy munkafüzetet az excelbe, de ezt az excel indításával együtt lehet csak megcsinálni, mert valójában commad line feladat. Így ha már fut az Excel, akkor egy újabb példányt kell indítanod, ami megint új problémákat generálhat. Én nem csinálnám, de itt a lehetőség:
                      https://social.technet.microsoft.com/Forums/office/en-US/bb9fa94f-a1d4-45cd-9279-b12e7a7e69c0/passing-a-parameter-to-an-excel-file-when-opening-it?forum=excel

                      Imre

                      #2551
                      Vbacube
                      Felhasználó

                        Köszönöm az útmutatást, sokat segítettél a gondolatmenet felépítésében.
                        Megküzdöttem vele, de odáig már működik, hogy letárolja a szűrőbeállításokat egy másik xlsm fájlba, majd mentés nélkül bezárva, az újabb megnyitásnál beolvassa onnan a szűrőbeállításokat. 🙂
                        Most az következik, hogy megnyitáskor választani lehessen a több szűrőbeállítás közül.
                        Mivel a tároló file-okból akármennyit létrehozhatok, azt találtam ki, hogy megfordítom a dolgot, és magát a tároló file-t küldöm majd link-ként a felhasználóknak (Outlook naptár), és annak az open eseménye hívja meg a szűrendő adatokat tartalmazó file-t, a tárolóban lévő beállításokkal. Ez azért lesz jó, mert bármelyik szűrőállapot később is bármikor meghívható, nem kell egyiket sem felülírni.
                        Ez a jövő hét feladata. Ha elkészült, jelezni fogom.
                        András

                        #2568
                        Vbacube
                        Felhasználó

                          Elkészült, működik, használják! 🙂
                          Úgy lett, ahogy korábban írtam, a szűrőket tartalmazó fájl hívja meg a lekérdezést tartalmazó fájlt. Egyetlen szépséghibája van a dolognak: ha valaki úgy állítja be az autoszűrőt, hogy az összes, pipával bejelölt érték közül kivesz néhányat, majd menti a beállításokat, az azt tapasztalhatja, hogy a szűrők visszaállításakor a lekérdezésbe bekerült új értékek nem látszanak, hiszen az Excel nem úgy tekinti a szűrést, hogy az összes érték megjelenítendő, kivéve amelyek mellől kivettük a pipát, hanem azokat jeleníti meg, amelyek mellett volt pipa. Ha tehát azt szeretnénk, hogy az újonnan bekerülő értékek alapértelmezésben mind látszódjanak (mert úgy gondolkodunk, hogy minden adatnak látszódnia kell, kivéve azokat, amiket kivettünk) akkor a szűrő-mentés pillanatában a táblázatban szereplő összes értéket is le kellene menteni, majd azokat a betöltéskor összevetni az új értékekkel, és ha van olyan köztük, ami nem szerepel a szűrőkritériumok között, akkor a listát azzal ki kell egészíteni, és ezt a kibővített listát kell alkalmazni a frissített lekérdezésre.
                          Szóval, el lehet még ezzel programozgatni egy darabig…

                          András

                        11 bejegyzés megtekintése - 1-11 / 11
                        • Be kell jelentkezni a hozzászóláshoz.