Novità

x esperti excel

ciao Joe .. posto a beneficio di chi usa quel file lo script da lanciare in spaziometria
per fare l'aggiornamento

Codice:
Option Explicit
Sub Main
    Dim xlApp ' oggetto excel
    Dim xlBook ' insieme di cartelle di lavoro
    Dim xlSheet ' foglio di lavoro
    Dim sFileXls
    Dim sLastData
    Dim idEstr ,k  , r ,nLastRiga , nAggiornate
    Dim aNum

    sFileXls = ScegliFile("",".xls")
    If FileEsistente(sFileXls) Then
        If OpenExcelFile(xlApp,xlBook,xlSheet,sFileXls)Then
            sLastData = GetUltimaDataIns(xlSheet , nLastRiga)
            If IsDate(sLastData) Then
                idEstr =  DataEstrToIdEstr( Day(sLastData ), Month(sLastData) ,Year(sLastData))
                If idEstr <> 0 Then
                    For k = idEstr+1 To EstrazioniArchivio
                        nLastRiga = nLastRiga +1

                        Messaggio DataEstrazione(k)
                        DoEventsEx
                        If ScriptInterrotto  Then Exit For
                        xlSheet.cells(nLastRiga , 1) = IndiceAnnuale(k) & "-" & DataEstrazione( k ,,,"/")
                        For r = 1 To 11
                            If r = 11 Then
                                Call GetArrayNumeriRuota (k ,12,aNum)
                            Else
                                Call GetArrayNumeriRuota (k ,r,aNum)

                            End If
                            xlSheet.cells(nLastRiga , r + 1) = FormattaNumeri (aNum)
                        Next
                        nAggiornate = nAggiornate +1

                    Next
                    If nAggiornate  > 0 Then
                        MsgBox "Aggiornate " & nAggiornate & "estrazioni." & vbCrLf & "Chudere il file excel salvando le modifiche e riaprirlo"
                    End If
                Else
                    MsgBox "Con la data " & sLastData & " non è stata trovata l'estrazione nell'archivio del programma"        
                End If
            Else
                MsgBox sLastData & " data non riconosciuta"
            End If
        Else
            MsgBox "Errore apertura foglio excel",vbCritical
        End If



        xlApp.visible = True
        ' da fare alla fine della scrittura del foglio per liberare risorse
        'xlSheet.save
        'xlBook.Close
        Set xlSheet = Nothing
        Set xlBook = Nothing
        Set xlApp = Nothing
    End If
End Sub
Function OpenExcelFile(xlApp,xlBook,xlSheet,sFile)
    On Error Resume Next
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Workbooks.Open(sFile)
    Set xlBook = xlApp.Workbooks(1)
    Set xlSheet = xlBook.Sheets("Estrazioni")
    If Err = 0 Then
        OpenExcelFile = True
    End If

End Function

Function GetUltimaDataIns(xlSheet ,nLastRiga)
    Dim k , j
    Dim sData  

    nLastRiga =0
    Messaggio ("Cerca ultima data ..")

    k  = 3
    Do While xlSheet.cells( k ,1) <> ""
        k = k + 20
    Loop
    For j = k To 3 Step -1
        If xlSheet.cells( j ,1)<> "" Then
            sData = xlSheet.cells( j ,1)
            nLastRiga = j
            Exit For
        End If
    Next

    If sData <> "" Then
        Dim aV
        aV = Split (sData , "-")
        GetUltimaDataIns = Trim(aV(1))
    Else
        GetUltimaDataIns = ""
    End If
End Function

Function FormattaNumeri (aNum)
    Dim k
    Dim sRet

    sRet = ""
    For k = 1 To 5
        sRet = sRet & FormatSpace(aNum(k) ,2,True ) & " "
    Next

    FormattaNumeri = Trim(sRet)
End Function
 
Buongiorno,
Signor LuigiB farle i complimenti e poco.
La ringrazio per la Sua Pazienza,
Lo script funziona alla perfezione.
Le auguro tante soddisfazioni nel suo Lavoro.
Felice giornata
Saluti giuseppe56
 
Grazie Luigi per l'aiuto, volevo chiederti (se è facile) , quali sono le istruzioni da modificare per aggiornare , magari altri programmini excel ?
 
Grazie Luigi.

C'è sempre molto da imparare e qualcosa di utile.

Trovo strano anche quanto scrive Vincenzo.

