Non perdere il messaggio precedente, mi raccomando...
Prima degli ultimi 2 messaggi mi pareva che scorresse tutto abbastanza bene e quindi il risultato finale fosse soddisfacente; assumo che, corrette le macro cappellate il funzionamento tornera' abbastanza regolare; continua quindi a tenere sotto controllo il contenuto di finestra Immediata, verificando che:
-la schedulazione della OneMinuteMacro sia costante e non ci siano schedulazioni a meno di 1 minuto dalla precedente
-idem per la Macro15Min
Invece, per salvare solo i dati e non le immagini e gli oggetti, avrei sviluppato questa macro:
- Codice: Seleziona tutto
Sub NewWb()
'
Workbooks.Add 'Crea nuovo file
ActiveSheet.Name = "ENTRATE"
Range("B1:D1").Value = Array("Ultima modifica: ", , " Ultimo upload: ")
Range("B1").Value = Range("B1").Value & Format(ThisWorkbook.Sheets("ENTRATE").Range("AA1").Value, "dd-mmm hh:mm")
Range("D1").Value = Range("D1").Value & Format(Now, "hh:mm:ss")
'
ThisWorkbook.Sheets("ENTRATE").Range("A1:K161").Copy 'Copia da file originale
Range("A2").PasteSpecial xlPasteValues 'incolla sul nuovo file, valori ..
Range("A2").PasteSpecial xlPasteFormats '.. e altro che serve; esempio
Range("A2").PasteSpecial xlPasteColumnWidths '.. esempio
'...
'altre cose da copiare
'altre cose da copiare
'...
Application.CutCopyMode = False
End Sub
Essa crea un nuovo foglio e vi copia il contenuto, solo valori e formati, di A1:K160; in testa aggiunge l'informazione dell'ultima modifica al foglio Entrate e l'orario di aggiornamento del file
Inserisci il codice nello stesso foglio che contiene la OneMinuteMacro, poi per integrarlo nella tua macro, lavorando nella OneMinuteMacro:
-aggiungi questo blocco in questa posizione:
- Codice: Seleziona tutto
Application.ScreenUpdating = False '++++ Richiamo alla creazione del nuovo file
Call NewWb '++++
Application.ScreenUpdating = True '++++
With ActiveWorkbook.WebOptions 'CODICE ESISTENTE
-aggiungi questa istruzione in questa posizione:
- Codice: Seleziona tutto
If Len(ActiveWorkbook.Path) < 5 Then ActiveWorkbook.Close False '++++ PER CHIUDERE IL FILE DI SERVIZIO
'Then Reschedue myself: 'Codice preesistente
On Error Resume Next 'BLOCCO FER FERMARE
Infine, per poter riportare data/ora delle modifiche al foglio ENTRATE, bisogna modificare la relativa Sub Worksheet_Change; ho usato la cella AA1 (che mi sembra disponibile) per registrarci data/ora delle modifiche, modificando il codice preesistente come segue:
- Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myRan As String
'
Application.EnableEvents = False '++++
Range("AA1").Value = Now '++++
myRan = "I2:L162" '<<< L'area per i cui cambiamenti viene subito fatto un File Save
If Application.Intersect(Target, Range(myRan)) Is Nothing Then GoTo ExA 'MMMM
Debug.Print Now, Target.Address
ThisWorkbook.Save
ExA: '++++
Application.EnableEvents = True '++++
End Sub
Le istruzioni aggiunte sono marcate +++ e una e' stata modificata
In questo modo il file htm creato e' abbastanza piu' piccolo (circa 1/4) di quello creato al momento, quindi le chanche che FTPBox interferisca col salvataggio verranno diminuite
Ciao