29. januar 2001 - 23:36Der 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\".
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(
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...
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.
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?
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.
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 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
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
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.
-> 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.
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.