Pagina 1 di 1

Macro personale da eseguire su più file

Inviato: mercoledì 23 ottobre 2024, 0:00
da Giuda
Salve a tutti,
Ho costruito delle semplici macro per calc.
Vorrei eseguirle nei vari file *.calc che apro.
Ho capito che le macro non devono stare nei documenti ma devono stare in Macro personali/Basic/Modulo 1
Quando premo lo keystroke dedicato mi compare l'errore
>Errore dello schema di scripting durante l'esecuzione dello script Basic
>wnd.sun.star.script:standard.Modulo1.Uniscecelle
>The following basic script could not be found
>library: ecc.
>module: ecc.
>method: ecc.
>location: ecc.
Qualcuno può dirmi cortesemente dove/come mettere le macro o farmi un semplicissimo esempio con "ciao mondo"
Grazie

Re: Macro personale da eseguire su più file

Inviato: mercoledì 23 ottobre 2024, 9:13
da charlie
Ciao, la collocazione in Macro personali > Standard > Module1 è corretta per eseguire le macro in file diversi.
Ma, sono macro "normali" come print "Ciao mondo" o richiamano librerie che se non vengono trovate ti danno errore?

Re: Macro personale da eseguire su più file

Inviato: mercoledì 23 ottobre 2024, 12:56
da Giuda
Grazie per la risposta. Sono macro semplicissime e non richiamano librerie (non sarei in grado di farlo). In Calc velocizzano alcuni comandi che si fanno col mouse in comandi da tastiera, ad es.:

>Sub Cancellacella() ' Cancella una cella e sposta il contenuto della riga a sinistra
>Selection.Delete Shift:=xlToLeft
>End Sub
Ho messo nello stesso modulo più diverse routine semplici. Ho sbagliato?

Ho provato ad aggiungere nella routine
>oDoc = ThisComponent
ma mi dà errore lo stesso.

Re: Macro personale da eseguire su più file

Inviato: mercoledì 23 ottobre 2024, 14:49
da charlie
Ho provato la tua macro e non funziona nemmeno se inserita a livello file.
Non mi intendo di macro per Calc, allora ho interrogato ChatGPT (intelligenza artificiale) che mi ha dato questo codice:

Codice: Seleziona tutto

Sub CancellaCellaCorrente
    Dim oDoc As Object
    Dim oFoglio As Object
    Dim oSelezione As Object
    
    ' Ottieni il documento attivo
    oDoc = ThisComponent
    
    ' Ottieni il foglio attivo
    oFoglio = oDoc.CurrentController.ActiveSheet
    
    ' Ottieni la cella selezionata corrente
    oSelezione = oDoc.CurrentSelection
    
    ' Cancella il contenuto della cella selezionata
    oSelezione.clearContents(1023) ' 1023 cancella tutto il contenuto (valori, formule, formattazione ecc.)
End Sub

L'ho provato e mi pare funzioni.