vb6excelvba



  • vb6+excel+vba
    di dario1946 (utente non iscritto) data: 18/03/2013 22:22:03

    ho ormai girato tutto il mondo internet senza risultato:
    PROBLEMA.
    Per diversi clienti che hanno a disposizione un archivio fotografico ed un'anagrafica prodotti su sql2008 con le relarive qta per taglia genero fogli di escel dove in una cella trasferisco la foto del prodotto e nelle successive le disponibilità.
    NUOVA RICHIESTA.
    Mi si chiede di poter zommare sull'immagine passandoci sopra con il mouse.
    Ho risolto con la scrittura, dopo la generazione del foglio di excel con vb6, della parte VBA manualmente ed associando la macro per zummare. ho scritto una sola macro a cui passo l'indice dell'immagine senza dover così scrivere N macro una per ogni immagine.
    Quello che proprio che non mi riesce è di generare, in contemporanea alla generazione del foglio di excel con vb6, è la parte VBA con l'abbinamento della foto alla macro.
    Qualcuno di voi ha avuto lo stesso problema.
    Grazie in anticipo
    Dario



  • di Vecchio Frac data: 19/03/2013 16:51:40

    Non ho capito "...è la parte VBA con l'abbinamento della foto alla macro ", visto che alla macro tu "...passi l'indice dell'immagine" che viene zoomata, non hai già l'informazione che ti serve? ossia il nome dell'immagine e il suo indice?





  • di dario1946 (utente non iscritto) data: 19/03/2013 17:56:44

    Scusa se non sono stato chiaro.
    Con la procedura in VB6 genero il foglio di excel completo di foto e descrizioni relative e fino quì tutto era a posto, tieni presente che vengono prodotti 20-30 fogli di excel quotidianamente per inviarli ai clienti. Ovviamente , per non appesantire l'allegato da inviare tramite mail, le foto sono di circa 2.5x 3.5 cm.
    Ora mi viene richiesto di poter consentire all'utente finale di poter zoommare sulle foto.
    Per fare questo ho scritto, nella sezione sviluppo, le istruzioni in VBA e tutto funziona, solo che queste istruzioni le devo inserire manualmente su ogni foglio di excel.
    Vorrei poter, durante la generazione del foglio di excel in vb6, generare anche la parte VBA in modo automatico, e collegare ogni singola foto a questa macro per consentire lo zoom.
    Spero di essere sato sufficentemente esplicativo.
    Dario



  • di Vecchio Frac data: 20/03/2013 20:41:43

    cit. " Vorrei poter, durante la generazione del foglio di Excel in vb6, generare anche la parte VBA in modo automatico "
    ---> Adesso ho capito! sì, si può fare. A grandi linee il ragionamento è:
    - predispongo un file di testo con il codice necessario (oppure lo inserisco in una bella varibile stringa in VB6)
    - genero il file Excel
    - importo nella sezione moduli suddetto file (o ci incollo il contenuto della stringa)

    Io preferisco la soluzione file + import successivo.
    Adesso vedo di metterti insieme il codice per l'import.
    Tra parentesi, perchè non generi i file di Excel partendo da un template che comprenda già il codice di zoom suddetto? ti eviteresti tutta questa faccenda dell'import successivo.





  • di Vecchio Frac data: 20/03/2013 20:55:48

    Ecco il codice.
    Ho creato un file di testo semplicissimo con una riga commentata ('test).
    Quando ho eseguito, al progetto corrente è stato aggiunto un modulo e ci è stato importato il contenuto del file di testo.

    Probabilmente saprai adattarlo al tuo contesto (e avrai capito le istruzioni che ti interessano).
     
    Option Explicit
    
    Sub test_import_from_file()
    Dim fso As Object, f As Object, s As String
    
        Set fso = CreateObject("Scripting.FileSystemObject")
        
        Set f = fso.OpenTextFile("C:usersfranzdesktopimport_test.txt")
        s = f.ReadAll
        f.Close
        
        Application.VBE.ActiveVBProject.VBComponents.Add 1      '1 = vbext_ct_StdModule
        Application.VBE.ActiveCodePane.CodeModule.AddFromString s
        
    End Sub






  • di dario1946 (utente non iscritto) data: 20/03/2013 21:42:15

    mitico,
    proprio , dopo anni ed anni, la soluzione di partire già da un template già predisposto non mi aveva neanche sfiorato anche perchè in effetti il numero delle istruzioni da inserire nella parte VBA sono poche.
    Causa una trasferta di lavoro fino a lunedì non riuscirò a modificare il modulo VB6 con le istruzioni che mi hai allegato.
    Ancora grazie mille.
    A presto . (spero con ulteriori ringraziamenti significativi di "tutto risolto")
    Dario



  • di Vecchio Frac data: 21/03/2013 09:28:12

    Bene, aspettiamo sviluppi.

    E naturalmente io ho scelto la strada più lunga perchè esiste come avrai immaginato anche
    Application.VBE.ActiveCodePane.CodeModule.AddFromFile filename.txt
    che importa un file (bas o txt) senza necessità di caricarlo in memoria :)





  • di dario1946 (utente non iscritto) data: 25/03/2013 20:38:23

    Ciao, anche se dal ritorno della trasferta il tempo disponibile è poco ho voluto provare i suggerimenti che mi hai fornito.
    Tutto perfetto. grazie ancora. Per ora è tutto ad un livello "grezzo". nei prox giorni affinerò il tutto.
    Dario



  • di Vecchio Frac data: 25/03/2013 20:50:39

    Grazie del feedback, sono contento, del resto proprio oggi ho riciclato questo modo di programmare anche per un altro utente, quindi grazie a te che mi hai fatto venire in mente questi trucchi ^_^