Condividi tramite

Aggiunta di un pulsante alla barra dei menu

Anonimo
2013-06-21T07:42:47+00:00

Buongiorno,

dopo un po' di tempo eccomi nuovamente qui a chiedere il vostro aiuto.

Quando usavo excel 2003 avevo la possibilità tramite VBA di inserire pulsanti alla barra standard dei menù.

Ho copiato lo stesso codice che posto di segiuto ed effettivamente funziona anche su excel 2010.

Il mio problema è che vorrei che venisse scritta la caption del pulsante al lato della barra e non sotto il pulsante add-in che si aggiunge automaticamente all'apertura del foglio.

In parole povere avrei bisogno di aggiungere due voci con i relativi sottomenù:

  1. Accident
  2. Incident

e vorrei che i due menù venissero visualizzati dopo l'ultima voce nella barra e cliccandoci sopra si aprissero i sottomenù.

Con il codice che ho io invece, appare add-in come menù principale ed al click mi appaiono come sottomenu i miei due control come pulsanti pop-up ove poi ad ognuno ci sono i relativi sotto menù.

Ecco il codice creato che funzionava su excel 2003:

Sub ImpostaBarra()

    Set MenuAttivi = CommandBars.ActiveMenuBar

    Set Nuovomenu = MenuAttivi.Controls.Add(Type:=msoControlPopup, Before:=10, Temporary:=True)

    Nuovomenu.Caption = "ACCIDENT"

    Set Voce1 = Nuovomenu.Controls.Add

    Voce1.Caption = "Accident Category"

    Voce1.OnAction = "????"

    Set Voce2 = Nuovomenu.Controls.Add

    Voce2.Caption = "Accident Type"

    Voce2.OnAction = "????"

    Set Voce3 = Nuovomenu.Controls.Add

    Voce3.Caption = "Injury Type"

    Voce3.OnAction = "????"

    Set Voce4 = Nuovomenu.Controls.Add

    Voce4.Caption = "Body Part Injured"

    Voce4.OnAction = "????"

Sub ImpostaButton()

    Set PulsanteAgg = CommandBars("Standard")

    Set Button = PulsanteAgg.Controls.Add(Type:=msoControlButton, Before:=23, Temporary:=True)

    With Button

        .Style = msoButtonCaption

        .Caption = "INCIDENT"

        .OnAction = "????"

        .FaceId = 0

    End With

End Sub

Spero di essere stato chiaro e che si possa fare ciò che ho in mente.

Saluti a tutti e buona giornata

Peppe

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-06-22T15:38:07+00:00

Ci sono riuscito!!!!!

Ovviamente con l'aiuto vostro e di "CustomUI" .....

posto il codice se dovesse servire a qualcuno.

Saluti a tutti e grazie ancora come sempre

