Application.OnTime Now + TimeValue macro

ciao a tutti sto cercando di fare una macro per salvare i fogli di libreoffice in csv ogni 2 minuti.
Ho impostato questa macro solo che riesco a salvare i fogli ma mi da l’errore sulla ripetizione. Credo sia perchè application.ontime lo usavo con xls ma non riesco a capire se c’è un’ alternativa e qual’è. Sono giorni che giro su google.

errore sulla riga Application.OnTime Now + TimeValue(“00:00:30”), “ExportToCsv”: Errore di runtime BASIC.
Variabile dell’oggetto non impostata.
qualcuno riuscirebbe a darmi una mano?

Questo è il codice

REM ***** BASIC *****

Sub ExportToCsv
document = ThisComponent

' Use the global string tools library to generate a path to save each CSV
GlobalScope.BasicLibraries.loadLibrary("Tools")
FileDirectory = Tools.Strings.DirectoryNameoutofPath(document.getURL(), "/")

' Work out number of sheets for looping over them later.
Sheets = document.Sheets
NumSheets = Sheets.Count - 1

' Set up a propval object to store the filter properties
Dim Propval(1) as New com.sun.star.beans.PropertyValue
Propval(0).Name = "FilterName"
Propval(0).Value = "Text - txt - csv (StarCalc)"
Propval(1).Name = "FilterOptions"
Propval(1).Value ="44,34,0,1,1"   'ASCII 44=, 59 = ;  34 = "

For I = 0 to NumSheets
    ' For each sheet, assemble a filename and save using the filter
    document.getCurrentController.setActiveSheet(Sheets(I))
    Filename = FileDirectory + "/" + Sheets(I).Name + ".csv"
    FileURL = convertToURL(Filename)
    document.StoreToURL(FileURL, Propval())
Next I
Call Workbook_Open

End Sub

Private Sub Workbook_Open()
Application.OnTime Now + TimeValue(“00:00:30”), “ExportToCsv”

End Sub

Se sei ancora interessato prova così che funziona.

Sub TimerDiEsecuzione
Rem Link del quesito: https://ask.libreoffice.org/t/application-ontime-now-timevalue-macro/62293
Rem Esegue altra macro a scadenza temporale prefissata (ripetutamente)
Doc = ThisComponent
Do
Wait 120000	   ' 1Secondo=1000 1minuto=60000 ...
Call SalvaFogliInFormatoCsv ' Richiama la macro da eseguire
Loop While 1
End Sub

Sub SalvaFogliInFormatoCsv
Rem Link del quesito: https://ask.libreoffice.org/t/application-ontime-now-timevalue-macro/62293
Doc = ThisComponent
Fogli = Doc.Sheets
NrFogli = Fogli.Count - 1

Rem ===== Acquisisco l'url/percorsoNomeFile del file di avvio
Rem Nel caso di avvio da un Link/Collegamento restituisce quello di quel file
URL = Doc.GetUrl()

REM ===== Dall'URL ottenuto automaticamente ricavo "URL SENZA il NOME FILE" del file della macro
For X = Len(Url) To 1 Step -1
If InStr(X , Url , "/") <> 0 Then
PosizioneUltimaBarra = X
X = 0
End If
Next
UrlSenzaNomeFile = Left(url , PosizioneUltimaBarra)
'Print UrlSenzaNomeFile ' Test di verifica OK

Rem ===== Ciclo di salvataggio in formato csv dei vari fogli
For NrFoglio = 0 to NrFogli
	Rem Sposto il focus attivo sul foglio
	Doc.CurrentController.ActiveSheet = Fogli(NrFoglio)
	Rem Acquisisco il nome del foglio
	NomeFoglio = Fogli(NrFoglio).Name

	Rem Dimensiono l'oggetto/vettore da usare con tale foglio
	Dim ProvaCsv(1) As New com.sun.star.beans.PropertyValue 
	Rem Imposto i parametri per esportare il foglio in formato csv
	ProvaCsv(0).Name  = "FilterName"
	ProvaCsv(0).Value = "Text - txt - csv (StarCalc)"
	ProvaCsv(1).Name  = "FilterOptions"
	ProvaCsv(1).Value = "44,34,0,1,1"   'ASCII 44=, 59 = ;  34 = "
	Rem Imposto Url e nome del file (completo)
	NomeFileCompleto = UrlSenzaNomeFile & NomeFoglio & ".csv"
	'Print NomeFileCompleto ' Test di verifica OK

	Rem Salvo il foglio in formato .csv nella stessa cartella del file di avvio della macro
	Rem I file salvati in precedenza che hanno lo stesso nome verranno sovrascritti
	Doc.StoreToURL(NomeFileCompleto , ProvaCsv() )

	Rem Cancello/Reinizializzo il vettore/oggetto così da riutilizzarlo nel ciclo con il prossimo foglio
	Erase ProvaCsv()
Next

End Sub

Allego esempio.
Test - Macro - SalvaFogliInFormatoCsvNellaStessaCartella a ScadenzaTemporaleRipetuta.ods (13.5 KB)