Anthony47 ha scritto:Andando a caso con risposte e considerazioni...
Per l'errore "Riferimento non valido o non qualificato": c'e' un motivo che ti ha fatto eliminare (all'interno della Sub OneMinuteMacro) l'istruzione With ActiveWorkbook.WebOptions? Reinseriscila e ti troverai bene.
Non mi sembrava di aver tolto nulla dalla tua macro..
Anthony47 ha scritto:Mi ero accorto di alcuni svarioni sul codice che avevo postato, ho trovato solo ora il tempo per ricontrollare e aggiustare.
Non ti preoccupare e non lo dire nemmeno.. sei più che gentilissimo!
Anthony47 ha scritto:Il codice complessivo delle macro "OnTime" dovrebbe essere:
- Codice: Seleziona tutto
Public Next1Min As Date, Next15Min As Date, Next30Min As Date, Next60Min As Date
Dim StopAll As Boolean 'Stop all the schedules
'
'QUESTA E' LA TUA MACRO PRINCIPALE, quella che hai chiamato Macro3:
Sub OneMinuteMacro() 'This is your 1 minute macro with amendments
If StopAll = False Then ' StopAll??
If Next15Min < (Now - TimeSerial(0, 1, 0)) Then
Next15Min = Now + TimeSerial(0, 14, 0) '15
Application.OnTime Next15Min, "Macro15Min"
End If
'
With ActiveWorkbook.WebOptions
.RelyOnCSS = True
.OrganizeInFolder = True
.UseLongFileNames = True
.DownloadComponents = False
.RelyOnVML = False
.AllowPNG = True
.ScreenSize = msoScreenSize1024x768
.PixelsPerInch = 96
.Encoding = msoEncodingWestern
End With
With Application.DefaultWebOptions
.SaveHiddenData = True
.LoadPictures = False
.UpdateLinksOnSave = True
.CheckIfOfficeIsHTMLEditor = True
.AlwaysSaveInDefaultEncoding = False
.SaveNewWebPagesAsWebArchives = True
End With
'>>>>>>CORREGGI I PERCORSI COME DA TUA SITUAZIONE <<<<<
With ActiveWorkbook.PublishObjects.Add(xlSourceRange, _
"D:\PROVA\schema-entrate.htm" _
, "ENTRATE", "$A$1:$K$161", xlHtmlStatic, "schema entrate da dup1_6262", _
"Schema Entrate")
.Publish (True)
.AutoRepublish = False
End With
ChDir "C:\Users\mrosini\Desktop\DA DUPLICARE schema entrate\online" '<<<< SERVE??
'
'Then Reschedue myself:
Next1Min = Now + TimeSerial(0, 1, 2)
Debug.Print "Eseguo MacroOneMin", Now, Next1Min
Application.OnTime Next1Min, "OneMinuteMacro"
Else
'Stop all schedules:
On Error Resume Next
Application.OnTime Next1Min, "OneMinuteMacro", , False
Application.OnTime Next15Min, "Macro15Min", , False
Application.OnTime Next30Min, "Macro30Min", , False
Application.OnTime Next60Min, "OneHourMacro", , False
On Error GoTo 0
End If
End Sub
Sub Macro15Min() 'MACRO DI CONTROLLO
If StopAll = False Then
If Next1Min < (Now - TimeSerial(0, 0, 30)) Then
Next1Min = Now + TimeSerial(0, 1, 2)
Application.OnTime Next1Min, "OneMinuteMacro"
End If
If Next30Min < (Now - TimeSerial(0, 1, 0)) Then
Next30Min = Now + TimeSerial(0, 30, 0) '30
Application.OnTime Next30Min, "Macro30Min"
End If
'Reschedue myself:
Next15Min = Now + TimeSerial(0, 14, 0) '15
Debug.Print "Eseguo Macro15Min", Now, Next15Min
Application.OnTime Next15Min, "Macro15Min"
Else
'Stop all schedules:
On Error Resume Next
Application.OnTime Next1Min, "OneMinuteMacro", , False
Application.OnTime Next15Min, "Macro15Min", , False
Application.OnTime Next30Min, "Macro30Min", , False
Application.OnTime Next60Min, "OneHourMacro", , False
On Error GoTo 0
End If
End Sub
Sub Macro30Min() 'MACRO DI CONTROLLO
If StopAll = False Then
If Next15Min < (Now - TimeSerial(0, 1, 0)) Then
Next15Min = Now + TimeSerial(0, 14, 0) '15
Application.OnTime Next15Min, "Macro15Min"
End If
If Next60Min < (Now - TimeSerial(0, 5, 0)) Then
Next60Min = Now + TimeSerial(0, 59, 0) '60
Application.OnTime Next60Min, "OneHourMacro"
End If
'Reschedue myself:
Next30Min = Now + TimeSerial(0, 30, 0)
Debug.Print "Eseguo Macro30Min", Now, Next30Min '30
Application.OnTime Next30Min, "Macro30Min"
Else
'Stop all schedules:
On Error Resume Next
Application.OnTime Next1Min, "OneMinuteMacro", , False
Application.OnTime Next15Min, "Macro15Min", , False
Application.OnTime Next30Min, "Macro30Min", , False
Application.OnTime Next60Min, "OneHourMacro", , False
On Error GoTo 0
End If
End Sub
Sub OneHourMacro() 'MACRO DI CONTROLLO
If StopAll = False Then
If Next30Min < (Now - TimeSerial(0, 5, 0)) Then
Next30Min = Now + TimeSerial(0, 30, 0) '30
Application.OnTime Next30Min, "Macro30Min"
End If
If Next1Min < (Now - TimeSerial(0, 0, 30)) Then
Next1Min = Now + TimeSerial(0, 1, 1)
Application.OnTime Next1Min, "OneMinuteMacro"
End If
'Reschedue myself:
Next60Min = Now + TimeSerial(0, 59, 0) '60
Debug.Print "Eseguo Macro60Min", Now, Next60Min
Application.OnTime Next60Min, "OneHourMacro"
Else
'Stop all schedules:
On Error Resume Next
Application.OnTime Next1Min, "OneMinuteMacro", , False
Application.OnTime Next15Min, "Macro15Min", , False
Application.OnTime Next30Min, "Macro30Min", , False
Application.OnTime Next60Min, "OneHourMacro", , False
On Error GoTo 0
End If
End Sub
Ci sono due righe marcate <<< da esaminare e correggere
Anche il codice della Workbook_Open conteneva un errore; la macro completa:
- Codice: Seleziona tutto
Private Sub Workbook_Open()
Next1Min = Now + TimeSerial(0, 1, 2)
Application.OnTime NextOneMin, "OneMinuteMacro"
Next15Min = Now + TimeSerial(0, 14, 0)
Application.OnTime Next15Min, "Macro15Min"
Next30Min = Now + TimeSerial(0, 30, 0)
Application.OnTime Next30Min, "Macro30Min"
Next60Min = Now + TimeSerial(0, 59, 0)
Application.OnTime Next60Min, "OneHourMacro"
End Sub
Ciao
Allora.. ho sostituito lo script corretto, come da te indicato dopo aver anche sistemato i vari percorsi.
Ho inoltre inserito questo codice in "Questa cartella di lavoro":
- Codice: Seleziona tutto
Private Sub Workbook_Open()
Next1Min = Now + TimeSerial(0, 1, 2)
Application.OnTime NextOneMin, "OneMinuteMacro"
Next15Min = Now + TimeSerial(0, 14, 0)
Application.OnTime Next15Min, "Macro15Min"
Next30Min = Now + TimeSerial(0, 30, 0)
Application.OnTime Next30Min, "Macro30Min"
Next60Min = Now + TimeSerial(0, 59, 0)
Application.OnTime Next60Min, "OneHourMacro"
End Sub
Ora però all'apertura del file si genera questo errore:
P.s.
Mi ha dato errore due volte (dopo averlo aperto e chiuso 2 volte) poi ora non lo da più..
P.P.S.
Dicevo sul serio sul fare una donazione.. o al forum o direttamente a te..