Giuseppe Castellano

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">

       <ribbon startFromScratch="false">

          <tabs>

              <tab id="MyTab1" label="Accident">

                <group id="MyGroup" label="Accident Category">

                    <splitButton id="mySplitButton" size="large" >

                               <button id="myButton1" imageMso="HappyFace" label="Click here" />

                               <menu id="MyMenu" label="Accident Category" itemSize="normal" >

                    <button id="MenuButton1" label="FATALITY" onAction="MyButton1CallbackOnAction" />

                    <button id="MenuButton2" label="LTI" onAction="MyButton2CallbackOnAction" />

                    <button id="MenuButton3" label="WRC" onAction="MyButton3CallbackOnAction" />

                    <button id="MenuButton4" label="MTC" onAction="MyButton4CallbackOnAction" />

                    <button id="MenuButton5" label="FAC" onAction="MyButton5CallbackOnAction" />

                            </menu>

                              </splitButton>

                    </group>

                <group id="MyGroup1" label="Accident Type">

                    <splitButton id="mySplitButton1" size="large">

                               <button id="myButton2" label="Click here" />

                               <menu id="MyMenu1" label="Accident Type" itemSize="normal" imageMso="HappyFace">

                    <button id="MenuBut1" label="Caght Between / In" onAction="MyBut1CallbackOnAction" />

                    <button id="MenuBut2" label="Caght On" onAction="MyBut2CallbackOnAction" />

                    <button id="MenuBut3" label="Chemical Inhalation" onAction="MyBut3CallbackOnAction" />

                    <button id="MenuBut4" label="Contact with Chemicals / Fluids" onAction="MyBut4CallbackOnAction" />

                    <button id="MenuBut5" label="Debris" onAction="MyBut5CallbackOnAction" />

                    <button id="MenuBut6" label="Electrical Shock" onAction="MyBut6CallbackOnAction" />

                    <button id="MenuBut7" label="Exposure to Gas" onAction="MyBut7CallbackOnAction" />

                    <button id="MenuBut8" label="Exposure to Weathe" onAction="MyBut8CallbackOnAction" />

                    <button id="MenuBut9" label="Flame / Heat / Steam" onAction="MyBut9CallbackOnAction" />

                    <button id="MenuBut10" label="Heat Exhaustion / Stroke" onAction="MyBut10CallbackOnAction" />

                    <button id="MenuBut11" label="Jump" onAction="MyBut11CallbackOnAction" />

                    <button id="MenuBut12" label="Slip / Fall Different level" onAction="MyBut12CallbackOnAction" />

                    <button id="MenuBut13" label="Slip / Fall Same level" onAction="MyBut13CallbackOnAction" />

                    <button id="MenuBut14" label="Sprain" onAction="MyBut14CallbackOnAction" />

                    <button id="MenuBut15" label="Strain / Overexertion" onAction="MyBut15CallbackOnAction" />

                    <button id="MenuBut16" label="Struck Against" onAction="MyBut16CallbackOnAction" />

                    <button id="MenuBut17" label="Struck By" onAction="MyBut17CallbackOnAction" />

                    <button id="MenuBut18" label="Vehicle" onAction="MyBut18CallbackOnAction" />

                            </menu>

                          </splitButton>

                    </group>

                </tab>

            <tab id="MyTab2" label="Incident">

                <group id="MyGroup2" label="My Group1">

                   <menu id="MyMnu1" label="Incident Report" itemSize="normal" imageMso="HappyFace">

                    <button id="MenuBtn1" label="Test" onAction="MyButtonCallbackOnAction" />

                      </menu>             

            </group>

        </tab>

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">

       <ribbon startFromScratch="false">

          <tabs>

              <tab id="MyTab1" label="Accident">

                <group id="MyGroup" label="Accident Category">

                    <splitButton id="mySplitButton" size="large" >

                               <button id="myButton1" imageMso="HappyFace" label="Click here" />

                               <menu id="MyMenu" label="Accident Category" itemSize="normal" >

                    <button id="MenuButton1" label="FATALITY" onAction="MyButton1CallbackOnAction" />

                    <button id="MenuButton2" label="LTI" onAction="MyButton2CallbackOnAction" />

                    <button id="MenuButton3" label="WRC" onAction="MyButton3CallbackOnAction" />

                    <button id="MenuButton4" label="MTC" onAction="MyButton4CallbackOnAction" />

                    <button id="MenuButton5" label="FAC" onAction="MyButton5CallbackOnAction" />

                            </menu>

                              </splitButton>

                    </group>

                <group id="MyGroup1" label="Accident Type">

                    <splitButton id="mySplitButton1" size="large">

                               <button id="myButton2" label="Click here" />

                               <menu id="MyMenu1" label="Accident Type" itemSize="normal" imageMso="HappyFace">

                    <button id="MenuBut1" label="Caght Between / In" onAction="MyBut1CallbackOnAction" />

                    <button id="MenuBut2" label="Caght On" onAction="MyBut2CallbackOnAction" />

                    <button id="MenuBut3" label="Chemical Inhalation" onAction="MyBut3CallbackOnAction" />

                    <button id="MenuBut4" label="Contact with Chemicals / Fluids" onAction="MyBut4CallbackOnAction" />

                    <button id="MenuBut5" label="Debris" onAction="MyBut5CallbackOnAction" />

                    <button id="MenuBut6" label="Electrical Shock" onAction="MyBut6CallbackOnAction" />

                    <button id="MenuBut7" label="Exposure to Gas" onAction="MyBut7CallbackOnAction" />

                    <button id="MenuBut8" label="Exposure to Weathe" onAction="MyBut8CallbackOnAction" />

                    <button id="MenuBut9" label="Flame / Heat / Steam" onAction="MyBut9CallbackOnAction" />

                    <button id="MenuBut10" label="Heat Exhaustion / Stroke" onAction="MyBut10CallbackOnAction" />

                    <button id="MenuBut11" label="Jump" onAction="MyBut11CallbackOnAction" />

                    <button id="MenuBut12" label="Slip / Fall Different level" onAction="MyBut12CallbackOnAction" />

                    <button id="MenuBut13" label="Slip / Fall Same level" onAction="MyBut13CallbackOnAction" />

                    <button id="MenuBut14" label="Sprain" onAction="MyBut14CallbackOnAction" />

                    <button id="MenuBut15" label="Strain / Overexertion" onAction="MyBut15CallbackOnAction" />

                    <button id="MenuBut16" label="Struck Against" onAction="MyBut16CallbackOnAction" />

                    <button id="MenuBut17" label="Struck By" onAction="MyBut17CallbackOnAction" />

                    <button id="MenuBut18" label="Vehicle" onAction="MyBut18CallbackOnAction" />

                            </menu>

                          </splitButton>

                    </group>

                </tab>

            <tab id="MyTab2" label="Incident">

                <group id="MyGroup2" label="My Group1">

                   <menu id="MyMnu1" label="Incident Report" itemSize="normal" imageMso="HappyFace">

                    <button id="MenuBtn1" label="Test" onAction="MyButtonCallbackOnAction" />

                      </menu>             

            </group>

        </tab>

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

