La consultazione del forum è libera per tutti.
Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).
Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.
ciao,
non so come definire in modo variabile il riferimento al foglio excel; ad es il comando:
Application.Run "'modello'!Foglio1.ListF"
in modo che se salvo il foglio ad esempio "modello2"
Grazie Mille!!
Ciao,
riformula meglio la domanda perchè si capisce veramente poco di quel che vuoi fare.
"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
Ciao Cesare
Concordo con quanto detto da Cromagno
Però se non ho capito male la tua domanda
Tu dovresti creare una cosa di questo genere :
DoEvents passa il controllo ad altri processi, lascia lavorare in Excel si usa nel ciclo Timer per permettere di usare Excel durante il conteggio Application. Application.Run "nome applicazione" esegue una applicazione esterna utilizzato per esempio per eseguire le macro di altri file Excel aperti
spiego meglio con il file che allego:
1) nel foglio "Riepilogo" è associato un codice ListF(), che fa la lista dei fogli presente nel file.
2) la macro aggiorna_elenco() deve attivare ListF()
non so come definire in modo variabile il riferimento al foglio excel nella macro, in questo caso:
Application.Run "'prova.xlsm'!Foglio1.ListF"
quindi se si salva il file come prova2, rendere variabile al nome del file il riferimento del comando Application.Run
Ho provato scrivendo nella macro:
Dim nome_file As String
Dim nome_sub As String
nome_file = ActiveWorkbook.Name 'Application.ActiveWorkbook.Name
nome_sub = "Foglio1.ListF"
appication.Run nome_file.nome_sub
ma non funziona
Ciao,
forse ho frainteso la tua richiesta ma...non vedo il problema.
Una volta che utilizzi l'istruzione/proprietà ThisWorkbook, il file lo puoi chiamare come ti pare, il codice farà sempre riferimento a quel file.
L'unico problema è come hai impostato e piazzato le sub.
- La Sub ListF la puoi mettere tranquillamente in un modulo standard, ricorda che se metti una sub all'interno di un modulo di classe (del foglio Riepilogo in questo caso), quella sub sarà "visibile" (e richiamabile) solo all'interno di quel modulo.
- La Sub ListF la puoi richiamare con l'evento Workbook_Open del modulo di classe Questa_cartella_di_lavoro e con l'evento Worksheet_Activate del modulo di classe del foglio Riepilogo;
in questo modo puoi fare a meno della Sub aggiorna_elenco. - Nel foglio Riepilogo ti conviene eliminare la tabella dati_fogli almeno non dovrai manipolare un oggetto tabella tramite codice.
Il codice, da mettere in un modulo standard, sarà:
Option Explicit Sub ListF() Dim i As Integer Dim ActRow As Integer Range("A3:A" & Rows.Count).ClearContents ActRow = 3 For i = 1 To ThisWorkbook.Worksheets.Count If Sheets(i).Name <> ThisWorkbook.ActiveSheet.Name Then Range("A" & ActRow).Value = Sheets(i).Name ActRow = ActRow + 1 End If Next i End Sub
Ti riallego il file:
P.S.
Abituati ad usare Option Explicit per rendere obbligatoria la dichiarazione delle variabili.
P.P.S.
Quando posti un codice, utilizza gli appositi TAG CODE, per rendere il codice più leggibile:
"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
@cromagno Grazie Mille! la tabella mi serve perché devo aggiungere colonne con riferimenti sul nome del foglio della colonna che si aggiorna.
Grazie ancora
Cesare