Lo script si comporta come "un ripetitore" (di aggiornamento)

cioè "riceve" l'aggiornamento presente in Spaziometria e lo "trasmette",

ad un foglio generico di excel scelto attraverso un input.

Cioè un foglio generico qualsiasi.

E' evidente che questa genericità ...

essendo orientata ad aggiornare un programma specifico,è obbligatoriamente specifica.

Specifica nel suo formato ... ma generica nel suo complesso.

Quindi avendo un foglio di nome "Pippo" ... che aveva ... "un archivio", (di alcune estrazioni) ...

... s'è "aggiornato", ai dati più recenti ... con lo scirpt di Luigi.

:)

[IMG2=JSON]{"data-align":"none","data-size":"full","src":"http:\/\/i68.tinypic.com\/o8fc0m.jpg"}[/IMG2]
 
Ultima modifica:
Ciao Joe e esattamente così. Per questo non avevo ancora risposto. Grazie alla dimestichezza e alla intuito ti è stato facile capire come funziona lo script ..piccole differenze si potrebbero avere se il foglio target invece di avere 5 numeri a cella ne avesse uno per cella ma niente di insormontabile la logica e identica...ciao...
 
Ciao a tutti volevo chiedere ma su sistemi a 64 bit va in errore oppure e' solo un mio problema? Grazie a chiunque voglia rispondermi, ciao.
 
Ciao Amedeo,

più che dal numero di bit penso possa dipendere dalla versione di Excel,

ovvero ad una incompatibilità tra le molte versioni di esso.

Ma, più nello specifico e con più probabilità, "i dati" potrebbero essere "protetti"

o quando sono consisderati indirzzati ad un file protetto, o come detto prima, sono in formato sbagliato.

Oppure ancora, quando nel tentativo di scrittura vanno ad interessare aree protette dal sistema operativo.

Per esempio nel mio computer il disco C: (e per convenzione il disco rigido) sarebbe protetto.

:)
 
Ultima modifica:
OK , quindi , per i meno esperti come me, sarebbe opportuno avere anche uno script che aggiorni un generico foglio excel, ma con un archivio di differente impostazione , cioè , con un numero per ogni cella, si può? in questo modo aggiorniamo tutti i fogli excel che abbiamo e non solo quelli con i 5 numeri per cella.ciao
 
Ultima modifica:
Ciao Vincenzo.

Premesso che Excel non ha bisogno di Spaziometria,

per caricare dati dal web (ed è anche semplice farlo) ...

... il resto della domanda indirizza ad una risposta, secondo me non convniente.

Perchè pare, che "la cosa" sia presa per il verso contrario.

Mi spiego:

E' meglio ... e più precisamente ... OCCORRE PRIMA DI TUTTO

conoscere il formato dei dati e la struttura dell' archivio locale che si intende aggiornare.

POI ... adattare i dati dell'archivio remoto ... al formato locale.

Se si può.

Infatti alcuni archivi potrebbero essere molto "complicati"

e contenenti anche altri dati, oltre le date e gli estratti.

Oppure valori criptati. O indici esterni.

Da quanto scrivi, sembra ci sia un campo data,

(anche se non è dichiarato e non si sa quale formato esso abbia)

Non si sa se ci sia un numero progressivo per ogni estrazione.

e poi pare ci siano 55 celle una per ogni estratto.

Forse, in ogni riga, una estrazione.

Ma senza che sia noto "il formato" dei dati è improbabile

... azzeccare una soluzione valida ... procedendo per tentativi ed ipotesi.

Senza dimenticare che una minima "differenza" renderebbe probabilmente inutile,

e quasi certamente dannoso tutto il lavoro fatto.

:)
 
Ok,

ma le macro del foglio sono protette da password,

pertanto non è possibile vedere cosa faceva l'aggiornamento.

Ho visto invece che il numero di estrazioni ed altre cose sono calcolate e non fanno parte dell'archivio.

Avere gli estratti nello stesso formato è possibile,

ma sarebbe meglio poter lavorare direttamente su questi fogli.

L'autore non è in grado di fare le modifiche necessarie ?

:)
 
Ciao Vincenzo.

Nel foglio "Fascia" in alto a sinistra c'è scritto "victor13"

Comunque sia lo "sbloccare il foglio" era per poter organizzare una soluzione migliore.


... ... ...


Dicevo ... sembra si possano incollare i dati di aggiornamento, nella pagina archivio.

