Novità

Costrutto x scrittura in file excel

claudio8

Premium Member
Per poca voglia e pigrizia, chiedo aiuto.
Ho bisogno di un costrutto che mi trascrivain un file excel esistente, anche aggiornandolo, una serie di dati da matrice vbscript.
Ringrazio anticipatamente chi può passarmelo ( spero che Luigi non mi legga.....altrimenti mi lancia la bacchetta)
 

Mike58

Advanced Member >PLATINUM PLUS<
Ciao Claudio, sicuramente è come dici poca voglia e pigrizia (ahimè a volte capita anche a me) ma le conoscenze le abbiamo per poterlo fare.

Tempo addietro feci anch'io questo esperimento e quello che chiedi si può fare anche scrivendo sullo stesso file aggiornandolo.

Ti posto questa prova-Lavoro vedi se puoi adattarla al tuo scopo specifico.

Ora apre e scrive su file nuovo ma dove ho spuntato c'è il nome della cartella salvata e può essere richiamata.

Ciao fammi sapere.

Codice:
Sub Main
 Dim Nu(2),Ru(1)
 '............................
 Dim xlApp ' oggetto excel
 Dim idEstr,r,e,i,riga
 Dim Inizio,Fine,nEstrTot
 Dim nColor
 Dim sCoord
 Dim sFile
 '............................
 Ini = 3950
 Inix = 8072
 fin = EstrazioneFin
 t = Timer
 'sFile = "C:\Users\Mike58\Desktop\Cartel3.xlsx"
 'If XlsApriFile(xlApp,True,sFile,"Foglio1") Then ' istanzia excel su file
 If XlsApriFile(xlApp,True,,"Foglio1") Then ' istanzia excel
  Call ScriviIntestazioneColonne ' scrive le intestazioni delle colonne
  riga = 10 ' inizia a scrivere dalla riga voluta
  rigo = 1
  For n1 = 1 To 5
   For n2 = n1 + 1 To 6
    k = k + 1
    Nu(1) = n1
    Nu(2) = n2
    Ru(1) = 11
    riga = riga + 1 ' incrementa le righe
    Call Messaggio("Elaboro Ambi : " & riga)
    Call AvanzamentoElab(1,4005,riga)
    i = 1
    Call StatisticaFormazioneTurbo(Nu,Ru,2,rit,max,Incr,fre,Ini,fin)
    Call StatisticaFormazioneTurbo(Nu,Ru,2,rit1,max1,Incr1,fre1,Inix,fin)
    Call XlsScriviC(riga,i,k)'scrive la prima colonna del contatore
    For e = 1 To 1
     i = i + 1
     dataFin = XlsGetLetteraFromColonna(2) & rigo : Call XlsScrivi(dataFin,fin & " / " & DataEstrazione(fin))'scrivi data 1 riga
     sCoord = XlsGetLetteraFromColonna(2) & riga ' calcola la coordnata della cella dove scrivere
     sCell2 = XlsGetLetteraFromColonna(3) & riga '
     sCell3 = XlsGetLetteraFromColonna(4) & riga
     sCell4 = XlsGetLetteraFromColonna(5) & riga
     sCell5 = XlsGetLetteraFromColonna(6) & riga
     scell6 = XlsGetLetteraFromColonna(7) & riga
     scell7 = XlsGetLetteraFromColonna(8) & riga
     scell8 = XlsGetLetteraFromColonna(9) & riga
     scell9 = XlsGetLetteraFromColonna(10) & riga
     scell10 = XlsGetLetteraFromColonna(11) & riga
     scell11 = XlsGetLetteraFromColonna(12) & riga
     scell12 = XlsGetLetteraFromColonna(13) & riga
     scell13 = XlsGetLetteraFromColonna(14) & riga
     'scell14 = XlsGetLetteraFromColonna(15) & riga
     'scell15 = XlsGetLetteraFromColonna(16) & riga
     Call XlsScrivi(sCoord,max)'max 3950
     Call XlsScrivi(sCell2,max1)'max 8072
     'Call XlsScrivi(sCell3,StringaNumeri(Nu),,,True)
     Call XlsScrivi(sCell3,Format2(n1) & " . " & Format2(n2),,,True)
     Call XlsScrivi(sCell4,max + max1)'somma storici
     Call XlsScrivi(sCell5,rit)' ritardi attuali
     Call XlsScrivi(sCell6,fre)'freq 3950
     Call XlsScrivi(sCell7,fre1)'freq 8072
     Call XlsScrivi(sCell8,fre + fre1)'somma freq
     Call XlsScrivi(scell9,Int((max + max1)/2))'media storici
     Call XlsScrivi(sCell10,rit - max1)'max sro8072
     Call XlsScrivi(sCell11,rit - Int((max + max1)/2))'somma freq
     Call XlsScrivi(sCell12,rit - max)'maxsto 3950
     If max <> max1 Then Call XlsScrivi(scell13,"Y")
     If max = max1 Then Call XlsScrivi(scell13,"N")
    Next
   Next
   If ScriptInterrotto Then Exit For
  Next
  Scrivi "Ho scritto le righe in excel",1
  Scrivi "Tempo di elaborazione " & Round((Timer - t)/60,2) & " Minuti"
  Call XlsAutoFit("A1:" & XlsGetLetteraFromColonna(56)) ' esegue la funzione di adattamento delle colonne
  Call XlsMostra ' mostra excel all'utente
 End If
End Sub
Sub ScriviIntestazioneColonne
 ' scrive l'intestazione delle colonne nel foglio
 '................................................
 Call XlsScrivi("A1","Estraz.",,,True)
 '................................................
 sCoordC1 = "A10"
 Call XlsScrivi(sCoordC1,"ID",,,True)
 Call XlsScrivi("B10","Sto3950",,,True)
 Call XlsScrivi("C10","Sto8072",,,True)
 Call XlsScrivi("D10","Ambi",,,True)
 Call XlsScrivi("E10","So.2Sto",,,True)
 Call XlsScrivi("F10","Rit.Cro",,,True)
 Call XlsScrivi("G10","Fre.3950",,,True)
 Call XlsScrivi("H10","Fre.8072",,,True)
 Call XlsScrivi("I10","So.2Fre",,,True)
 Call XlsScrivi("J10","Med.Sto",,,True)
 Call XlsScrivi("K10","ColSto8072",,,True)
 Call XlsScrivi("L10","ColMedStSom",,,True)
 Call XlsScrivi("M10","ColSto3950",,,True)
 Call XlsScrivi("N10","Y/N")
 Call XlsFormatoCella(sCoordC1,,,,,,xlsCenter) ' imposta l'allineamento
 'Call XlsFormatoCella(cella2,,,,,,xlsCenter)
End Sub
 
Ultima modifica:

claudio8

Premium Member
Grazie MIke, come sempre molto disponibile.
Trovo strana una cosa e cioè che manca della "chiusura dello script" e del passaggio all'output in automatico, mi si blocca sulla videata con il messaggo e se non clicco su "Stop" non va in output. Perchè?... deve chiudere il controllo di excel?
Per il resto, le sezione di aggiornamento deve essere costruita e se non arriva altro materiale, cercherò di scroll are via la pigrizia e andare avanti con questo.
un saluto
 
Ultima modifica:

Mike58

Advanced Member >PLATINUM PLUS<
Claudio a me elebora e scrive in 7 secondi.
Non saprei se è il tuo Excel che non lo apre o altro, a me fa tutto in automatico.
Poi attivando la riga dove hai il percorso cartella o file e disattivando questa in uso dovrebbe scrivere sul file esistente e aggiornare i dati scrivendo su di essi.

In aggiunta ci sono 3 esempi nella cartella Test che possono darti indicazioni e dai quali io ho attinto per creare questo.

Ciao

[IMG2=JSON]{"data-align":"none","data-size":"full","src":"http:\/\/funkyimg.com\/i\/2Ctnz.png"}[/IMG2]
 
Ultima modifica:

claudio8

Premium Member
claudio8;n2101843 ha scritto:
Grazie MIke, come sempre molto disponibile.
Trovo strana una cosa e cioè che manca della "chiusura dello script" e del passaggio all'output in automatico, mi si blocca sulla videata con il messaggo e se non clicco su "Stop" non va in output. Perchè?... deve chiudere il controllo di excel?
Per il resto, le sezione di aggiornamento deve essere costruita e se non arriva altro materiale, cercherò di scroll are via la pigrizia e andare avanti con questo.
un saluto


Per Mike.GIF

Scusa MIke,
mi sono spiegato male, mi scrive su excel senza problemi, ma non mi ritorna a fine scrittura sulla pagina di output,
e per farlo ho bisogno di cliccare su "Stop" della videata azzurra di spaziometria facendo intervenire if Scriptinterrotto..... .
ciao
 
Ultima modifica:

Mike58

Advanced Member >PLATINUM PLUS<
Ah ok Claudio, però in questo errore non lo riscontro, passo tranquillamente ad operare in tutte le finestre.
una volta scritto in Excel, come da script l'output di scritture immesso da il risultato che segue.




Non saprei per altro, comunque il costrutto è per quella strada. Ciao
 
Ultima modifica:

claudio8

Premium Member
Mike58;n2101886 ha scritto:
Ah ok Claudio, però in questo errore non lo riscontro, passo tranquillamente ad operare in tutte le finestre.
una volta scritto in Excel, come da script l'output di scritture immesso da il risultato che segue.




Non saprei per altro, comunque il costrutto è per quella strada. Ciao

Non so perche ma io arrivo alla pagina di output solo se clico su "stop".
ciao
 

MicolBaby