13 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-06-21T10:16:51+00:00

    Grazie a tutti,

    funziona benissimo sul 2010 ma in realtà a me serviva proprio che le due voci :

    1. accident
    2. incident

    venissero visualizzate separatamente a fianco all'ultima voce dei menu (nel mio caso è Developer)

    Invece le due voci vengono aggiunte come controlli nella scheda Add-in.

    A me servirebbe un menu "Accident" ove poi la scheda con le altre sottovoci ed un altro menu "Incident" ove alla selezione si apre una scheda con gli altri sottomenù.

    Per internderci un po' come si fa con il tasto "Home", "Insert", "Formulas" ecc ecc.

    Grazie comunque a tutti e buona giornata

    Peppe

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-06-21T10:06:49+00:00

    ...

    Confermo anche in 2010/2013 è Ok. Ovviamente aggiunge i controlli nella scheda: Componenti aggiuntivi.

     

    adding to (Application.Version <> 12) Beta Testers List   ... in progress

    added successfully.

    ;)

    Andrea.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-06-21T09:23:20+00:00

    ho realizzato e testato questo piccolo esempio con la versione 2007, ma penso dovrebbe funzionare correttamente anche con la 2010.

    <cut>

    Confermo anche in 2010/2013 è Ok. Ovviamente aggiunge i controlli nella scheda: Componenti aggiuntivi.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-06-21T09:05:53+00:00

    ...

    Spero di essere stato chiaro e che si possa fare ciò che ho in mente.

    Saluti a tutti e buona giornata

    Peppe

    Ciao Peppe,

    ho realizzato e testato questo piccolo esempio con la versione 2007, ma penso dovrebbe funzionare correttamente anche con la 2010.

    In ogni caso spero ti sia d'aiuto per impostare correttamente le gerarchie dei vari menù e sotto-menù, sempre che abbia capito correttamente quello che intendi.

    Ciao,

    Andrea.


    Sub MenuWithSubMenus()

    Dim menu As CommandBar

    Dim level0 As CommandBarControl, level1 As CommandBarControl, level2 As CommandBarControl

    Dim sBarName As String

    Const Nuovomenu = "NUOVOMENU"

    On Error Resume Next

    Application.CommandBars(Nuovomenu).Delete

    On Error GoTo 0

    Set menu = Application.CommandBars.Add(Nuovomenu, msoBarTop, True, True)

    menu.Visible = True

    '---------- MENU 1

    sBarName = "Accident"

    Set level0 = menu.Controls.Add(msoControlPopup)

    level0.Caption = sBarName

    '---------- BUTTON 1

    Set level1 = level0.Controls.Add(msoControlButton)

    level1.Style = msoButtonIconAndCaption

    level1.Caption = "Button 1"

    '---------- BUTTON 2

    Set level1 = level0.Controls.Add(msoControlButton)

    level1.Style = msoButtonIconAndCaption

    level1.Caption = "Button 2"

    '---------- SUBMENU

    sBarName = "Accident SUBMENU"

    Set level1 = level0.Controls.Add(msoControlPopup)

    level1.Caption = sBarName

    '---------- SUB BUTTON 1

    Set level2 = level1.Controls.Add(msoControlButton)

    level2.Style = msoButtonIconAndCaption

    level2.Caption = "Button 1"

    '---------- MENU 2

    sBarName = "Incident"

    Set level0 = menu.Controls.Add(msoControlPopup)

    level0.Caption = sBarName

    '---------- BUTTON 1

    Set level1 = level0.Controls.Add(msoControlButton)

    level1.Style = msoButtonIconAndCaption

    level1.Caption = "Button 1"

    '---------- BUTTON 2

    Set level1 = level0.Controls.Add(msoControlButton)

    level1.Style = msoButtonIconAndCaption

    level1.Caption = "Button 2"

    End Sub


    La risposta è stata utile?

    0 commenti Nessun commento