Quindi ho semplicemente modificato uno script presente tra gli esempi.

Esso crea un "facsimile" del foglio Archivio, con i dati di aggiornamento.

(SE DISPONIBILI IN SPAZIOMETRIA)

Occorre:

DAL nuovo FOGLIO (Cartel1) che si è creato ...

* Selezionare e copiare SOLO le linee necessarie all'aggiornamento.

NEL FOGLIO "Fasce Ritardo 1.3"

* Posizionarsi sulla prima cella vuota a sinistra in fondo del foglio ARCHIVIO.

* Cliccare su di essa co il tasto DESTRO del mouse.

Dal menù contestuale che si apre ...

* Scegliere "Incolla Valori"

*** ATTENZIONE : NON HO CONTROLLATO NULLA ***

:) Buona giornata a tutte/i.


Codice:
Option Explicit
Sub Main
' questo esempio esporta in excel il range di estrazioni selezionato
Dim xlApp ' oggetto excel
Dim idEstr,r,e,i,riga
Dim Inizio,Fine,nEstrTot
Dim nColor
Dim sCoord
Inizio = 9329
Fine = EstrazioneFin
nEstrTot =(Fine + 1) - Inizio
If XlsApriFile(xlApp) Then ' istanzia excel
Call ScriviIntestazioneColonne ' scrive le intestazioni delle colonne
' ciclo per alimentare il foglio
riga = 1
For idEstr = Inizio To Fine ' cicla sulle estrazioni
riga = riga + 1 ' incrementa la riga dove andra a scrivere
i = 1
nColor = vbWhite ' preimposta il colore della colonna
Call XlsScriviC(riga,i,riga + 5784)
i = i + 1
Call XlsScriviC(riga,i,"")
' scrive la prima colonna con la data
i = i + 1
Call XlsScriviC(riga,i,DataEstrazione(idEstr,,,"/"))
' cicla sulle ruote dell'estrazione
For r = 1 To 12
If r <> 11 Then
For e = 1 To 5
i = i + 1
sCoord = XlsGetLetteraFromColonna(i) & riga ' calcola la coordnata della cella dove scrivere
Call XlsScrivi(sCoord,Estratto(idEstr,r,e))
Next
End If
Next
Call AvanzamentoElab(Inizio,Fine,idEstr)
If ScriptInterrotto Then Exit For
Next
Call XlsAutoFit("A1:" & XlsGetLetteraFromColonna(56) & nEstrTot) ' 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
Dim r,e,i
Dim nPrimaCol,nUltimaCol,sCoordC1,sCoordC2
sCoordC1 = "A1"
Call XlsScrivi(sCoordC1,"Num",,,True)
sCoordC1 = "C1"
Call XlsScrivi(sCoordC1,"Data",,,True)
nPrimaCol = 3
For r = 1 To 12
If r <> 11 Then
nPrimaCol = nPrimaCol + 1
nUltimaCol =(nPrimaCol - 1) + 5
sCoordC1 = XlsGetLetteraFromColonna(nPrimaCol) & "1" ' calcola le coordinate delle cellle relative alla ruota
sCoordC2 = XlsGetLetteraFromColonna(nUltimaCol) & "1"
Call XlsScrivi(sCoordC1,NomeRuota(r),,,True,,,,xlsCenter)
Call XlsMerge(sCoordC1,sCoordC2,True) ' unisce le 5 celle contigue della ruota
Call XlsFormatoCella(sCoordC1 & ":" & sCoordC2,,,,,,xlsCenter) ' imposta l'allineamento
nPrimaCol = nUltimaCol
End If
Next
End Sub
 
Ultima modifica:

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 26 novembre 2024
    Bari
    35
    16
    24
    41
    85
    Cagliari
    89
    30
    10
    81
    72
    Firenze
    38
    60
    16
    13
    28
    Genova
    52
    15
    80
    08
    53
    Milano
    33
    77
    06
    54
    73
    Napoli
    01
    50
    64
    35
    36
    Palermo
    02
    01
    19
    33
    62
    Roma
    33
    48
    72
    47
    68
    Torino
    62
    28
    18
    75
    31
    Venezia
    03
    54
    27
    14
    71
    Nazionale
    02
    44
    27
    86
    78
    Estrazione Simbolotto
    Torino
    30
    07
    39
    14
    19

Ultimi Messaggi

Indietro
Alto