Invoegtoepassing toewijzen aan een menu

Status
Niet open voor verdere reacties.

mcs51mc

Gebruiker
Lid geworden
19 feb 2008
Berichten
386
Hallo,
Hoe kan ik een self-made invoegtoepassing (*.xla) laten verschijnen in één van de werkbalken van Excel of nog beter, mijn eigen menu item maken in het hoofdmenu "Bestand Bewerken ......." met daaronder alle eigen invoegtoepassingen.
Ok heb er nu nog maar één, maar wie weet wat de toekomst brengt??

Dus voor alle duidelijkheid:
1) ik heb een werkende macro
2) ik heb een xla op de juiste locatie
3) de macro start als ik via Extra\Invoegtoepassingen mijn macro aanvink en op OK click

Daarna kan ik de macro niet meer starten daar hij nergens meer te vinden is :confused:
Enige manier is terug uitvinken en aanvinken :shocked:

Alvast bedankt...
 
Hallo,

Ik heb er geen verstand van maar dit heb ik uit een .xla betand gehaald.
Als ik hem activeer dan komt er op de balk Invoegtoepassing te staan, daar zit hj dan in.
Als je hem dan weer uit schakel is dat ook weer weg.

Code:
Option Explicit

'   ===========================================================================================
Sub CreateBar()
    Dim cmBar As CommandBar
    Dim cmBarCmd As CommandBarControl

    '   avoid mutiple instance and reactivate the errorHandling
    On Error Resume Next
        CommandBars("SheetHelp").Delete
    On Error GoTo 0

    '   create the Toolbar for the items/menu and give it a name
    Set cmBar = CommandBars.Add
    With cmBar
        .Name = "Sheethelp"
        .Visible = True
        .Position = msoBarTop
    End With

    '   create/add a button on the toolbar
    Set cmBarCmd = CommandBars("SheetXL2").Controls.Add(msoControlButton, , , , True)
    With cmBarCmd
        .Style = msoButtonIconAndCaption
        .Caption = " Jouw knop naam"
        .TooltipText = "  Wat jij wil"
        .FaceId = 462
        .OnAction = "Je macro naam"
    End With

Het werkblad is verborgen.

Ik hoop dat je er wat aan heeft.

Suc6, Wim
 
Lucky guy, ik heb het internet afgezocht naar een niet beveiligde xla, echter zonder succes.

Alvast bedankt voor de reactie, wordt vanavond uitgetest...
 
Hallo mcs51mc,

Als je naar Vakantierooster-plus extra zoekt (ik weet niet hoe je de link moet invoeren) daar kun je in de macro kijken.
Het is geen .xla bestand maar maakt wel een werkbalk Invoegtoepassing aan.
De file die je kunt downloaden is er voor Office 2003 en 2007 (op blad 2)

Ik hoop dat je er mee geholpen ben.

Suc6,
Wim
 
Problem solved

Een beetje van hier, een beetje van daar om tot volgend resultaat te komen:

Bij het installeren van de xla wordt gekeken of het hoofdmenu "ASI Soft" reeds bestaat.
Indien ja wordt enkel een knop bijgeplaatst voor deze xla in dat menu.
Indien neen wordt een menu en een knop gemaakt.

Bij het verwijderen van de xla wordt gekeken hoeveel knoppen in het menu aanwezig zijn.
Is dat slechts één, dan wordt én knop én menu gewist.
Zijn dat er meerdere, dan wordt enkel de knop van deze xla gewist.

Zo, heb weer 't een en 't ander geleerd :)

Thanks for the reactions and see you later alligator :cool:


In code geeft dit het volgende
Code:
Private Sub Workbook_AddinInstall()
    Menu_Add
End Sub

Private Sub Workbook_AddinUninstall()
    Menu_Remove
End Sub


Public Sub Menu_Add()
Dim mnuASISoft  As CommandBarPopup
Dim intItems    As Integer
Dim i           As Integer
Dim blnItemOk   As Boolean

Const mnuName   As String = "ASI &Soft"
Const cmdName   As String = "Fronius database"

    'Check als item "ASI Soft" reeds voorkomt in menu
    blnItemOk = False
    intItems = Application.CommandBars(1).Controls.Count
    
    For i = 1 To intItems
        If Application.CommandBars(1).Controls.Item(i).Caption = mnuName Then
            blnItemOk = True
            Exit For
        End If
    Next i
    
    If blnItemOk = False Then
        'Menu item "ASI Soft" bestaat niet = aanmaken
        Set mnuASISoft = Application.CommandBars(1).Controls.Add( _
                            Type:=msoControlPopup, _
                            before:=intItems)
        
        With mnuASISoft
            .Caption = mnuName
            .Visible = True
        End With
        
        'Aanmaken knop voor Fronius applicatie in menu ASI Soft
        With mnuASISoft.Controls.Add(msoControlButton)
            .Style = msoButtonIconAndCaption
            .Caption = cmdName
            .TooltipText = "Data uit Fronius DB ophalen"
            .FaceId = 610
            .OnAction = "FroniusStartsHere"
        End With
    Else
        'Menu item "ASI Soft" bestaat wel = check als knop Fronius bestaat
        Set mnuASISoft = Application.CommandBars(1).Controls.Item(mnuName)
        blnItemOk = False
        intItems = Application.CommandBars(1).Controls.Item(mnuName).Controls.Count
        
        For i = 1 To intItems
            If mnuASISoft.Controls.Item(1).Caption = "cmdName" Then
                blnItemOk = True
                Exit For
            End If
        Next i
        
        If blnItemOk = True Then
            'Knop bestaat reeds = niets doen
            
        Else
            'Knop bestaat niet = aanmaken
            With mnuASISoft.Controls.Add(msoControlButton)
                .Style = msoButtonIconAndCaption
                .Caption = cmdName
                .TooltipText = "Data uit Fronius DB ophalen"
                .FaceId = 610
                .OnAction = "FroniusStartsHere"
            End With
        End If
    End If
End Sub



Public Sub Menu_Remove()
    
Const mnuName   As String = "ASI &Soft"
Const cmdName   As String = "Fronius V5-01"
    
    'Verwijderen knop voor Fronius applicatie
    If Application.CommandBars(1).Controls.Item(mnuName).Controls.Count = 1 Then
        'Slechts één knop in menu "ASI Soft" ook menu verwijderen
        Application.CommandBars(1).Controls.Item(mnuName).Delete
    Else
        'Meerdere knoppen in menu "ASI Soft" = enkel knop "Fronius" verwijderen
        Application.CommandBars(1).Controls.Item(mnuName).Controls.Item(cmdName).Delete
    End If
End Sub
 
Enig probleem met U link Hoornvan is dat het voor Office2007 is en ik zit nog met Office2003.

Via Google heb ik ook xla's gevonden waarmee het mogelijk is de id van een icoon op te vragen. Met de property "FaceId" kan je dan kiezen welk icoontje naast de knop staat.
Ik heb dat trouwens ook gebruikt (zie mijn code).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan