Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [vba] eseguire codice esterno

    Ciao a tutti,

    sono nuovo di qua e di programmazione in vba e quindi mi scuso in anticipo per tutte le cavolate che diro'.

    Il mio problema e' questo: vorrei inserire un pezzo di codice vb che si trova in un file .txt all'interno di un listato che si trova in un modulo di un file di excel.
    Un'esempio chiarira' le cose:

    In Excel:

    Sub prova()
    a = 1
    b = 1

    [...]

    msgbox c

    End Sub
    Nel file di testo:

    c = a + b
    Al posto di "[...]" vorrei un comando che mi inserisca il contenuto del file di testo.

    Grazie a tutti in anticipo

    Mirco.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non capisco ... non puoi fare copia-incolla ...?

    Vuoi fare un programma che modifica un programma ? Non capisco proprio ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Questa cosa mi interessa anche a me
    scusate se mi intrometto

    Come ha detto precedentemente superfrida
    si puo caricare un file di codice vb.net esterno
    e caricarlo facendolo eseguire al programma?

    Tipo come un plug-in
    ------------------
    Non ho mai incontrato una persona così ignorante dal quale non abbia mai potuto imparare qualcosa...

  4. #4
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565

    Re: [vba] eseguire codice esterno

    In Visual Basic 6 e VBA scordatevelo perchè Vb6 è un linguaggio compilato. VBA figuratevi se supporta questa feature...

    In Vb.NET forse qualcosa si può fare...mi pare che tra le sue classi c'è proprio il FrameWork compiler che potrebbe compilare codice al volo. Per la sua esecuzione all'interno della tua setssa operazione però, comunque non saprei.. dovresti controllare.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  5. #5
    al contrario
    in vb6 e possibile e ne ho le prove
    proprio qui un programma che lo fà

    + che altro e un server di gioco molto bello creato in vb6
    non so se lo conoscete si chiama Kofuze
    e veramente un bel soft in grado di creare
    MMORPG

    mmorpg Engine

    e ha appunto questa possibiltà di caricare script esterni
    ovviamente scritti in vb

    quindi la cosa e ovvia che si puo fare ma non so dove documentarmi
    qualcuono potrebbe aiutarci?

    ------------------
    Non ho mai incontrato una persona così ignorante dal quale non abbia mai potuto imparare qualcosa...

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non confondiamo le cose nel thread ... la richiesta e' per VBA (ne' VB6 ne' VB.NET) ... e la richiesta non e' quella di eseguire codice esterno ma di "inserire" del codice esterno all'interno di una sub gia' scritta e quindi modificare il codice gia' esistente. Questo, non mi sembra affatto possibile.

    Per quanto riguarda il resto, per VB6 e' possibile usare lo Script Control.

    Qualche info a partire da

    http://support.microsoft.com/kb/184740
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    VBA supporta l'aggiunta di codice a runtime, ma non esattamente come vorrebbe superfrida; diciamo che a runtime puoi aggiungere un modulo con il contenuto di un file e richiamarne una funzione. Ad esempio:
    codice:
    Public Sub TestAggiuntaCodice()
        Dim modulo As VBComponent
        Set modulo = Application.VBE.ActiveVBProject.VBComponents.Add(vbext_ct_StdModule)
        'Se invece che da una stringa vuoi aggiungere codice da file usa il metodo AddFromFile
        modulo.CodeModule.AddFromString "Public Sub NuovaFunzione()" + vbCrLf + "MsgBox ""Ciao""" + vbCrLf + "End Sub"
        CallFunc
        Application.VBE.ActiveVBProject.VBComponents.Remove modulo
        Set modulo = Nothing
    End Sub
    Public Sub CallFunc()
        'Inserire qui la chiamata alla funzione definita nel modulo aggiunto
        NuovaFunzione
    End Sub
    .
    Questo codice però per funzionare richiede che prima si segua questa procedura e che si aggiunga al progetto un riferimento a "Microsoft Visual Basic for Applications Extensibility 5.3".
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Grazie a tutti...

    @MItaly: la tua soluzione mi sembra che sia cio' che sto cercando, ma ancora non l'ho potuta provare in quanto non sono riuscito a togliere l'errore:

    Errore di run-time "1004": L'accesso a livello di programmazione al Progetto Visual Basic non è attendibile

    Ho seguito i passi della procedura che mi hai indicato, ma l'errore persiste.....comunque questa e' un'altra storia.

    Per quanto riguarda invece il riferimento a "Microsoft Visual Basic for Applications Extensibility 5.3" come faccio ad aggiungerlo?

    Grazie mille,

    Mirco.

  9. #9
    Originariamente inviato da superfrida
    Ho seguito i passi della procedura che mi hai indicato, ma l'errore persiste.....comunque questa e' un'altra storia.
    Sicuro di aver abilitato correttamente l'opzione indicata nella pagina che ti ho linkato?
    Per quanto riguarda invece il riferimento a "Microsoft Visual Basic for Applications Extensibility 5.3" come faccio ad aggiungerlo?
    Da Strumenti->Riferimenti...->Abilita "Microsoft Visual Basic for Applications Extensibility 5.3" (se non è già abilitata->OK.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.