Junior Member
Buongiorno a tutti, sono MicolBaby e sono nuova.E' il mio primo post.
Pur avendo una vecchia versione di PC (Windows Vista 64 bit) e Spaziometria (1.5.87 per problemi nell'installazione) provo, se ci riesco, a postare qualche foto per far vedere che a me lo script viene eseguito correttamente. ALLEGATO1.jpgALLEGATO2.jpgALLEGATO3.jpgALLEGATO4.jpg
 

claudio8

Premium Member
MicolBaby, ben arrivata e grazie dell'intervento,

anche tu non hai bisogno di cliccare su "Stop" di questa tua videata




per arrivare all'output di Spaziometria?



se è così, dipenderà dal mio excel,
ma credo che sia lo script che manchi della uscita dalla gestione di excel x rientrare in spazioscipt.
Grazie
 
Ultima modifica:

MicolBaby

Junior Member
Buongiorno Claudio8
confermo che NON ho avuto bisogno di premere il tasto stop per arrivare all' output di Spaziometria.
buonna giornata
 

claudio8

Premium Member
MicolBaby;n2102250 ha scritto:
Buongiorno Claudio8
confermo che NON ho avuto bisogno di premere il tasto stop per arrivare all' output di Spaziometria.
buonna giornata
Scusa se mi ripeto, ma non sono convinto.
elenco i passaggi:
Tu - Fai partire lo script
- automaticamente - si apre la videata di excel, vedi eseguire la scrittura
- automaticamente - passa all'outpt di Spaziometria, o per caso fai la chiusura di excel, o clicchi su Spaziometria?
grazie e buona giornata anche a te.
 

MicolBaby

Junior Member
dunque ho riprovato a rifare tutto il procedimento ed è come ho detto io, non serve per me cliccare su tasto stop:
- ho copiato lo script
- ho incollato lo script nell'Editor di Spaziometria
- ho cliccato su Esegui script
- è comparsa la schermata "esecuzione script in corso" con il tasto di stop ma io non ho assolutamente cliccato sul tasto stop; il processo era in esecuzione
- è comparsa la videata del tempo impiegato per elaborazione output
- in automatico si è aperto un foglio excel con l'output di spaziometria
io non ho cliccato il tasto stop
 
L

LuigiB

Guest
Ciao .. claudio apri excel a mano e verifica che non ti si blocchi su qualche messaggio di conferma che attende input utente...potrebbe essere questo il motivo...il comportamento corretto dello script è quello descritto da Micol .colgo l occasione per dirle benvenuta...
 

claudio8

Premium Member
Grazie MicolBaby

LuigiB;n2102258 ha scritto:
Ciao .. claudio apri excel a mano e verifica che non ti si blocchi su qualche messaggio di conferma che attende input utente...potrebbe essere questo il motivo...il comportamento corretto dello script è quello descritto da Micol .colgo l occasione per dirle benvenuta...

Luigi, con l'operazione manuale excel (vers.2003) si apre, senza attendere nessuna conferma, apre cartel 1 - foglio1 - e si posiziona in cella a1.

Per l'esecuzione normale, cioè il ritorno "prosieguo" dello script dopo aver scritto il nel foglio excel, devo utilizzare questo listato che ha nel finale un rilascio dell' oggetto excel , cartella di lavoro e foglio.

Codice:
Option Explicit
Sub Main
    Scrivi " Parto x scrivere in Excel "
    '-------------------------
    Dim xlApp ' oggetto excel
    Dim xlBook ' insieme di cartelle di lavoro
    Dim xlSheet ' foglio di lavoro
    ' creo oggetto e aggiungo la cartella di lavoro
    Set xlApp = CreateObject("Excel.Application") 'gestise l'apertura di excel
    Set xlBook = xlApp.Workbooks.Add 'gestise l'apertura della cartella con i 3 fogli
    'mi interfaccio al 2° foglio
    Set xlSheet = xlBook.Sheets(2) ' vado nel foglio
    'cambio il nome
    xlSheet.Name = "Test" 'cambio il nome del foglio
    ' test di scrittura su riga 1 colonna 1 del foglio 2
    'qui inseririsco ulteriore procedura di scrittura
'    For x= 1 to 5...
'    xlSheet.cells(x,1) = "Prova di scrittura" ' scrivo nel foglio 2
'    Next
    'xlSheet.cells(1,1) = "Prova di scrittura" ' scrivo nel foglio 2
    xlApp.visible = True
    ' da fare alla fine della scrittura del foglio per liberare risorse
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
    '-------------------------------------
    Scrivi" Srittura terminata, ritrnato alla base"
End Su

Potrebbe dipendere dalla versione che ho io? Bo!!!!
ciao
 

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 23 aprile 2024
    Bari
    47
    22
    34
    20
    50
    Cagliari
    33
    14
    86
    02
    62
    Firenze
    61
    22
    44
    19
    26
    Genova
    21
    12
    57
    82
    55
    Milano
    66
    05
    11
    70
    30
    Napoli
    05
    23
    25
    52
    73
    Palermo
    23
    44
    49
    71
    65
    Roma
    82
    37
    59
    34
    71
    Torino
    26
    42
    66
    15
    58
    Venezia
    57
    06
    68
    54
    84
    Nazionale
    21
    79
    49
    03
    01
    Estrazione Simbolotto
    Genova
    24
    02
    19
    03
    27
Alto