[Risolto] Ripetere n volte una macro.
[Risolto] Ripetere n volte una macro.
Premetto che non sono un programmatore, mi piace cercare di risolvere da solo i problemi che mi si pongono davanti.
Uso un PC con windows 10 Pro su cui ho installato sia LibreOffice che OpenOffice. Da molti anni uso i programmi Microsoft solo se costretto per lavoro.
Penso che a breve migrerò tutto su Linux
Ho realizzato un programmino in Python per scaricare in continuo dati da un datalogger, e adesso, dopo qualche mese di apprendimento, sono riuscito a ottenere file in formato csv facilmente elaborabili.
MA... Prima di arrivare a questo risultato ho prodotto molte decine di file di testo con centinaia di migliaia di righe praticamente ingestibili.
Per facilitarmi la vita, ovvero trasporre in una sola riga, e con i corretti separatori, le informazioni in origine su diverse righe, ho provato ad aprirli con writer e registrare più macro in funzione delle diverse situazioni che ho nel file, e ci sono riuscito. Le ho abbinate a diverse coppie di caratteri per lanciarle e sono piuttosto soddisfatto.
I casi sono 5 e lanciare 5 macro sarebbe cosa ben diversa che lanciarne una per ogni riga da ottenere, ovvero diverse migliaia di volte.
Ho verificato che non è cosa da fare, almeno per me, provare a modificare a mano le macro registrate male, magari per un errore di pressione tasti, mi conviene registrarla di nuovo.
Per provare a lanciare un numero finito di volte una delle macro ottenute avevo provato a inserire il controllo seguente, che mi sembra la scelta migliore, visto che file di questo tipo non ne produrrò più, ma evidentemente nelle due o tre prove che ho fatto avevo sbagliato qualcosa, perché il ciclo si blocca dopo il primo giro.
Allego il codice della macro originale modificata col controllo For / Next, (Che ho commentato per renderlo inoffensivo)... e una piccola porzione del file di log, con alcune righe originali e altre "trattate". La necessità delle diverse macro è dovuta al numero "ciclo", che va da 1 a 5 caratteri. Il file originale ha oltre 100k righe.
For contatore=inizio To fine [Step passo]
blocco istruzioni (Cioè la macro registrata)
Next [contatore]
Sono convinto che sia una sciocchezza, ma a "sapere come", tutto può essere una sciocchezza.
Grazie in anticipo per l'aiuto, Merca60.
Uso un PC con windows 10 Pro su cui ho installato sia LibreOffice che OpenOffice. Da molti anni uso i programmi Microsoft solo se costretto per lavoro.
Penso che a breve migrerò tutto su Linux
Ho realizzato un programmino in Python per scaricare in continuo dati da un datalogger, e adesso, dopo qualche mese di apprendimento, sono riuscito a ottenere file in formato csv facilmente elaborabili.
MA... Prima di arrivare a questo risultato ho prodotto molte decine di file di testo con centinaia di migliaia di righe praticamente ingestibili.
Per facilitarmi la vita, ovvero trasporre in una sola riga, e con i corretti separatori, le informazioni in origine su diverse righe, ho provato ad aprirli con writer e registrare più macro in funzione delle diverse situazioni che ho nel file, e ci sono riuscito. Le ho abbinate a diverse coppie di caratteri per lanciarle e sono piuttosto soddisfatto.
I casi sono 5 e lanciare 5 macro sarebbe cosa ben diversa che lanciarne una per ogni riga da ottenere, ovvero diverse migliaia di volte.
Ho verificato che non è cosa da fare, almeno per me, provare a modificare a mano le macro registrate male, magari per un errore di pressione tasti, mi conviene registrarla di nuovo.
Per provare a lanciare un numero finito di volte una delle macro ottenute avevo provato a inserire il controllo seguente, che mi sembra la scelta migliore, visto che file di questo tipo non ne produrrò più, ma evidentemente nelle due o tre prove che ho fatto avevo sbagliato qualcosa, perché il ciclo si blocca dopo il primo giro.
Allego il codice della macro originale modificata col controllo For / Next, (Che ho commentato per renderlo inoffensivo)... e una piccola porzione del file di log, con alcune righe originali e altre "trattate". La necessità delle diverse macro è dovuta al numero "ciclo", che va da 1 a 5 caratteri. Il file originale ha oltre 100k righe.
For contatore=inizio To fine [Step passo]
blocco istruzioni (Cioè la macro registrata)
Next [contatore]
Sono convinto che sia una sciocchezza, ma a "sapere come", tutto può essere una sciocchezza.
Grazie in anticipo per l'aiuto, Merca60.
- Allegati
-
- 20240103_EsempioBaseDati_Merca60.odt
- (30.98 KiB) Scaricato 32 volte
-
- 20240103_Macro_Merca60.txt
- (52.63 KiB) Scaricato 30 volte
Ultima modifica di Merca60 il venerdì 5 gennaio 2024, 21:39, modificato 3 volte in totale.
OpenOffice 4.1.6 su Windows 10
Re: Ripetere n volte una macro.
Ciao e benvenuto sul forum.
Buon proseguimento.Se intanto ti vuoi presentare, farai cosa gradita. Puoi farlo in questa sezione -> https://forum.openoffice.org/it/forum/v ... m.php?f=16
L’utente che apre un quesito si impegna:In caso di inosservanza saremo costretti ad azioni di “richiamo”, sospensione o chiusura del profilo utente.
- a seguirlo dando riscontro quanto prima alle risposte ricevute nel giro di qualche giorno;
- inserire il [Risolto] e la ✔ verde come previsto;- rispettare le altre regole implicite del forum ( Istruzioni per nuovi arrivati ).
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Ripetere n volte una macro.
Ciao, il problema quasi sicuramente sta nel fatto che con il ciclo dichiari per 90 volte gli stessi array, prova a mettere fuori dal ciclo tutte le istruzioni di dichiarazione e poi crei il ciclo con le altre istruzioni, io non posso farlo in quanto ci sono 183 array. Ti faccio un piccolo esempio.
Tutte le istruzioni Dim args vanno PRIMA DEL CICLO.
qualcosa del genere e se ci fai caso args9 è uguale ad args10, quindi il 10 non ha senso puoi usare soltanto il 9 e stessa cosa se ci sono altre dichiarazioni uguali, in questo modo snellisci di molto il codice.
Tutte le istruzioni Dim args vanno PRIMA DEL CICLO.
qualcosa del genere e se ci fai caso args9 è uguale ad args10, quindi il 10 non ha senso puoi usare soltanto il 9 e stessa cosa se ci sono altre dichiarazioni uguali, in questo modo snellisci di molto il codice.
Codice: Seleziona tutto
sub macro2_numeri
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem - Tentativo di contatore per ripetere n volte la macro
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Text"
args2(0).Value = ", "
rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Text"
args5(0).Value = ","
rem ----------------------------------------------------------------------
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "Text"
args8(0).Value = " "
rem ----------------------------------------------------------------------
dim args9(1) as new com.sun.star.beans.PropertyValue
args9(0).Name = "Count"
args9(0).Value = 1
args9(1).Name = "Select"
args9(1).Value = false
dim args10(1) as new com.sun.star.beans.PropertyValue
args10(0).Name = "Count"
args10(0).Value = 1
args10(1).Name = "Select"
args10(1).Value = false
for counter=1 to 90
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args10())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args2())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args5())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args8())
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args9())
rem - comando di chiusura ciclo di ripetizione
Next
end sub
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Ripetere n volte una macro.
Mmh..
Fammi capire.
Premetto che non conosco, (ancora), il significato dei comandi Visual Basic, anche se immaginavo che "dim" fosse una dichiarazione, infatti il "mio for" lo avevo inserito dopo le prime righe, che riporto qui,
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
sub macro2_numeri
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Ma evidentemente non va bene.
La macro che ho riportato è pari pari quella prodotta da Writer e che mi serve per "trasformare" un gruppo di righe in una sola, ed è tutto questo codice che dovrei ripetere, tutto insieme, per 90 volte, ( o 900, o 9000). ars9 è uguale ad args 10 perché io ho prmuto lo stesso tasto, come ce ne sono molti altri in seguito. Avevo provato a togliere qualcosa per correggere un mio errore di battitura ma si è bloccato tutto, evidentemente l'interprete vuole che quei numeri siano tutti in sequenza e senza ripetizioni.
Come fai notare te Il fatto che nella marco ci sia un "dim" ad ogni azione, cioè ad ogni pressione di un tasto durante la registrazione della macro, può essere un problema, perché significherebbe che quello che vorrei ottenere io non è possibile con questo sistema, ma andrebbe fatto un codice del tutto diverso, che non usi delle macro.. A quel punto userei Python, che sto cercando di imparare ad usare.
( la vedo male...
Fammi capire.
Premetto che non conosco, (ancora), il significato dei comandi Visual Basic, anche se immaginavo che "dim" fosse una dichiarazione, infatti il "mio for" lo avevo inserito dopo le prime righe, che riporto qui,
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
sub macro2_numeri
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Ma evidentemente non va bene.
La macro che ho riportato è pari pari quella prodotta da Writer e che mi serve per "trasformare" un gruppo di righe in una sola, ed è tutto questo codice che dovrei ripetere, tutto insieme, per 90 volte, ( o 900, o 9000). ars9 è uguale ad args 10 perché io ho prmuto lo stesso tasto, come ce ne sono molti altri in seguito. Avevo provato a togliere qualcosa per correggere un mio errore di battitura ma si è bloccato tutto, evidentemente l'interprete vuole che quei numeri siano tutti in sequenza e senza ripetizioni.
Come fai notare te Il fatto che nella marco ci sia un "dim" ad ogni azione, cioè ad ogni pressione di un tasto durante la registrazione della macro, può essere un problema, perché significherebbe che quello che vorrei ottenere io non è possibile con questo sistema, ma andrebbe fatto un codice del tutto diverso, che non usi delle macro.. A quel punto userei Python, che sto cercando di imparare ad usare.
( la vedo male...
OpenOffice 4.1.6 su Windows 10
Re: Ripetere n volte una macro.
Non è questione di usare il Basic o il Python in ogni caso la macro andrebbe scritta seguendo certe regole uguali per entrambi i linguaggi.
Dopo questa premessa cerco di spiegarmi meglio, avviare la stessa macro per 900 volte non è come creare un ciclo che si ripete per 900 volte in una sola volta, per i seguenti motivi:
Quando avvii la macro 900 volte singolarmente (quindi 900 volte premi un pulsante) alla fine delle istruzioni la macro termina e tutte le variabili vengono azzerate, le istruzioni terminano l'operato e appena la lanci nuovamente si ricomincia da capo e tutto funziona.
Diversamente se invece di premere il pulsante 900 volte(una cosa impraticabile) metti le stesse istruzioni dentro ad un ciclo di n 900 devi stare attento a cosa metti dentro, alcune istruzioni della macro vanno inserite una sola volta quindi devono stare al di fuori e prima del ciclo altrimenti le ripeterai per 900 volte(cosa che non serve e che nel tuo caso porta ad avere errori), all'internoi del ciclo dovrai inserire SOLO le istruzioni da ripetere n volte che nel tuo caso sono soltanto le esecuzioni del dispatcher ad esempio
Codice: Seleziona tutto
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args2())
Le dichiarazioni vanno fatte una sola volta quindi fuori e prima del ciclo ad esempio
Codice: Seleziona tutto
dim args9(1) as new com.sun.star.beans.PropertyValue
args9(0).Name = "Count"
args9(0).Value = 1
args9(1).Name = "Select"
args9(1).Value = false
La tua macro dovrà iniziare così
Codice: Seleziona tutto
sub macro2_numeri
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem - Tentativo di contatore per ripetere n volte la macro
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Text"
args2(0).Value = ", "
REM TUTTO IL BLOCCO DI ISTRUZIONI che va da dim arg(n) a args(n).Value
rem qua inizi il ciclo
for counter 1 to 900
rem istruzioni di dispatcher
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args2())
next counter
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Openoffice 4.1.13 su windows 10
Re: Ripetere n volte una macro.
Forse ho capito...
Devo fare qualche prova con poche righe e mi ci vorrà comunque un pò di tempo.
Posso "sospendere" l'argomento?
Grazie per ora!
Devo fare qualche prova con poche righe e mi ci vorrà comunque un pò di tempo.
Posso "sospendere" l'argomento?
Grazie per ora!
OpenOffice 4.1.6 su Windows 10
Re: Ripetere n volte una macro.
Allora.
Ho seguito le istruzioni, creato un file di testo ridotto per le prove e ricavato questo codice, che funziona.
C'è il problema che quando, durante l'esecuzione, c'è da andare a capo, perde il filo e cancella quello che io non vorrei, ma evidentemente gli ho detto di fare così...
il ciclo dopo "si riprende", e va bene così.
In basso il testo usato per la prova. E' buffo che cambiando dimensione dei caratteri, giustamente, cambia il punto in cui avviene il "danno".
Ora provo con la macro più complessa, che non dovrebbe avere questo problema perché di a capo ce ne sono diversi e dovrebbero essere tutti "dentro" il controllo
Al momento non mi interessa capire come rimediare a questa cosa, è solo una prova.
P.S. Io sono un tecnico di laboratorio universitario, abituato a essere multifunzione, vero, ma sono un meccanico...
REM ***** BASIC *****
sub ProvaBreve2
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
rem - dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Text"
args2(0).Value = ", "
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Text"
args5(0).Value = ", "
rem - qua iniza il ciclo
for counter=1 to 10
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args2())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array())
rem ----------------------------------------------------------------------
rem - dim args5(0) as new com.sun.star.beans.PropertyValue
rem - args5(0).Name = "Text"
rem - args5(0).Value = ", "
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args5())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
next counter
end sub
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Testo prima della plurimacro
1 False
stato relay aperto
2 False
stato relay aperto
3 False
stato relay aperto
4 False
stato relay aperto
5 False
stato relay aperto
6 False
stato relay aperto
7 False
stato relay aperto
8 False
stato relay aperto
9 False
stato relay aperto
10 False
stato relay aperto
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Testo dopo la plurimacro, impostata per 10 ripetizioni (La mia pagina è in formato orizzontale e carattere 10 pt, e non torna con la larghezza di questo form).
1 False, stato relay aperto, 2 False, stato relay aperto, 3 False, stato relay aperto, 4 False, stato relay aperto, 5 False, stato, elay aperto, , False, stato relay aperto, 7 False, stato relay aperto, 8 False, stato relay aperto, 9 False, stato relay, perto
10 False
stato relay aperto
Ho seguito le istruzioni, creato un file di testo ridotto per le prove e ricavato questo codice, che funziona.
C'è il problema che quando, durante l'esecuzione, c'è da andare a capo, perde il filo e cancella quello che io non vorrei, ma evidentemente gli ho detto di fare così...
il ciclo dopo "si riprende", e va bene così.
In basso il testo usato per la prova. E' buffo che cambiando dimensione dei caratteri, giustamente, cambia il punto in cui avviene il "danno".
Ora provo con la macro più complessa, che non dovrebbe avere questo problema perché di a capo ce ne sono diversi e dovrebbero essere tutti "dentro" il controllo
Al momento non mi interessa capire come rimediare a questa cosa, è solo una prova.
P.S. Io sono un tecnico di laboratorio universitario, abituato a essere multifunzione, vero, ma sono un meccanico...
REM ***** BASIC *****
sub ProvaBreve2
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
rem - dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Text"
args2(0).Value = ", "
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Text"
args5(0).Value = ", "
rem - qua iniza il ciclo
for counter=1 to 10
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args2())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array())
rem ----------------------------------------------------------------------
rem - dim args5(0) as new com.sun.star.beans.PropertyValue
rem - args5(0).Name = "Text"
rem - args5(0).Value = ", "
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args5())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
next counter
end sub
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Testo prima della plurimacro
1 False
stato relay aperto
2 False
stato relay aperto
3 False
stato relay aperto
4 False
stato relay aperto
5 False
stato relay aperto
6 False
stato relay aperto
7 False
stato relay aperto
8 False
stato relay aperto
9 False
stato relay aperto
10 False
stato relay aperto
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Testo dopo la plurimacro, impostata per 10 ripetizioni (La mia pagina è in formato orizzontale e carattere 10 pt, e non torna con la larghezza di questo form).
1 False, stato relay aperto, 2 False, stato relay aperto, 3 False, stato relay aperto, 4 False, stato relay aperto, 5 False, stato, elay aperto, , False, stato relay aperto, 7 False, stato relay aperto, 8 False, stato relay aperto, 9 False, stato relay, perto
10 False
stato relay aperto
OpenOffice 4.1.6 su Windows 10
Re: Ripetere n volte una macro.
Perfetto. Spostare le 180 dichiarazioni della macro originale è stata proprio una palla, ma funziona.
Però avrei ancora bisogno di una precisazione...
Presumo che le millanta dichiarazioni siano ognuna relativa alla pressione di un singolo tasto. In parecchie c'è il nome "Count" e il valore "1".
Suppongo che questo corrisponda alla pressione del tasto freccia a destra, che è quello che ho usato più di frequente.
Prima di fare delle prove in modo un pò bovino chiedo: per ridimensionareun pò il codice ha senso cancellare, per esempio, 4 dichiarazioni uguali e sostituire in quella precedente il valore "1" con "5"?
Lo chiedo perché non vorrei fare casino con gli "args" non più in successione.
Però avrei ancora bisogno di una precisazione...
Presumo che le millanta dichiarazioni siano ognuna relativa alla pressione di un singolo tasto. In parecchie c'è il nome "Count" e il valore "1".
Suppongo che questo corrisponda alla pressione del tasto freccia a destra, che è quello che ho usato più di frequente.
Prima di fare delle prove in modo un pò bovino chiedo: per ridimensionareun pò il codice ha senso cancellare, per esempio, 4 dichiarazioni uguali e sostituire in quella precedente il valore "1" con "5"?
Lo chiedo perché non vorrei fare casino con gli "args" non più in successione.
OpenOffice 4.1.6 su Windows 10
Re: Ripetere n volte una macro.
RISOLTO!
La mia ultima supposizione era giusta: ho tanto alleggerito la macro eliminando tutte le inutili ripetizioni del codice, e in questo modo è anche estremamente facile adattarlo a eventuali cambiamenti nella posizione di caratteri e spazi nel file da trattare.
Allego un esempio dei dati che volevo "trattare" riportandoli tutti su una riga, in modo da poterli elaborare come un file csv con la virgola come delimitartore.
Il codice della macro da cui sono partito e quello della "multimacro" nata seguedo le indicazioni di Gaetanopr
spero che tutto questo possa essere di aiuto anche ad altri.
GRAZIE!!
Mi si è aperto uno spiraglino nel mondo della programmazione e delle macro.
La mia ultima supposizione era giusta: ho tanto alleggerito la macro eliminando tutte le inutili ripetizioni del codice, e in questo modo è anche estremamente facile adattarlo a eventuali cambiamenti nella posizione di caratteri e spazi nel file da trattare.
Allego un esempio dei dati che volevo "trattare" riportandoli tutti su una riga, in modo da poterli elaborare come un file csv con la virgola come delimitartore.
Il codice della macro da cui sono partito e quello della "multimacro" nata seguedo le indicazioni di Gaetanopr
spero che tutto questo possa essere di aiuto anche ad altri.
GRAZIE!!
Mi si è aperto uno spiraglino nel mondo della programmazione e delle macro.
- Allegati
-
- MultiMacro_Dati.txt
- (2.85 KiB) Scaricato 30 volte
-
- Multimacro_MacroDiPartenza.txt
- (52.21 KiB) Scaricato 26 volte
-
- Multimacro_MacroDefinitiva.txt
- (11.64 KiB) Scaricato 26 volte
OpenOffice 4.1.6 su Windows 10