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)
 
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:
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:
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;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:
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:
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
 
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
 
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:
Buongiorno Claudio8
confermo che NON ho avuto bisogno di premere il tasto stop per arrivare all' output di Spaziometria.
buonna giornata
 
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.
 
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
 
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...
 
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
    venerdì 17 gennaio 2025
    Bari
    10
    87
    77
    23
    60
    Cagliari
    75
    33
    60
    24
    15
    Firenze
    45
    34
    66
    41
    17
    Genova
    05
    65
    15
    53
    86
    Milano
    20
    84
    74
    76
    01
    Napoli
    90
    29
    38
    52
    68
    Palermo
    33
    36
    02
    20
    68
    Roma
    68
    12
    59
    07
    74
    Torino
    03
    22
    29
    90
    28
    Venezia
    81
    24
    35
    18
    03
    Nazionale
    06
    31
    35
    89
    74
    Estrazione Simbolotto
    Bari
    14
    24
    17
    13
    08

Ultimi Messaggi

Indietro
Alto