Buona giornata a tutti,
Sono un nuovo iscritto al forum ed ho un problema relativo ad una applicazione VBA sviluppata per excel 2010.
Sostanzialmente la mia applicazione partendo da una cartella di lavoro esegue le seguenti attività:
1: partendo da un primo foglio scrive un file .CSV che viene utilizzato come input di un programma ( sviluppato in Fortran ) esterno.
2: Lancia il programma eseguibile esterno che genera con gli output un file .TXT
3: recupera il file .TXT in un secondo foglio ( diverso dal primo ) ed aggiorna una serie di collegamenti e valori negli altri fogli della cartella in funzione dei riusultati.
Nello sviluppo del programma ho trovato un primo ostacolo nell'utilizzo della funzione "shell" per eseguire il programma esterno. La funzione lancia il programma in maniera parallela rispetto all'esecuzione dello script VBA il che comportava probemi
di sincronizzazione del file .TXT di uscita.
Questo primo problema è stato risolto mediante in frammento di codice che sostanzialmente interroga il SO e mette lo script VBA in Loop fino a che no riceve il flag di "programma terminato".
Ora mi si pone, apparentemente, lo stesso tipo di problema anche per la fase precedente all'elaborazione dell programma esterno.
In pratica se il computer su cui faccio elaborare il foglio è particolarmente veloce in alcune occasioni il programma esterno va in crash perchè trova allocato il file .CSV scritto da excel. E' come se l'elaborazione iniziasse prima che fosse finalizzata
la chiusura del file. Tenete presente che dopo aver salvato il file .CSV io faccio risalvare anche la cartella completa proprio per cercare di disallocare il file .CSV.
Per adesso ho apparentemente risolto il problema introducendo delle istruzioni VBA DoEvents ma non credo che sia il sistema più elegante in quanto il risultato è funzione del numero di istruzioni DoEvents che introduco.
Spero che qualcuno mi sappia istruire con quale istruzione rilasciare completamente al SO il file .CSV generato da excel
Grazie per l'aiuto che mi potrete dare....