Risultati da 1 a 14 di 14

Discussione: [VB6] - Utilizzare ADO con files Excel

  1. #1
    New Member
    Data Registrazione
    17-11-2004
    Messaggi
    10

    [VB6] - Utilizzare ADO con files Excel

    Buongiorno a Tutti,

    Avrei bisogno di una mano per il problema che sotto Vi descrivo.

    Ho un file excel che tiene conto dell'inventario del materiale di consumo nell'ufficio dove lavoro e che, a seconda dei movimenti, aggiorno costantemente da MS Excel 2003.

    Ora quello che vorrei fare è creare un programma in VB6 che mi consenta di aggiornare questo file tramite l'interfaccia del programma.

    Nel mio form in VB6 ho messo le textbox per visualizzare i dati contenuti nel file Excel e vorrei usare l'oggetto ADO in VB6 ma qui mi blocco; infatti non riesco:

    - nè a connettere l'oggetto ADO al file Excel;
    - nè a far vedere ai campi textbox i valori presenti nelle celle del file Excel.

    Mi sapete dare un aiuto in merito?

    Spero di essere stato chiaro nella mia esposizione...comunque rimango a disposizione per ogni chiarimento del caso.

    Grazie mille in anticipo.

    Giuseppe

  2. #2
    Software Zone Fanatic L'avatar di Capoccione
    Data Registrazione
    21-11-2001
    Località
    Roma
    Messaggi
    11.984
    Ciao. Scusa per il ritardo con il quale rispondo, ma spero di poterti essere ancora utile!
    Allora, io ho risolto in questo modo.
    Nelle dichiarazioni generali del programma VB ho dichiarato :
    Codice:
    Dim ExcellApp as New Excell.application
    A questo punto nella Sub devi puntare al file di Excel
    Codice:
    ExcellApp.Workbooks.open path dove risiede il file e nome file, ad esempio c:\pippo.xls
    Adesso puntiamo al foglio di lavoro
    Codice:
    excellapp.worksheet(numero del foglio di lavoro).select
    Per leggere o inserire un valore in una cella utilizziamo:
    Codice:
    excellapp.cells(numero riga,Numero Colonna) = "Ciao"
    per stampare utilizzerai il comando excellapp.worsheet(1).printout che stampa il primo foglio di lavoro

    Excellapp.visible = false fa in modo che il foglio venga aperto ed elaborato senza far vedere niente all'operatore che continua ad utilizzare il form di VB!

    Naturalmente nel progetto devi inserire il Microsoft Excel 9.0 ....

    Spero di esserti stato utile! :Ciao:

  3. #3
    New Member
    Data Registrazione
    17-11-2004
    Messaggi
    10
    Ciao

    ho letto e ti ringrazio per la risposta.

    Del tuo messaggio non ho capito una cosa...e cioè quando dici:

    Naturalmente nel progetto devi inserire il Microsoft Excel 9.0
    mi potresti spiegare meglio questo punto?

    grazie mille!

    Ciao,
    Giuseppe

  4. #4
    Software Zone Fanatic L'avatar di Capoccione
    Data Registrazione
    21-11-2001
    Località
    Roma
    Messaggi
    11.984
    Se vai nel menù Project e clicchi su reference puoi caricare le librerie che ti servono per far funzionare i comandi che vuoi utilizzare! In questo caso ti servono le librerie di Excel che appunto nell'elenco si chiamano Microsoft Excel 9.0

  5. #5
    Software Zone Fanatic L'avatar di Capoccione
    Data Registrazione
    21-11-2001
    Località
    Roma
    Messaggi
    11.984
    Naturalmente il numero 9.0 è indicativo della versione di Excel installata sul PC!

  6. #6
    New Member
    Data Registrazione
    17-11-2004
    Messaggi
    10
    Ciao Capoccione!

    grazie per il dettaglio...io cercavo nelle Components ed è per quello che non capivo il tuo messaggio.

    Ho provato il tuo suggerimento e funziona...ma ci sono due cose che mi rimangono poco chiare:

    - ho aggiunto il comando
    Codice:
     ExcellApp.Workbooks.Close (o QUIT, ora non ricordo bene)
    per chiudere il file Excel ed il file si chiude. Ma dal task manager noto rimane "appeso" il processo "excel.exe". Questo processo si chiude nel momento che chiudo il mio form. Al che ti chiedo se c'è un comando che mi permette di "killare" anche il processo "excel.exe" senza dover necessariamente chiudere il form di VB6

    - volevo chiederti quale stringa devo impostare nelle proprietà dell'oggetto ADO (mi pare di ricordare che sia nella 3° linguetta) affinchè i miei textbox di VB (sono 3) possano leggere i valori presenti nel mio file excel.

    Grazie mille in anticipo.

    Ciao,
    Giuseppe

  7. #7
    Software Zone Fanatic L'avatar di Capoccione
    Data Registrazione
    21-11-2001
    Località
    Roma
    Messaggi
    11.984
    Purtroppo sull'oggetto ADO non è che lo conosca benissimo!
    Se devo applicare un testo ad una textbox utilizzo
    textbox1,caption = excellapp.cells(numero riga,Numero Colonna)
    Naturalmente prima apro il documento excel ed appena finito lo chiudo!
    Per quanto riguarda excel sospeso è una cosa che è capitata pure me, e sono riuscito a bypassarla mettendo un timer di qualche secondo dopo la chiusura prima di far eseguire qualsiasi altra operazione all'operatore!
    Solitamente funge!

  8. #8
    New Member
    Data Registrazione
    17-11-2004
    Messaggi
    10
    Capisco Capoccione...però probabilmente mi sono spiegato male io.

    se avessi un db access nella RecordSource scriverei
    Codice:
     Select * FROM Nometabella
    . In questo modo, scorrendo passo passo il controllo ADO, i miei textbox vedrebbero i valori associati.

    Quello che ti chiedevo è se sai come si fa questa cosa riferendosi ad un file excel.

    Grazie in anticipo,
    Giuseppe

  9. #9
    Software Zone Fanatic L'avatar di Capoccione
    Data Registrazione
    21-11-2001
    Località
    Roma
    Messaggi
    11.984
    Ok, forse ora ho capito!
    Ipotizziamo ad esempio che devi leggere i valori della colonna 1 di un documento di excel dalla riga 1 alla riga 10 e questi valori inserirli in una combobox per essere selezionati:

    Facciamo che già hai aperto il documento excel, a questo puntodovrai utilizzare un ciclo for per spostarti nelle righe, e cioè una cosa del genere:

    Codice PHP:
    for i=1 to 10 
    combobox1
    .additem excelapp.cells(i,1)
    next 
    in questo modo automaticamente la combo ti si riempirà di 10 elemnti presi dal documento excel

    Spero fosse questo quello che volevi! Se invece a te serve proprio scrivere nei text box devi leggerti la cella (con excellapp.cells(1,1) ) e spararlo nel text box ogni volta

  10. #10
    New Member
    Data Registrazione
    17-11-2004
    Messaggi
    10
    Capoccione non mi odiare

    questo suggerimento che mi hai dato mi torna utile ma quello che ti sto chiedendo è un passo prima, cioè la configurazione dell'oggetto ADO verso il file excel.

    per esempio, una tabella è composta 10 righe x 3 colonne.
    (es. A1=pippo B1=pluto C1=paperino, A2=qui B2=quo C2=qua, A3=tizio B3=caio C3=sempronio, ecc)

    Nel form VB ho:
    - tre textbox che fanno riferimento ai valori delle tre colonne del file excel
    - l'oggetto ADO

    La mia idea è di vedere nei textbox i valori di ogni riga scorrendoli uno per uno cliccando sul pulsante "avanti" (freccia singola nera verso destra) o sul pulsante "indietro" (freccia singola nera verso sx) dell'oggetto ADO.

    Per fare questo so che si va nella linguetta "RecordSource".

    Con un db access mi ricordo che si selezione l'ultima opzione del menu a scorrimento e si scrive il comando SQL "Select * FROM Nometabella"

    Quello che non riesco a fare è scrivere un'equivalente istruzione che faccia la stessa cosa ma puntando il file excel.

    Spero di averti dato un quadro più chiaro scusandomi se ti ho portato fuori strada nei miei precedenti messaggi.

    Ciao,
    Giuseppe

  11. #11
    Software Zone Fanatic L'avatar di Capoccione
    Data Registrazione
    21-11-2001
    Località
    Roma
    Messaggi
    11.984
    Ok, ora penso di aver capito! E' che per principio non uso gli oggetti ADO!
    Clicca sulle proprietà dell'oggetto textbox ed al campo "datasource" imposta l'ado dal quale deve acquisire il valore. Il campo esatto mi sembra lo imposti poi da datafield

  12. #12
    New Member
    Data Registrazione
    17-11-2004
    Messaggi
    10
    Ciao Capoccione....ho provato il tuo suggerimento ma sulla textbox non mi fa vedere niente (

    ti mando in allegato la finestra dove sono bloccato....così visivamente hai idea di quello che sto cercadno di fare...cioè sempre trovare la stringa che mi consenta di collegare l'oggetto ado al file excel.

    Ciao e Grazie miltissimo per la tua disponibilità
    GIuseppe

  13. #13
    Software Zone Fanatic L'avatar di Capoccione
    Data Registrazione
    21-11-2001
    Località
    Roma
    Messaggi
    11.984
    Alt! QUella non è una "textbox"
    Li dentro devi inserire la stringa sql che vuoi utilizzare!!!!!

    Ti ripeto, se devi SOLO lavorare su un file Excel, lascia perdere l'oggetto ado ed inserisci i comandi che ti ho dato io funzione per funzione, senza utilizzare quel coso che nel tuo caso non ti serve neanche!

    Apri il tuo documento VB, ti connetti al file di excel, leggi (tramite la stringa già detta in precedenza) i valori da excel e li copinelle 3 textbox , poi ti fai 2 pulsanti , uno con la freccia a destra ed uno a sinistra e scorri le righe tramite quei 2 pulsanti .
    E' più facile a farsi che a dirsi!

  14. #14
    Software Zone Maniac L'avatar di Fla78
    Data Registrazione
    03-09-2004
    Località
    Veneto
    Messaggi
    2.381
    Buongiorno a tutti, riprendo questo vecchio post per avere lumi su come risolvere il problema del processo excel.exe che rimane aperto nonostante il comando di chiusura dell'applicazione. Potreste spiegarmi come si imposta il "timer" di cui si parla sopra? o esiste una soluzione efficace al problema?

    Sto usando vb2008express.

    Grazie a chiunque saprà aiutarmi.

Segnalibri

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •