Új menüfül(ek) és menüpontok excelben

Új menüfül(ek) és menüpontok excelben
2020-06-13T10:07:35+02:00
2020-06-27T19:28:55+02:00
2022-10-15T21:16:13+02:00
Kds
Sziasztok!

    Szeretnék úgy létrehozni új menüfüleket (?), (ne a Bővítmények alá hozza létre) ezen belül pedig parancsikonokat a menüszalagon (ribbonon),, hogy azok minden indításkor létrejönnek, és kilépéskor eltűnnek. Ezek pedig saját, az adott excelben létező makrókra mutatnának. Hab a tortán, hogy elrejteném a többi menüfület, mint pl. Nézet, stb. Mindezt persze VB-ben. Ja, és a ribbon editor nem megoldás, minden ebben az egy szál excel fájlban kell működjön, a felhasználó beavatkozása nélkül. Rengeteget kerestem a neten, de nem találtam működő megoldást.
Előre is köszönöm a tippeket!
Üdv:
Kds
Mutasd a teljes hozzászólást!
Heló!

Nos az első lépés, hogy hozd létre azt a munkafüzetet, amiben az egyedi menüszalagot elkészíted.
Ezután ebbe a munkafüzetbe másold át azokat a modulokat, amiben a saját makróid, eljárásaid vannak.
1 lépés: Nyisd meg mind a két munkafüzetet. (A menüszalagost, és a saját makróidat tartalmazót.)

2. lépés:  Zárd le a sajátod és dolgozz tovább abban amiben most már benne vannak a makróid és az egyedi menüszalag.
3. lépés: Visual Basic Editor nézetben fogsz találni egy basCalbacks nevű modult. Ebben vannak azok az esemény makrók amelyek kezelik az egyedi menüszalag vezérlőit (pl gombok)
4. lépés: Keresd meg a OnActionButton eljárást. Ebben lesz egy Select elágazás.
5. lépés: Mos emlékezned kell arra, hogy melyik gombnak milyen nevet adtál. Ezt kell beírnod a Case mőgé. Pl Case "Gombon_neve" Ettől, ha erre a nevű gombra kattint valaki akkor az eljárás belép ebbe az elágazási ágba.
6. lépés: A Case mögé írd be annak a makrónak (eljárásnak a nevét, amit szeretnél elindítani.

 Mivel a select case elágazással több felé is elágazhatsz, minden saját makrót úgy indíthatsz el, hogy a gomb nevét használod fel arra, hogy bejuss a megfelelő elágazási ágba, és a mekród nevét beírva elindíthatod azt.

Hajrá! Sok sikert , drukkolok

The Fool
Mutasd a teljes hozzászólást!

  • Szia! 

    Nagy fába vágtad  fejszédet.  Ugyanis a menüszalag az adott munkafüzet része. A menüszalag megadása, leírása XML dokumentum-nyelven adható meg. Ehhez azt az Excel munkafüzetet, amiben egyedi menüszalagot szeretnél létrehozni át kell alakítani ZIP kiterjesztésű fájllá. Ehhez a munkafüzet kiterjesztését kell átírnod xlsm helyett zip-re. Ha ezzel megvagy, akkor hozzá fogsz férni az Excel munkafüzetben létrehozott mappákhoz. Itt létre kell hoznod egy  CustomUI mappát. Ebbe kell beletenned egy olyan xml fájlt, ami leírja a menüszalagodat. Ez persze nem elég, mert ez csak a dokumentum leírás. Lesz egy _rels mappa is Ebben lesz egy _rels.xml fájl. Ebben kell megadnod azt a hivatkozást, ami kezeli a customUI mappában leírt customUI14.xml fájlban leírt menüszalagnak.

    Az xml fájlok szerkesztésé használd a Nopepad++ ingyen letölthető szövegszerkesztőt. Ha sima motepad vagy word szövegszerkesztőt használsz nem fog működni. 

    Nem írom tovább, mert ennek a leírásához és működtetéséhez sokkal több dologra lenne szükség, beleértve a komplett menüszalag leíró utasításokat is.  Azért csatolok egy pdf fájlt, amiben ez is benne van. Nem hiszem, hogy túl nagy örömöd lesz benne.

    A másik megoldás az, hogy mindent elfelejtesz, amit eddig leírtam, és helyette letöltesz egy menüszalag szerkesztő programot. Ennek lesz egy próba változata, ami korlátozza a létrehozható fülek és gombok számát. Tudom, hogy mindenki mindent ingyen szeretne, de a teljes változat pénzbe kerül. Azt, hogy ez neked megéri vagy sem majd te eldöntöd. Én megvettem
    Íme a hivatkozások:
    Ribbon kreator
    Notepad++ ez ingyenes

    Sok sikert, remélem ez valamit segített.

    Üdv
    The Fool
    Mutasd a teljes hozzászólást!
    Csatolt állomány
  • Szia Fool!

        Nagyon köszönöm a megoldást! Az a kérdés, hogy a makrókra is működik ez a program? Mert gyönyörűen létrehozza a menüt, meg mindent, de saját makrókra is be tudom állítani? Ha nem, akkor van lehetőség ezt dinamikusan létrehozni akár a Bővítmények menülap alatt?
    Mutasd a teljes hozzászólást!
  • Heló!

    Nos az első lépés, hogy hozd létre azt a munkafüzetet, amiben az egyedi menüszalagot elkészíted.
    Ezután ebbe a munkafüzetbe másold át azokat a modulokat, amiben a saját makróid, eljárásaid vannak.
    1 lépés: Nyisd meg mind a két munkafüzetet. (A menüszalagost, és a saját makróidat tartalmazót.)

    2. lépés:  Zárd le a sajátod és dolgozz tovább abban amiben most már benne vannak a makróid és az egyedi menüszalag.
    3. lépés: Visual Basic Editor nézetben fogsz találni egy basCalbacks nevű modult. Ebben vannak azok az esemény makrók amelyek kezelik az egyedi menüszalag vezérlőit (pl gombok)
    4. lépés: Keresd meg a OnActionButton eljárást. Ebben lesz egy Select elágazás.
    5. lépés: Mos emlékezned kell arra, hogy melyik gombnak milyen nevet adtál. Ezt kell beírnod a Case mőgé. Pl Case "Gombon_neve" Ettől, ha erre a nevű gombra kattint valaki akkor az eljárás belép ebbe az elágazási ágba.
    6. lépés: A Case mögé írd be annak a makrónak (eljárásnak a nevét, amit szeretnél elindítani.

     Mivel a select case elágazással több felé is elágazhatsz, minden saját makrót úgy indíthatsz el, hogy a gomb nevét használod fel arra, hogy bejuss a megfelelő elágazási ágba, és a mekród nevét beírva elindíthatod azt.

    Hajrá! Sok sikert , drukkolok

    The Fool
    Mutasd a teljes hozzászólást!
  • Azért, hogy egyszerűbb legyen létrehoztam egy minta munkafüzetet ezt csatolom
    Mutasd a teljes hozzászólást!
    Csatolt állomány
  • Basszus a lépéseket elszúrtam!!! Az első lépésben másold át a saját makróidat a menüszalagos munkafüzetbe Bocsi
    Mutasd a teljes hozzászólást!
  • Sikerült?
    Mutasd a teljes hozzászólást!
  • Nagyon köszönöm a sok segítséget, magamtól nem sikerült volna! A sajátomat még csak most írom, de a tiéd alapján sikerülnie kell!
       Köszi még egyszer!
    Mutasd a teljes hozzászólást!
  • Szia!
     Biztos menni fog. 
    Ha nem akarod megvenni, akkor a következőt teheted. Miután a próba változatban létrehoztál annyi gombot, amennyit a program enged, írd át a fájl kiterjesztését zip-re. Bontsd ki a zip fájlt. Majd ezután a munkafüzet CustomUI mappájából a Notepad++ programmal nyisd meg a CustomUi14.xml fájlt. Ott meg fogod találni a Button kezdetű sorokat

    <button id="btn0" size="large" label="Button 0" tag="RibbonName:=;inMenu:=;CustomTagValue1:=;CustomTagValue2:=;CustomTagValue3:=;CustomPicture:=;CustomPicturePath:=" onAction="OnActionButton" getVisible="GetVisible" getEnabled="GetEnabled" /> <button id="btn1" size="large" label="Button 1" tag="RibbonName:=;inMenu:=;CustomTagValue1:=;CustomTagValue2:=;CustomTagValue3:=;CustomPicture:=;CustomPicturePath:=" onAction="OnActionButton" getVisible="GetVisible" getEnabled="GetEnabled" />
    Ezeket másold le még-egyszer maguk alá. Az id utáni részt írd át valami másra, mint ami már volt. A label mögé írd be azt a nevet, amit szeretnél látni a gombon. Így annyi gombot hozhatsz létre amennyire szükséged van.
    Ha új utasításcsoportot szeretnél, akkor a <group>  .....   </group> részt ismételd meg.

    Mindezek után a zip fájlból töröld a CustomUi14.xml fájlt, és másold be a helyére a módosítottat. Így lehet megkerülni a program korlátait.

    A licencelés nem egy egyszerű kód, hanem egy fájl a saját adataiddal. Ezt egy fájlban kapod és az érvényesítés után úgy néz ki, mint a csatolt png képen.

    Üdv The Fool
    Mutasd a teljes hozzászólást!
    Csatolt állomány
  • Köszönöm még egyszer!

    Végül is megvettem a teljes verziót... támogassuk a hasznos programokat
    Mutasd a teljes hozzászólást!
  • Már sikerült elkészítenem, és minden szépen működik, de egy kérdésem maradt. Van pár Togglebutton-om, ezeket a belépéskor hogyan tudom beállítani arra az értékre, amit előző kilépéskor eltároltam? Mert ha nem állítom be, mindig az alapértelmezés szerint állnak be...
    Köszi!
    Kds
    Mutasd a teljes hozzászólást!
  • Szia!

    Csatolok egy fájlt. Ebben van sokféle beállítás. Ebből ki fogod tudni nyomozni. Remélem.

    Üdv
    The Fool
    Mutasd a teljes hozzászólást!
    Csatolt állomány
  • Szia!

      Köszi, izgalmas lehetőségek voltak benne, és végül rájöttem, hogy a CallbackGetPressed eljárást hívja minden indításkor, és ezzel remekül lehet mindent beállítani.

    Üdv:
    Kds
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd