Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] Barra degli strumenti con pulsanti personalizzati

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Excel] Barra degli strumenti con pulsanti personalizzati

Postdi maxmula » 05/06/06 15:04

Ciao a tutti,
ho un foglio di calcolo in cui ho scritto alcune macro che fanno funzioni di varia utilità. Ho quindi pensato di creare una mia barra degli strumenti in modo da averle sempre raggruppate e pronte all'uso; la barra è "inclusa" (attached) nel foglio: viene visualizzata all'apertura del file e "fatta sparire" alla chiusura, in modo da non "sporcare" il PC su cui lavoro (il file è su una pendrive USB).

Il problema è che se rinomino il file (esempio: nomefile_maggio.xls, nomefile_giugno.xls, ecc.), i link alle macro "saltano" e puntano sempre al nome del file originale (completo di percorso). Se questo non esiste, mi compare un messaggio d'errore e devo riassegnare ogni volta (manualmente) le macro ai pulsanti corrispondenti.

Qualcuno conosce un sistema per dire ad Excel di pigliarsi le macro sempre e solo dal foglio corrente?

Ciao e grazie,
MAx

PS. uso Excel XP e 2003
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Sponsor
 

Postdi Alexsandra » 05/06/06 15:59

Dovresti farmi vedere uno spezzone di codice, di come hai impostato la tua barra. é un pop up oppure la aggiungi alle altre barre? La mia è un pop up fatto +o- così
Codice: Seleziona tutto
Set miomenu = Application.CommandBars("Worksheet Menu Bar")
  Set muovomenu = miomenu.Controls.Add(Type:=msoControlPopup, Temporary:=True, Before:=10)
    muovomenu.Caption = "&Gestione Commesse"
     Set mnf = muovomenu.Controls.Add(Type:=msoControlPopup, Before:=1)
    With mnf
        .Caption = "Vision 2000"
'........ altre istruzioni
end with
bisogna vedere come hai fatto la tua,posta il codice
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale.

Win7 + Office 2003 Ita
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31

Postdi maxmula » 05/06/06 22:11

No, la mia l'ho aggiunta alle altre barre...
Mi sembrava l'unico sistema per avere le macro sempre sottomano ed allo stesso tempo usare normalmente il foglio di calcolo.

Adesso non ho qui il codice, però domani provo a postare qualcosa (e naturalmente provo a mettere in pratica la tua dritta!

Ciao e grazie x la risposta,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Postdi Alexsandra » 06/06/06 07:50

Attento che il mio è solo uno spezzone di codice per una barra pop up, sinceramente preferisco quella ancorata sulla barra degli strumenti che è più pratica.
In serata ti posto del codice per la barra da ancorare eventualmente lo modifichi con i tuoi riferimenti.
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale.

Win7 + Office 2003 Ita
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31

Postdi maxmula » 25/07/06 16:41

Ciao Alexsandra,
innanzitutto grazie x la disponibilità.
Ci ho messo un bel po' ma alla fine, dopo un po' di smanettamenti, sono riuscito a risolvere.
Magari non è una maniera "ortodossa", però funziona!.
Riporto qui a beneficio di chi si trovasse un giorno nelle medesime condizioni.
Allora, ho fatto così:

- Ho creato una barra degli strumenti personalizzata ed ho creato in essa tutti i pulsanti che mi servono, poi dal menu Personalizza l'ho "allegata" al workbook. In questo modo, su qualunque macchina io vada ad aprire il file, la barra viene caricata.

- Ho scritto le varie macro che devono essere richiamate da ognuno dei pulsanti e le ho salvate in un modulo sempre appartenente al medesimo workbook.

- POI ho aperto il VBA Editor e nell sezione ThisWorkbook ho scritto le seguenti routine:
Codice: Seleziona tutto
Private Sub Workbook_Activate()
    Call MOSTRA_TOOLBAR
End Sub
Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
        Call RIMUOVI_TOOLBAR
''        Application.CommandBars("Comandi").Delete
    On Error GoTo 0
End Sub
Codice: Seleziona tutto
Private Sub Workbook_Deactivate()
    Call RIMUOVI_TOOLBAR
End Sub
Codice: Seleziona tutto
Private Sub Workbook_Open()
    Sheets(1).Activate
    (...)
    Call MOSTRA_TOOLBAR
End Sub

- La routine MOSTRA_TOOLBAR fa questo:
Codice: Seleziona tutto
Sub MOSTRA_TOOLBAR()
    On Error Resume Next
        With Application
           .CommandBars("Comandi").Enabled = True
           .CommandBars("Comandi").Visible = True
        End With
        With CommandBars("Comandi")
            .Controls(1).OnAction = "INSERISCI_TS"
            .Controls(2).OnAction = "AGGIORNA_REPORT"
            .Controls(3).OnAction = "CREA_MAILING_LIST"
        End With
    On Error GoTo 0
End Sub

Ovviamente INSERISCI_TS, AGGIORNA_REPORT, CREA_MAILING_LIST sono le varie funzioni che voglio associare ai pulsanti della barra. La routine RIMUOVI_TOOLBAR non fa che disattivare e far "scomparire" la barra alla chiusura del file.
Ora vado a lavorare su qualunque PC, apro il mio foglio e la mia fida barra dei comandi è sempre con me... anche se rinomino o sposto il file.

Spero che possa essere utile a qualcuno...
Ciao!

MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Postdi Alexsandra » 25/07/06 19:45

Oppure così in un modulo inserisci questo codice
Codice: Seleziona tutto
Sub Auto_Open()
    Dim Etichetta(1 To 3)
    Dim Comando(1 To 3)
    Dim Nomemenu As String
      Nomemenu = "&Menù Alex"
   
    Etichetta(1) = "Esegui Macro 1"
    Comando(1) = "macro1"
    Etichetta(2) = "Esegui Macro 2"
    Comando(2) = "macro2"
    Etichetta(3) = "Esegui Macro 3"
    Comando(3) = "macro3"
  On Error Resume Next
    MenuBars(xlWorksheet).Menus(Nomemenu).Delete
    MenuBars(xlWorksheet).Menus.Add Caption:=Nomemenu, before:="Help"
   
    With MenuBars(xlWorksheet).Menus(Nomemenu).MenuItems
        .Add Caption:=Etichetta(1), OnAction:=Comando(1)
        .Add Caption:=Etichetta(2), OnAction:=Comando(2)
        .Add Caption:=Etichetta(3), OnAction:=Comando(3)
     End With
End Sub
Codice: Seleziona tutto
Sub Auto_Close()
    Dim Nomemenu As String
    Nomemenu = "&Menù Alex"
    On Error Resume Next
    MenuBars(xlWorksheet).Menus(Nomemenu).Delete
End Sub
e in un altro metti le macro
Codice: Seleziona tutto
Sub macro1()
    MsgBox "Ho eseguito la Macro 1"
End Sub
Sub macro2()
    MsgBox "Ho eseguito la Macro 2"
End Sub
Sub macro3()
    MsgBox "Ho eseguito la Macro 3"
End Sub
Questa è quella che uso io si installa sulla barra e la trovo molto comoda.
Ciao
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Barra degli strumenti con pulsanti personalizzati":


Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti