[Risolto] Copia e incolla speciale

Discussioni sull'applicazione per i fogli di calcolo
Nando69
Messaggi: 484
Iscritto il: lunedì 21 settembre 2020, 11:03

Re: [Risolto] Copia e incolla speciale

Messaggio da Nando69 »

Ciao,capisco. Riguardo le macro spero qualcuno mi possa aiutare in tal senso
Libre Office 7.3.0.3
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2996
Iscritto il: martedì 18 maggio 2010, 17:01

Re: [Risolto] Copia e incolla speciale

Messaggio da lucky63 »

.
Sulla base della tua ultima richiesta ho applicato una piccola macro (poi rimossa)..
Il risultato mi sembra corretto.
.
Allegati
23 gennaio---01.ods
(30.9 KiB) Scaricato 118 volte
Nando69
Messaggi: 484
Iscritto il: lunedì 21 settembre 2020, 11:03

Re: [Risolto] Copia e incolla speciale

Messaggio da Nando69 »

Grazie. Ma come mai la macro è stata rimossa ?
Libre Office 7.3.0.3
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2996
Iscritto il: martedì 18 maggio 2010, 17:01

Re: [Risolto] Copia e incolla speciale

Messaggio da lucky63 »

Nando69 ha scritto:come mai la macro è stata rimossa ?
Pensavo non ti servisse più.

Codice: Seleziona tutto

Sub CopiaValoriPresentiDalRangeG1H433_AlRangeD1E433
Doc = ThisComponent
Foglio = Doc.Sheets(0)
For Riga = 0 To 432
G = Foglio.GetCellByPosition(6,Riga).Value
H = Foglio.GetCellByPosition(7,Riga).Value
  If G > 0 Or H > 0 Then
  Foglio.GetCellByPosition(3,Riga).Value = G
  Foglio.GetCellByPosition(4,Riga).Value = H
  End If
Next
MsgBox("Copia terminata",0,"AVVISO:")
End Sub
Allegati
23 gennaio---02.ods
(31.51 KiB) Scaricato 108 volte
Nando69
Messaggi: 484
Iscritto il: lunedì 21 settembre 2020, 11:03

Re: [Risolto] Copia e incolla speciale

Messaggio da Nando69 »

Salve. Devo riprendere tale argomento causa un piccolo intoppo. Con riferimento al file allegato,al valore 92 posto in cella H274,devo aggiungere
un +1 a tutte le altre celle che seguono (della stessa colonna) partendo da H314 fino ad H584,facendo perciò un copia e incolla speciale che possa
concludersi senza che mi compaia il valore ripetuto 92,cosicchè le celle H317,H318,H322 eccetera,rimangano automaticamente vuote,evitando
quindi un noioso procedimento manuale di eliminazione. Il copia e incolla speciale da me applicato mi porta purtroppo sempre questo fastidioso
problema. Grazie
Allegati
11 febbraio.ods
(59.42 KiB) Scaricato 99 volte
Libre Office 7.3.0.3
Avatar utente
Tuoangelo
Messaggi: 12
Iscritto il: venerdì 21 maggio 2021, 21:35

Re: [Risolto] Copia e incolla speciale

Messaggio da Tuoangelo »

Buonasera a tutti,
sto realizzando un file per il lavoro con Libreoffice Calc.
Ho un foglio con due tabelle e i loro rispettivi totali (Riga 13).
Avrei bisogno di copiare questi totali nella tabella bimestrale, togliendo le formule e cancellando il contenuto delle tabelle stesse.
Ho registrato la macro che permette di fare tutte queste cose, peccato che quando la faccio eseguire tramite il pulsante "Copia totali", non funziona correttamente; avvolte copia i totali della tabella 2, in ambo le righe 13 e 15 della tabella bimestrale, altre volte invece non copia nulla; l'unica cosa che fa correttamente è la cancellazione delle due tabelle stesse.
In compenso se prendo la macro che ho registrato e la faccio eseguire passo passo, fa tutto e in maniera corretta.
Come mai succede questo?
Ho provato a cercare su questo forum e anche su google ma non sono riuscito a trovare il motivo di tale "anomalia" se così si può chiamare.
Qui sotto vi lascio il codice "registrato" e il file ods.
Colgo l'occasione per ringraziare tutti per l'aiuto.

Codice: Seleziona tutto

sub BimestraleCanc
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 ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$E$13:$Q$13"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$AY$13"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PasteUnformatted", "", 0, Array())

rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(1).Name = "ToPoint"
args5(1).Value = "$Z$13:$AL$13"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 1, args5())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 1, Array())

rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "$AY$15"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PasteUnformatted", "", 0, Array())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:TerminateInplaceActivation", "", 0, Array())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:Cancel", "", 0, Array())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:TerminateInplaceActivation", "", 0, Array())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:Cancel", "", 0, Array())

rem ----------------------------------------------------------------------
dim args13(0) as new com.sun.star.beans.PropertyValue
args13(0).Name = "ToPoint"
args13(0).Value = "$E$15:$Q$45"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args13())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())

rem ----------------------------------------------------------------------
dim args15(0) as new com.sun.star.beans.PropertyValue
args15(0).Name = "ToPoint"
args15(0).Value = "$Z$15:$AL$45"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args15())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())

rem ----------------------------------------------------------------------
dim args17(0) as new com.sun.star.beans.PropertyValue
args17(0).Name = "ToPoint"
args17(0).Value = "$E$15"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args17())


end sub
Allegati
TEST.ods
(19.24 KiB) Scaricato 84 volte
LibreOffice 7 su Windows 10
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2996
Iscritto il: martedì 18 maggio 2010, 17:01

Re: [Risolto] Copia e incolla speciale

Messaggio da lucky63 »

La prossima volta apri nuovo quesito.

Codice: Seleziona tutto

Sub CopiaTotali_e_AzzerraLeTabelle
Doc = ThisComponent
Foglio = Doc.Sheets(0) ' il primo foglio
Rem copia totali del primo mese
Foglio.GetCellRangeByName("AY13").Value = Foglio.GetCellRangeByName("E13").Value
Foglio.GetCellRangeByName("BC13").Value = Foglio.GetCellRangeByName("I13").Value
Foglio.GetCellRangeByName("BG13").Value = Foglio.GetCellRangeByName("M13").Value
Rem copia totali del secondo mese
Foglio.GetCellRangeByName("AY15").Value = Foglio.GetCellRangeByName("Z13").Value
Foglio.GetCellRangeByName("BC15").Value = Foglio.GetCellRangeByName("AD13").Value
Foglio.GetCellRangeByName("BG15").Value = Foglio.GetCellRangeByName("AH13").Value
Rem Pulizia dati tabelle
Foglio.getCellRangeByName("E15:Q45").clearContents(1) 'Cancella solo i valori
Foglio.getCellRangeByName("Z15:AL45").clearContents(1) 'Cancella solo i valori
Rem Avviso fine operazioni
MsgBox("Operazione terminata",0,"AVVISO:")
End sub
Avatar utente
Tuoangelo
Messaggi: 12
Iscritto il: venerdì 21 maggio 2021, 21:35

Re: [Risolto] Copia e incolla speciale

Messaggio da Tuoangelo »

Grazie mille per l'aiuto, funziona :D .
Scusa se non ho aperto un nuovo post ma non volevo creare un eventuale "doppione".
La prossima volta farò così.
LibreOffice 7 su Windows 10
Rispondi