Avatar billede hco Nybegynder
29. januar 2001 - 23:36 Der er 16 kommentarer og
1 løsning

AddIns, Menuer og Funktioner

Jeg vil gerne lave min helt egen menu, hvor jeg kan kalde en række funktioner som jeg har defineret.

Eks.:

menu
  punkt 1
  punkt 2


Funktion
  Afunc
  Bfunc

Menuen skal jeg kunne koble sammen med funktionerne - dvs. eks. kalde funktionen \"Afunc\" ved klik på menupunktet \"punkt 1\".

Jeg skal bruge det til et firma, med en masse brugere, så jeg ville gerne have at alle fik denne menu når de startede excel, og automatisk fik indlæst XLA\'en.

Spørgsmål:

Hvordan laver jeg XLA\'en så den kan distribueres?
Hvordan laver jeg menuen så den kan distribueres?
Hvordan skal denne lille løsning \"Deployes\".




Avatar billede kjalle Nybegynder
29. januar 2001 - 23:44 #1
hehe lyder som et større projekt ..... må indrømme jeg ikke aner noget om det du skal .... men hvis du skal have \'ordentlige svar\' kræver det nok mere end 60 point :o(
Avatar billede ed Nybegynder
30. januar 2001 - 00:12 #2
Lige umiddelbart har jeg kun et hurtigt bud som jeg mere eller mindre finder på mens jeg skriver.
Din menu kan du oprette ved at højreklikke på menubaren, vælg Tilpas og under Kommandoer vælg Ny Menu. Denne kan du nu trække op på en hvilken som helst anden menubar. Ved nu at trykke på denne kan du tilføje alle mulige underpunkter, eksempelvis makroer.
Gemmer du nu denne XLA er du vel på vej. Nu kan du eksempelvis pakke den som en selfextracting zip fil der automatisk pakker ud til ..\\Microsoft\\Excel\\XLstart folderen. Heri mener jeg der ligger de ekstra ting der starter når excel også gør det. En anden mulighed er at maile det rundt sammen med en .bat fil der bare placerer den i folderen.
Som sagt er dette bare hjernespind, jeg har kun én computer herhjemme, så jeg kan ikke lige tjekke om det rent faktisk virker, men håber at det hjælper...

Ed
Avatar billede askims Nybegynder
30. januar 2001 - 08:27 #3
Hvis du lægger din xla i folderen programmer\\Microsoft Office\\Office\\XLstart (afhænger hvor man har installeret officepakken), så vil den starte automatisk, når xl starter. Så hvis officepakken er installeret på 20 forskellige directories så vil det sikkert ikke være løsningen at lave en bat-fil, med mindre du kan få denne til at søge efter stien ...\\xlstart

Mht. til din menu så har du under windows-bib en eller nogle .xlb-filer til at ligge. Det eneste problem ved at erstatte brugerens xlb-fil er hvis brugeren selv har været inde og korrigere i hans menu/værktøjslinier.

ASKIMS
Avatar billede askims Nybegynder
31. januar 2001 - 13:01 #4
Du (hco) kan da ikke bare afvise svarene uden lige at give en lille kommentar. Har ed og jeg misforstået dit spørgsmål, eller vidste du det i for vejen eller hvad?

ASKIMS :(
Avatar billede hco Nybegynder
31. januar 2001 - 13:38 #5
Sorry, det gik lidt stærkt ;-)

Problemet er at jeg gerne vil have en løsning med en central placering af filerne.

Ydermere så har jeg stadig problemer med at få adgang til funktionerne inde fra Excel, når man har loadet XLA\'en.

Jeg har ledt og ledt hos Microsoft og ikke fundet noget svar på hvordan man gør.





31. januar 2001 - 22:40 #6
Hejsa

Det nemmeste svar er VBA - en lille stump kode, som danner en menu, det skal ikke ret meget til.
Regnearket med denne menu gemmes som en .xla fil.

Der er to steder filen kan placeres alt efter temperament.

c:\\programmer\\microsoft office\\office\\xlstart
eller
c:\\programmer\\microsoft office\\office\\bibltek
hvis det bliver den sidste, så kan xla filen tilføjes via Funktioner~Tilføjelsesprogrammer inde i Excel.
Avatar billede hco Nybegynder
31. januar 2001 - 23:20 #7
Det har jeg tænkt på - hvis du giver mig kode stumpen så er det dine points ;-)
31. januar 2001 - 23:43 #8
Her er koden på en menu. Skal du have hjælp til udfærdigelse af menu\'en samt menupunkternes handling og xla filen, så smid en mail.

flemse@post3.tele.dk

Here goes:

Public MenuObject As CommandBarPopup
Public SubMenu As CommandBarPopup
Public MenuItem As Object
Public SubMenuItem As CommandBarButton
Public Const strMenuName As String = \"MyMenu\"
Public Const strMenuNo As String = 11
Public Const intBarsNo As Integer = 1

Sub Auto_Open()
\'  Make sure the menus aren\'t duplicated
    DeleteMenu strMenuName, intBarsNo

    \'Add MainMenu
    CreateMainMenu strMenuName, strMenuNo, intBarsNo
   
    \'Add to MainMenu - ControlPopup and ControlButton
    \'MenuItem
    CreateMenuItem \"Item &1\", \"Menu01\", \"71\", False
    CreateMenuItem \"Item &2\", \"Menu02\", \"72\", False
    \'SubMenu
    CreateSubMenu \"&Group 1\", True
        \'SubMenuItem
        CreateSubMenuItem \"GroupItem &1\", \"UMenu01\", \"71\", False
End Sub

Private Sub CreateMainMenu(strMenuName, strMenuNo As String, intBarsNo As Integer)
\'En ny hovedmenu
    Set MenuObject = Application.CommandBars(intBarsNo).Controls.Add(Type:=msoControlPopup, _
                    Before:=strMenuNo, Temporary:=True)
        MenuObject.Caption = strMenuName
End Sub

Private Sub CreateMenuItem(strCaption, strOnAction, strFaceId As String, bolBeginGroup As Boolean)
\'Et menupunkt punkt direkte i hovedmenu\'en
    \'MenuItem
    Set MenuItem = MenuObject.Controls.Add(Type:=msoControlButton)
        With MenuItem
            .Caption = strCaption
            .OnAction = strOnAction
            .FaceId = strFaceId
            .BeginGroup = bolBeginGroup
        End With
End Sub

Private Sub CreateSubMenu(strCaption As String, bolBeginGroup As Boolean)
\'En menugruppe i hovedmenuen
    \'SubMenu
    Set SubMenu = MenuObject.Controls.Add(Type:=msoControlPopup)
        With SubMenu
            .Caption = strCaption
            .BeginGroup = bolBeginGroup
        End With
End Sub

Private Sub CreateSubMenuItem(strCaption, strOnAction, strFaceId As String, bolBeginGroup As Boolean)
\'Et menupunkt i en menugruppe
    \'SubMenu Item - UnderMenuPunkt
    Set SubMenuItem = SubMenu.Controls.Add(Type:=msoControlButton)
        With SubMenuItem
            .Caption = strCaption
            .OnAction = strOnAction
            .FaceId = strFaceId
            .BeginGroup = bolBeginGroup
        End With
End Sub

Private Sub Menu01()
\'Macro for menu testing
    MsgBox \"This is a do-nothing macro.\"
End Sub

Private Sub Menu02()
\'Macro for menu testing
    MsgBox \"This is a do-nothing macro.\"
End Sub

Private Sub UMenu01()
\'Macro for menu testing
    MsgBox \"This is a do-nothing macro.\"
End Sub
Avatar billede hco Nybegynder
31. januar 2001 - 23:50 #9
Jeg bukker og takker ;-)
31. januar 2001 - 23:55 #10
Velbekomme :-)
Avatar billede hco Nybegynder
01. februar 2001 - 00:24 #11
BTW,

jeg har prøvet kodestumpen.

VBA kender ikke funktionen

DeleteMenu

hvad gør jeg
01. februar 2001 - 07:38 #12
Nå, manglede du lige denne lille stump - sorry

Sub DeleteMenu(strMenuName As String, intBarsNo As Integer)
\'  This sub should be executed when the workbook is closed
\'  Deletes the Menus
    On Error Resume Next
            Application.CommandBars(intBarsNo).Controls(strMenuName).Delete
    On Error GoTo 0
End Sub
Avatar billede hco Nybegynder
01. februar 2001 - 10:37 #13
Tusinde tak.

jeg har et sidste spørgsmål.

Jeg kan ikke få Excel til at loade XLA ved start. Jeg tilføjer den under \"tilføjelsesprogrammer\", men når jeg starter Excel og går ind i VBA editoren så er den der ikke.

Avatar billede ed Nybegynder
01. februar 2001 - 10:50 #14
->flemmingdahl:
Super kodestykke! Det gør mange ting meget nemmere.

ed
01. februar 2001 - 12:19 #15
-> ed - send blot nogle point - hehe
TAK - jeg bruger det også flittigt :-)

-> hco
Der må jo være et eller andet du skal gøre anderledes...
Du har lagt koden i sit eget kodemodul, og gemt filen som xla, og placeret den typisk i c:\\programmer\\microsoft office\\office\\bibltek\\
I excel har du valgt funktioner / tilføjelsesprogrammer og sat \"hag\" ved din xla og sagt OK.
That should be it.
Avatar billede hco Nybegynder
01. februar 2001 - 13:03 #16
Ja det burde det, men nu har jeg fået det til at fungere, ved at gemme den som xls fil og inde i vba sætte IsAddin = True.

01. februar 2001 - 13:05 #17
Fint.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester