[Risolto] Simulare pressione tasto invio

Creare una macro - Scrivere uno script - Usare le API
Rispondi
mario-T
Messaggi: 38
Iscritto il: venerdì 7 marzo 2014, 12:48

[Risolto] Simulare pressione tasto invio

Messaggio da mario-T »

Ciao
è possibile durante lo svolgimento di una macro simulare la pressione del tasto invio per evitare che lo debba premere io?
Ad esempio se un copia incolla va a finre su delle celle piene, il programma si ferma ad aspettare che io prema invio, è questo genere di situazioni che vorrei evitare.
Grazie
Ultima modifica di charlie il venerdì 21 ottobre 2016, 8:36, modificato 2 volte in totale.
Motivazione: Inserita spunta verde
LibreOffice 7.3.7.2 su LinuxMint 21.3
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Simulare pressione tasto invio

Messaggio da patel »

allega un file di esempio in modo da capire meglio e testare l'eventuale soluzione
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
mario-T
Messaggi: 38
Iscritto il: venerdì 7 marzo 2014, 12:48

Re: Simulare pressione tasto invio

Messaggio da mario-T »

Ciao
ho allegato il file TEST.ods
visto che ci sono, alla prima richiesta di mio intervento, dovrei anche rispondere si, prima di dare invio.....
In pratica la macro dovrebbe mettere insieme (nella stessa cella) il nome evidenziato, con il cognome della cella soprastante.
Grazie
Allegati
TEST.ods
(12.12 KiB) Scaricato 213 volte
LibreOffice 7.3.7.2 su LinuxMint 21.3
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Simulare pressione tasto invio

Messaggio da patel »

non sono certo di aver capito bene ma prova questa macro (cancella la tua registrata)

Codice: Seleziona tutto

sub Main
doc   = ThisComponent
sh = doc.Sheets(0)
ultimariga = 6 ' righe e colonne si contano a partire da zero
for riga = 2 to ultimariga step 2 
  nome = sh.GetCellbyPosition(4, riga ).string
  Cognome = sh.GetCellbyPosition(4, riga-1 ).string
  CognomeNome = Cognome & " " & nome
  sh.GetCellbyPosition(4, riga-1 ).string  = CognomeNome
next
end sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
mario-T
Messaggi: 38
Iscritto il: venerdì 7 marzo 2014, 12:48

Re: Simulare pressione tasto invio

Messaggio da mario-T »

Ciao
innanzitutto, grazie.
Poi... ho modificato la macro per le mie esigenze, ed il risulato è questo

Codice: Seleziona tutto

Sub OnSelectionChange(Target)
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
doc   = ThisComponent
sh = doc.Sheets(0)

   oRange=ThisComponent.getcurrentselection()
   aPos=oRange.getRangeAddress()
   c=aPos.StartRow
   r=aPos.StartColumn
rem Sh = Target.getSpreadsheet()
rem addr = Target.getCellAddress()
rem r = addr.row
rem c= addr.column
rem print "colonna = " & r & "  riga = " & c

nome = sh.GetCellbyPosition(r, c ).string
Cognome = sh.GetCellbyPosition(r, c-1 ).string
CognomeNome = Cognome & " " & nome
sh.GetCellbyPosition(r, c-1 ).string  = CognomeNome

dispatcher.executeDispatch(document, ".uno:DeleteRows", "", 0, Array())
End Sub
sembra funzionare, può sembrare strano, ma la macro mi serve perchè devo spesso scaricare dei gran pdf con pagine e pagine di tabelle. Con okular e la selezione tabella, riesco a trasferire i dati in calc, ma alcuni campi, random, vengono divisi su sue righe, la macro serve per ricomporre il contenuto in una unica cella.
Ancora grazie
LibreOffice 7.3.7.2 su LinuxMint 21.3
Rispondi