Condividi tramite

rendere visibile a excel funzioni di un modulo dentro un file XLA

Anonimo
2012-10-26T11:11:54+00:00

salve

allora ho questo problema:

ho scritto un pò di moduli vba per un file excel File0.xls che eseguono diverse operazioni, tutto il codice nel file excel originale e testato

e funzionante.

il mio scopo ora è  prendere un file xls generico

1 - caricarci dentro tutti i fogli (alcuni sono fogli di configurazione tabelle etc) del mio excel File0.xls  => QUESTO LO HO FATTO

2 - richiamare da questo secondo xls chiamiamolo File1.xls le routine del File0.xls

ho dato uno squardo ai file XLA quindi ho provato a salvare Foglio0.xls in XLA

poi ho provato dopo avere eseguito il punto 1

dal menu strumenti > componenti aggiuntivi

a  caricare il file XLA appena creato questa operazione va a buon fine

ma quando dal File1.xls premo un dei bottoni presenti su un foglio ad esempio il foglio "Comandi" che dovrebbe richiamare una routine di un modulo presente dentro il file XLA

mi da errore e mi dice che quel modulo non esiste

dunque come posso risolvere ?

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

  1. Anonimo
    2012-10-26T16:10:07+00:00

    io eseguo così la chiamata

    Application.Run "nomefile.xla!nomemodulo.nomemetodo"

    ma da errore 1004

    la referenza o provato a farla in due modi

    1. menu strumenti -> componenti aggiuntivi > seleziono il file xla
    2. dal progetto vba menu strumenti > riferimenti > seleziono il file xla

    ma no funziona

    EDIT

    Quando lo faccio da visual basic mi dice "nome già utilizzato per modulo, progetto o libreria degli oggetti esistente"

    Io partirei da zero per capire come funziona.

    Scarica il file mioXLA.xla da qui:

    https://skydrive.live.com/?cid=0361684D94BB851A#cid=0361684D94BB851A&id=361684D94BB851A%21169

    Posizionalo sul Desktop(così è più facile eliminarlo quando non ti serve più).

    Apri un file di Excel.

    Aggiungi il riferimento al componente aggiuntivo.

    Vai ne codice del file e aggiungi un modulo(al file, non al componente aggiuntivo).

    Inserisci questo codice:

    Public Sub m()

        Application.Run ("mostraUserForm1")

    End Sub

    Vai in Excel lato celle e lancia la macro m().

    Seleziona un valore nela ComboBox e vedi cosa succede nel foglio attivo.

    Stai utilizzando la UserForm del file .xla e i dati contenuti sempre nel file .xla sul foglio attivo del nuovo file di Excel. Sempre allo stesso link di prima trovi anche il file masterXLA.xlsm che mi è servito per preparare il file .xla.

    La risposta è stata utile?

    0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2012-10-26T15:07:56+00:00

    io eseguo così la chiamata

    Application.Run "nomefile.xla!nomemodulo.nomemetodo"

    ma da errore 1004

    la referenza o provato a farla in due modi

    1. menu strumenti -> componenti aggiuntivi > seleziono il file xla
    2. dal progetto vba menu strumenti > riferimenti > seleziono il file xla

    ma no funziona

    EDIT

    Quando lo faccio da visual basic mi dice "nome già utilizzato per modulo, progetto o libreria degli oggetti esistente"

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2012-10-26T14:17:45+00:00

     

    ok ma se questa funzione è dentro un modulo ?

    non fa ?

    ho provato con application.run non funziona

    Crei il tuo file .xlam o .xla

    Nei suoi moduli standard metti il codice che vuoi poi eseguire dai vari files. Considera che potresti anche avere UserForm o dati sui fogli da utilizzare.

    Adesso, apri un file di Excel.

    Referenzi il file .xla/xlam (in pratica è un componente aggiuntivo).

    Chiudi e riapri.

    Nei file di Excel, in vba, dovresti vedere in Progetto-VBAProject *anche* gli oggetti (fogli, ThisWorkbook, ecc) del file .xla/xlam.

    Quindi, dai moduli del file chiami le tue macro del file .xla/.xlam come indicato in precedenza.

    Mi sfugge cosa tu abbia fatto *prima*.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-10-26T13:43:57+00:00

                   

    dunque come posso risolvere ? 

     

    Codice per lanciare una macro o una UDF presente in altro file aperto o in .xla.

    Una macro generica senza parametri:

    Public Sub m()

        Application.Run ("mMacro")

    End Sub

    Una Funcrion che restituisce un valore e si aspetta un parametro:

    Public Sub m()

        MsgBox Application.Run("fCubo", 5)

    End Sub

    ok ma se questa funzione è dentro un modulo ?

    non fa ?

    ho provato con application.run non funziona

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2012-10-26T13:12:46+00:00

                   

    dunque come posso risolvere ? 

    Codice per lanciare una macro o una UDF presente in altro file aperto o in .xla.

    Una macro generica senza parametri:

    Public Sub m()

        Application.Run ("mMacro")

    End Sub

    Una Funcrion che restituisce un valore e si aspetta un parametro:

    Public Sub m()

        MsgBox Application.Run("fCubo", 5)

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento