Vglider
10-01-2020, 11:04
Salve a tutti, sono nuovo quì quindi premetto subito che se ho sbagliato settore per il thread è perchè sono poco avvezzo al forum.
Vi spiego la mia situazione:
ho un grosso file xlsm che fa il suo lavoro perfettamente. C'è al suo interno una tabella con dei dati settimanali divisi per giorni della settimana (riga "LUNEDì", riga "MARTEDì", etc.). Il file viene aggiornato una volta a settimana da un utente e/o saltuariamente in caso di problematiche.
Problema:
Vorrei che creasse un CSV in automatico senza che qualcuno lanci la macro.
A file chiuso dovrebbe lanciare questa sub, che riporto sotto, che fa quel che mi serve:
Sub saveRangeToCSV()
Dim myCSVFileName As String
Dim myWB As Workbook
Dim tempWB As Workbook
Dim rngToSave As Range
Application.DisplayAlerts = False
On Error GoTo err
Set myWB = ThisWorkbook
myCSVFileName = myWB.Path & "\" & "Il_Mio_Nome_File" & ".csv"
Set rngToSave = Range("K72:U76")
rngToSave.Copy
Set tempWB = Application.Workbooks.Add(1)
With tempWB
.Sheets(1).Range("A1").PasteSpecial xlPasteValues
.SaveAs Filename:=myCSVFileName, FileFormat:=xlCSV, CreateBackup:=False
.Close
End With
err:
Application.DisplayAlerts = True
End Sub
Lanciandola a mano funziona, quindi tutto ok.
Ho provato ad aggiungere questa Sub sotto:
Sub Automatico()
Call saveRangeToCSV
'ontime fissa orario operazione
Application.OnTime TimeValue("17:00:00"), "Automatico"
End Sub
Ma non mi lancia il comando in automatico quando dovrebbe avviarsi.
Qualcuno ha consigli o suggerimenti?
(non chiedo il codice voglio solo capire dov'è il mio errore!)
Ho appena testato anche questo codice:
Application.OnTime Now + TimeValue("00:00:10"), "saveRangeToCSV"
lancio la macro a file aperto per vedere se succede qualcosa.
Ho salvato la Sub saveRangeToCSV su un file omonimo (saveRangeToCSV .vba) nella stessa cartella dell'xlsm e dopo 10 secondi come richiesto mi da come errore:
Impossibile eseguire la macro ''...(percorso e nome file).xlsm'!saveRangeToCSV'. E' possibile che tale macro non sia disponibile nella cartella di lavoro o che tutte le macro siano disattivate.
Non so più dove sbattere la testa da 3 giorni :muro:
Vi spiego la mia situazione:
ho un grosso file xlsm che fa il suo lavoro perfettamente. C'è al suo interno una tabella con dei dati settimanali divisi per giorni della settimana (riga "LUNEDì", riga "MARTEDì", etc.). Il file viene aggiornato una volta a settimana da un utente e/o saltuariamente in caso di problematiche.
Problema:
Vorrei che creasse un CSV in automatico senza che qualcuno lanci la macro.
A file chiuso dovrebbe lanciare questa sub, che riporto sotto, che fa quel che mi serve:
Sub saveRangeToCSV()
Dim myCSVFileName As String
Dim myWB As Workbook
Dim tempWB As Workbook
Dim rngToSave As Range
Application.DisplayAlerts = False
On Error GoTo err
Set myWB = ThisWorkbook
myCSVFileName = myWB.Path & "\" & "Il_Mio_Nome_File" & ".csv"
Set rngToSave = Range("K72:U76")
rngToSave.Copy
Set tempWB = Application.Workbooks.Add(1)
With tempWB
.Sheets(1).Range("A1").PasteSpecial xlPasteValues
.SaveAs Filename:=myCSVFileName, FileFormat:=xlCSV, CreateBackup:=False
.Close
End With
err:
Application.DisplayAlerts = True
End Sub
Lanciandola a mano funziona, quindi tutto ok.
Ho provato ad aggiungere questa Sub sotto:
Sub Automatico()
Call saveRangeToCSV
'ontime fissa orario operazione
Application.OnTime TimeValue("17:00:00"), "Automatico"
End Sub
Ma non mi lancia il comando in automatico quando dovrebbe avviarsi.
Qualcuno ha consigli o suggerimenti?
(non chiedo il codice voglio solo capire dov'è il mio errore!)
Ho appena testato anche questo codice:
Application.OnTime Now + TimeValue("00:00:10"), "saveRangeToCSV"
lancio la macro a file aperto per vedere se succede qualcosa.
Ho salvato la Sub saveRangeToCSV su un file omonimo (saveRangeToCSV .vba) nella stessa cartella dell'xlsm e dopo 10 secondi come richiesto mi da come errore:
Impossibile eseguire la macro ''...(percorso e nome file).xlsm'!saveRangeToCSV'. E' possibile che tale macro non sia disponibile nella cartella di lavoro o che tutte le macro siano disattivate.
Non so più dove sbattere la testa da 3 giorni :muro: