Pagina 1 di 1

[RISOLTO] Macro provoca crash

Inviato: mercoledì 1 febbraio 2023, 17:14
da amax
Buongiorno, ho un file con delle macro che hanno sempre funzionato, una in particolare adesso si blocca e manda in crash.
In particolare la macro, salva alcuni dati (celle) in un file esterno. Lancio la macro che fa il suo dovere, apre il file di destinazione e copia le celle al loro posto, però a questo punto si blocca tutto. ho la sensazione come se ci fosse qualcosa che va in loop, ma non riesco a capire cosa.
Allego la macro, Uso MacOs 13.1

Grazie

Codice: Seleziona tutto

Sub SalvaInContabilita

Dim DocName as object, DocUlr as string, dummy(), range as object, sVar as Integer
Doc = ThisComponent
sheet = Doc.currentcontroller.getActiveSheet() 'Seleziona il foglio visualizzato
NomeFoglioArchivio = sheet.getCellRangeByName("A3").String ' il nome del foglio di destinazione

sVar = MsgBox( "Vuoi continuare con il salvataggio [ " & NomeFoglioArchivio &  " " & sheet.getCellRangeByName("A4").string & " ]  nel file di contabilità?",   MB_YESNO )

If sVar = IDYES  Then
sFileName ="/Users/utente/Documents/Contabilità/2023/23-Riepilogo-Contabilità.ods"  ' file destinazione NAS
'sFileName ="/Users/utente/Desktop/Contabilità-2020.ods" 'file destinazione test
DocUrl = ConvertToURL(sFileName)
DocName = StarDesktop.loadComponentFromURL (DocUrl, "_blank",0, Dummy() )
'Preventivo = DocName.Sheets.getbyname("Preventivi") ' il nome del foglio di destinazione

If NomeFoglioArchivio = "Preventivo n°" Then
Archivio = DocName.Sheets.getbyname("Ultima Preventivo")
Else
Archivio = DocName.Sheets.getbyname("Ultima Fattura")
End if

REM ---Loop che controlla celle di colonna A ...
'incrementando il valore della variabile “Riga” fino a trovare il valore della prima riga libera
Riga = 1
Do while Archivio.getCellByPosition(0,Riga).string <> ""
Riga = Riga + 1
Loop
Archivio.getCellByPosition(0,Riga).String = Sheet.getCellRangeByName("E4").String 		'Riferimento
Archivio.getCellByPosition(2,Riga).String = Sheet.getCellRangeByName("F3").String 			'Cliente
Archivio.getCellByPosition(3,Riga).String = Sheet.getCellRangeByName("F4").String			'Nome
Archivio.getCellByPosition(15,Riga).String = Sheet.getCellRangeByName("A4").String		'N°
Archivio.getCellByPosition(5,Riga).Formula = Sheet.getCellRangeByName("C4").Formula	'Data
Archivio.getCellByPosition(6,Riga).String = Sheet.getCellRangeByName("A1").String			'Descrizione
Archivio.getCellByPosition(7,Riga).Value = Sheet.getCellRangeByName("A8").Value		'Imponibile
Archivio.getCellByPosition(8,Riga).Value = Sheet.getCellRangeByName("C8").Value		'IVA
Archivio.getCellByPosition(9,Riga).Value = Sheet.getCellRangeByName("D8").Value		'Totale
DocName.store
DocName.Close(true)
MsgBox (" Archiviazione  [ " & NomeFoglioArchivio & " " & sheet.getCellRangeByName("A4").string & " ]  EFFETTUATA con successo nel file di contabilità.")
Else
MsgBox (" Archiviazione  [ " & NomeFoglioArchivio & " " & sheet.getCellRangeByName("A4").string & " ]  NON effettuata nel file di contabilità.")
End If

End Sub

Re: Macro provoca crash

Inviato: giovedì 2 febbraio 2023, 17:58
da patel
Allega un file di esempio da testare, la macro sembra OK, altrimenti avvia la macro con F8 e procedi step by step per seguire il percorso.

Re: Macro provoca crash

Inviato: giovedì 16 marzo 2023, 19:10
da nickGiard
Mi sento di dare un piccolo suggerimento, almeno dal punto di vista formale:
sostituire getCellRangeByName con getCellByName, anche se l'oggetto restituito sembra comunque una cella.
Nel caso fosse un Range, le proprietà esposte sarebbero errate.

Re: Macro provoca crash

Inviato: sabato 18 marzo 2023, 12:15
da Gaetanopr
nickGiard ha scritto: giovedì 16 marzo 2023, 19:10
sostituire getCellRangeByName con getCellByName, anche se l'oggetto restituito sembra comunque una cella.
Nel caso fosse un Range, le proprietà esposte sarebbero errate.
Il metodo da te indicato non esiste, sia per cella che per range si usa getCellRangeByName, solo in caso di utilizzo delle coordinate con la numerazione si distingue la cella dal range, ma in questo modo

Codice: Seleziona tutto

getCellRangeByPosition
e

Codice: Seleziona tutto

getCellByPosition

Re: Macro provoca crash

Inviato: sabato 18 marzo 2023, 19:16
da unlucky83
Forse è sufficiente mettere un WAIT tra questi due comandi

Codice: Seleziona tutto

DocName.store
DocName.Close(true)

Re: Macro provoca crash

Inviato: martedì 12 dicembre 2023, 19:47
da amax
grazie a tutti per le risposte e mi scuso se non ho risposto prima.
Il problema era legato all'aggiornamento del software, ho cancellato tutti i file e reinstallato e non ho avuto più problemi.