|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2004
Città: Provincia di Monza e Brianza
Messaggi: 6245
|
[VB6] Attendere Excel
Ciao, sto sviluppando con VB6 un'applicazione che crea e popola dei fogli XLS, e fin qui, tutto ok....vorrei però fare in modo che l'utente possa decidere di aprire il file XLS prodotto in Excel, modificarlo, salvarlo, chiuderlo mentre la mia applicazione "attende" in background che finisca queste operazioni e intervenga solo alla chiusura del foglio Excel....è fattibile ?
Altra domanda, mi trovo sempre un processo Excel.exe appeso alla chiusura del mio programma, eppure ogni variabile Excel.Application la setto = nothing!
__________________
AMD Ryzen 5 7600X - Dissipatore Thermalright Assassin King 120SE - RAM Kingston Fury Beast 2x16Gb DDR5 CL30 @ 6000 - Motherboard ASROCK B650 Pro RS - NVME Kingston KC3000 2Tb - PSU FSP Hydro PRO 600w - Win 11 PRO |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3208
|
Quote:
Così ? C'è sicuramente un errore occulto nel tuo codice. Forse apri n istanze, e ne rimane sempre una orfana. Difficile saperlo se non posti il codice. |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Aug 2004
Città: Provincia di Monza e Brianza
Messaggi: 6245
|
Beh , più o meno....diciamo, apro un file TXT , leggo dei valori, faccio dei conti, apro un XLS e li inserisco in uno sheet (in caselle precise), chiudo sheet e xls e salvo.
Nel ciclo di lettura può succedere di aprire di nuovo l'xls e creare nuovi sheets. Io vorrei che al termine del TXT, ossia alla fine della lettura e di tutti i vari salvataggi, l'utente possa confermare di voler modificare il file XLS prodotto, il mio programma dovrà aprire l'xls e 'attendere' che l'utente faccia le sue modifiche, in seguito a ciò (ossia quando l'utente chiuderà Excel), il programma dovrà riprendere il controllo per fare ulteriori calcoli sul file XLS modificato. Riguardo gli orfani, è probabile, dovrò ricontrollare tutto.
__________________
AMD Ryzen 5 7600X - Dissipatore Thermalright Assassin King 120SE - RAM Kingston Fury Beast 2x16Gb DDR5 CL30 @ 6000 - Motherboard ASROCK B650 Pro RS - NVME Kingston KC3000 2Tb - PSU FSP Hydro PRO 600w - Win 11 PRO |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3208
|
Io proverei a semplificare il tutto aprendo direttamente il file xls in una Form VB6. In questo modo si può risparmiare molto codice ed evitare i fastidi e gli errori di un continuo dialogo tra VB6 ed Excel...
Dai un'occhiata a questo componente : Microsoft Office Web Components 11.0 10.0 > Office XP 11.0 > Office 2003 ecc... La DLL è : C:\Programmi\File comuni\Microsoft Shared\Web Components\11\OWC11.DLL A dispetto del nome "Web" è perfetto per le WinForms, e una volta importato aggiunge vari controlli alla ToolBar, tra cui lo "Spreadsheet". Gestire lo Spreadsheet via codice è semplicissimo : Codice:
Dim percorso As String percorso = App.Path & "\" 'Carico un workbook: Spreadsheet1.XMLURL = percorso & "PROVA.xls" 'Inserisco valori: Spreadsheet1.Sheets("Foglio1").Range("A1") = "PROVA1" Spreadsheet1.Sheets("Foglio2").Range("A1") = "PROVA2" Spreadsheet1.Sheets("Foglio3").Range("A1") = "PROVA3" 'Salvo il workbook: Spreadsheet1.Export percorso & "PROVA.xls", ssExportActionNone, ssExportAsAppropriate ![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Aug 2004
Città: Provincia di Monza e Brianza
Messaggi: 6245
|
Fantastico, appena ci rimetto sopra le mani mi ci fiondo....però una domanda mi sorge spontanea...e per distribuirlo ? Se l'utente ha Office 2007 o Office 2003 o addirittura Office 2000, può succedere qualcosa ?
__________________
AMD Ryzen 5 7600X - Dissipatore Thermalright Assassin King 120SE - RAM Kingston Fury Beast 2x16Gb DDR5 CL30 @ 6000 - Motherboard ASROCK B650 Pro RS - NVME Kingston KC3000 2Tb - PSU FSP Hydro PRO 600w - Win 11 PRO |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3208
|
Quote:
Penso proprio che sia così, anche se non te lo posso "giurare". Per Excel 2007 il discorso è diverso, perchè lì cambia proprio il formato del file. Sarà necessario avere OWC12.DLL. La cosa migliore ? Anzichè smazzarsi un'unica gestione centralizzata di TUTTE le versioni di Office, meglio accordarsi col cliente su quale sia la sua, e fare diverse versioni del programma... E comunque, meglio evitare Office '97 e precedenti ! |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Aug 2004
Città: Provincia di Monza e Brianza
Messaggi: 6245
|
Uhm...sto provando ma non riesco a fargli caricare il mio foglio, dice che non è un foglio dati XML....eppure è un banale XLS...
__________________
AMD Ryzen 5 7600X - Dissipatore Thermalright Assassin King 120SE - RAM Kingston Fury Beast 2x16Gb DDR5 CL30 @ 6000 - Motherboard ASROCK B650 Pro RS - NVME Kingston KC3000 2Tb - PSU FSP Hydro PRO 600w - Win 11 PRO |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3208
|
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Aug 2004
Città: Provincia di Monza e Brianza
Messaggi: 6245
|
No, Office 2003, e appena apro il mio file, col comando che mi hai dato (Spreadsheet1.XMLURL = percorso & "PROVA.xls"), si incricca e dà quell'errore.
"Il documento non è un file XML corretto"
__________________
AMD Ryzen 5 7600X - Dissipatore Thermalright Assassin King 120SE - RAM Kingston Fury Beast 2x16Gb DDR5 CL30 @ 6000 - Motherboard ASROCK B650 Pro RS - NVME Kingston KC3000 2Tb - PSU FSP Hydro PRO 600w - Win 11 PRO |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3208
|
Quote:
Se, come penso, non ti va di convertire i tuoi books xls in fogli di calcolo Xml ( manterresti i dati e la suddivisione in fogli, ma eventuali formule e macro andrebbero perse ), rimane l'embedding tramite OLE Container ( da provare, anche se personalmente non è che mi faccia impazzire... ), oppure tornare a gestire Excel da VB6, ma senza vedere un esempio del tuo codice non sono in grado... |
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Aug 2004
Città: Provincia di Monza e Brianza
Messaggi: 6245
|
Gentilissimo, grazie.
Allora, il programma potrebbe anche salvare in XML (mantenendo XLS come estensione), tanto il file lo creo/salvo IO partendo da una base fissa vuota (popolo dei fogli, e salvo con un altro nome)....proverò anche questa strada.
__________________
AMD Ryzen 5 7600X - Dissipatore Thermalright Assassin King 120SE - RAM Kingston Fury Beast 2x16Gb DDR5 CL30 @ 6000 - Motherboard ASROCK B650 Pro RS - NVME Kingston KC3000 2Tb - PSU FSP Hydro PRO 600w - Win 11 PRO |
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3208
|
Quote:
![]() Puoi usare tranquillamente il controllo SpreadSheet, come ti avevo suggerito. ![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:21.