La mia Amministrazione è (finalmente) passata a OOo ... non senza dolore: ho alcuni fogli excel in cui tengo nota delle spese delle forniture.
Nelle prime tre colonne ho i dati dei DDT (nr, data e importo).
Una volta ricevuta la fattura sposto il range delle tre celle contenenti i dati in altre a cui fa riferimento la fattura.
In questo modo ho una colonna con il totale delle spese in sospeso (DDT) e una colonna con le fatture pagate, in maniera da avere sempre sott'occhio la disponibilità del capitolo di spesa.
Lo spostamento dei dati lo facevo con una macro per velocizzare l'operazione. Ovviamente i riferimenti della macro alle celle non erano assoluti, ma, come base per lo spostamento, si rifacevano alla cella attiva (ActiveCell) e venivano spostati di tot. colonne (Offset).
Non trovo la corrispondenza nelle macro di OOo.
Per fare in modo che la macro prenda come base per lo spostamento del range la cella attiva che comando si usa?
Per spostare di un certo numero di colonne a partire dalla cella attiva il range selezionato che comando si usa?
Grazie
Spostamento dati in calc con marco
- UTPiovene
- Messaggi: 232
- Iscritto il: giovedì 16 dicembre 2010, 11:24
- Località: Piovene Rocchette per 36 ore alla settimana
Spostamento dati in calc con marco
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
LibreOffice Versione: 5.4.5.1
Re: Spostamento dati in calc con marco
Se ho capito bene vuoi copiare dati di 3 celle su altre tre, per fare questo io uso questo script:
sub Main
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 = "$B$78:$B$80"
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 = "$K$78"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(5) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Flags"
args4(0).Value = "SVDFN"
args4(1).Name = "FormulaCommand"
args4(1).Value = 0
args4(2).Name = "SkipEmptyCells"
args4(2).Value = false
args4(3).Name = "Transpose"
args4(3).Value = false
args4(4).Name = "AsLink"
args4(4).Value = false
args4(5).Name = "MoveMode"
args4(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args4())
end sub
Ovviamente i riferimenti di celle le devi adattare con quelle che ti servini, la copia in questo caso esclude la copia del formato cella. Spero che ti sia stato di aiuto.
sub Main
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 = "$B$78:$B$80"
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 = "$K$78"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(5) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Flags"
args4(0).Value = "SVDFN"
args4(1).Name = "FormulaCommand"
args4(1).Value = 0
args4(2).Name = "SkipEmptyCells"
args4(2).Value = false
args4(3).Name = "Transpose"
args4(3).Value = false
args4(4).Name = "AsLink"
args4(4).Value = false
args4(5).Name = "MoveMode"
args4(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args4())
end sub
Ovviamente i riferimenti di celle le devi adattare con quelle che ti servini, la copia in questo caso esclude la copia del formato cella. Spero che ti sia stato di aiuto.
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
-
OpenOffice 3.3 su Windows XP
-
OpenOffice 3.3 su Windows XP
- UTPiovene
- Messaggi: 232
- Iscritto il: giovedì 16 dicembre 2010, 11:24
- Località: Piovene Rocchette per 36 ore alla settimana
Re: Spostamento dati in calc con marco
Scusa se rispondo solo oggi.
Provo a capire come funziona e di conseguenza come modificarla.
Non sai se c'è da qualche parte un manuale che spieghi i comandi come funzionano e la sintassi da usare?
Grazie
Provo a capire come funziona e di conseguenza come modificarla.
Non sai se c'è da qualche parte un manuale che spieghi i comandi come funzionano e la sintassi da usare?
Grazie
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
LibreOffice Versione: 5.4.5.1
- UTPiovene
- Messaggi: 232
- Iscritto il: giovedì 16 dicembre 2010, 11:24
- Località: Piovene Rocchette per 36 ore alla settimana
Re: Spostamento dati in calc con marco
Ho provato la macro, è quasi uguale a quella che avevo creato con il registratore di marco.
Io ho bisogno che i riferimenti non siano assoluti (del tipo$A$1) perchè l'esecuzione va ripetuta di volta in volta su righe diverse.
Quello che io avevo impostato in Excel prendeva la cella attiva come riferimento per lo spostamento dei dati, selezionava il range di 3 celle (quella attiva e quelle 2 a lato), spostava la cella attiva sulla stessa riga di n. colonne e incollava i dati.
Poi tornava indietro di n-2 colonne, scriveva "fatt.", quindi si spostava all'inizio però una riga sotto.
Ho capito più o meno il funzionamento della macro di Calc, ma non avendo nessun manuale di istruzioni, non so come fare a dare i riferimenti relativi alla cella attiva e gli spostamenti che non facciano riferimento a celle specifiche.
Spero di essere stato spiegato.
Io ho bisogno che i riferimenti non siano assoluti (del tipo$A$1) perchè l'esecuzione va ripetuta di volta in volta su righe diverse.
Quello che io avevo impostato in Excel prendeva la cella attiva come riferimento per lo spostamento dei dati, selezionava il range di 3 celle (quella attiva e quelle 2 a lato), spostava la cella attiva sulla stessa riga di n. colonne e incollava i dati.
Poi tornava indietro di n-2 colonne, scriveva "fatt.", quindi si spostava all'inizio però una riga sotto.
Ho capito più o meno il funzionamento della macro di Calc, ma non avendo nessun manuale di istruzioni, non so come fare a dare i riferimenti relativi alla cella attiva e gli spostamenti che non facciano riferimento a celle specifiche.
Spero di essere stato spiegato.
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
LibreOffice Versione: 5.4.5.1
Re: Spostamento dati in calc con marco
Ho capito, vedi se ti va bene questo:UTPiovene ha scritto:Ho provato la macro, è quasi uguale a quella che avevo creato con il registratore di marco.
Io ho bisogno che i riferimenti non siano assoluti (del tipo$A$1) perchè l'esecuzione va ripetuta di volta in volta su righe diverse.
Quello che io avevo impostato in Excel prendeva la cella attiva come riferimento per lo spostamento dei dati, selezionava il range di 3 celle (quella attiva e quelle 2 a lato), spostava la cella attiva sulla stessa riga di n. colonne e incollava i dati.
Poi tornava indietro di n-2 colonne, scriveva "fatt.", quindi si spostava all'inizio però una riga sotto.
Ho capito più o meno il funzionamento della macro di Calc, ma non avendo nessun manuale di istruzioni, non so come fare a dare i riferimenti relativi alla cella attiva e gli spostamenti che non facciano riferimento a celle specifiche.
Spero di essere stato spiegato.
Codice: Seleziona tutto
sub Main
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(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "By"
args1(0).Value = 2
args1(1).Name = "Sel"
args1(1).Value = true
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args4(1) as new com.sun.star.beans.PropertyValue
args4(0).Name = "By"
args4(0).Value = 2
args4(1).Name = "Sel"
args4(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args4())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
rem ----------------------------------------------------------------------
dim args7(1) as new com.sun.star.beans.PropertyValue
args7(0).Name = "By"
args7(0).Value = 4
args7(1).Name = "Sel"
args7(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args7())
end sub- Allegati
-
- Documento1.ods
- (10.88 KiB) Scaricato 264 volte
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
-
OpenOffice 3.3 su Windows XP
-
OpenOffice 3.3 su Windows XP