Pagina 1 van 1

Hoe in Calc kolom selecteren tijdens opnemen Macro

Geplaatst: zo mei 22, 2016 9:59 pm
door dolf
Hallo allemaal,

Ik ben nieuw op dit forum en heb waarschijnlijk een heel domme vraag! Ik moet met de Macro-recorder (heb ik gelezen) niet de muis gebruiken maar de toetsen. Zal kloppen want met de muis of touchpad lukt het niet.
Nu wil ik een kolom selecteren en verwijderen met hulp van alleen maar toetsen en ik kan nergens vinden hoe dat moet. Help :!:

Re: Hoe in Calc kolom selecteren tijdens opnemen Macro

Geplaatst: zo mei 22, 2016 10:45 pm
door RPG
Hallo

Ik heb geen idee hoe dat moet.
Framework/Article/OpenOffice.org 3.x Commands - Apache OpenOffice Wiki geeft bijna alle mogelijkheden die je kunt gebruiken in een opgenomen macro.

www.pitonyak.org/oo.php geeft een uitgebreide inleiding in macro's.

Romke

Re: Hoe in Calc kolom selecteren tijdens opnemen Macro

Geplaatst: ma mei 23, 2016 1:09 am
door RPG
Hallo

Na gericht zoeken op deletecolumns vond ik dit:
[Solved] Merge/allign cells in Columns macro (View topic) • Apache OpenOffice Community Forum

B.Marcelly gaf daar een voorbeeld van het gebruik van deletecolumns.

Code: Selecteer alles

sub Deletecolumns
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 = "$C$1:$E$1" 'Use a single column or more as you want

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

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:DeleteColumns", "", 0, Array())
end sub
Het werkt ook eenvoudig. Het kan ook eenvoudig de column verwijderen waar de cursor is. Probeer het uit op een file die geen belangrijke gegevens heeft.

Romke

Re: Hoe in Calc kolom selecteren tijdens opnemen Macro

Geplaatst: ma jun 13, 2016 1:51 pm
door DiGro
Ik zou er niet voor kiezen om daar de macrorecorder voor te gebruiken. Die levert een grote hoeveelheid code op
die onnodig is.

De te gebruiken toetsen;
Pijltjestoetsen om te verplaatsen
Control+Shift+pijltje omlaag om gehele kolom te selecteren
Delete om kolom te verwijderen (er opent een dialoogvenster waarvoor je op Enter moet drukken om ALLES te verwijderen)

Om vanaf cel A1 de kolom E te verwijderen levert dan deze code op:

Code: Selecteer alles

sub TestToets()
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 = 1
args1(1).Name = "Sel"
args1(1).Value = false

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

rem ----------------------------------------------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "By"
args2(0).Value = 1
args2(1).Name = "Sel"
args2(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "By"
args3(0).Value = 1
args3(1).Name = "Sel"
args3(1).Value = false

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

rem ----------------------------------------------------------------------
dim args4(1) as new com.sun.star.beans.PropertyValue
args4(0).Name = "By"
args4(0).Value = 1
args4(1).Name = "Sel"
args4(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args4())

rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "By"
args5(0).Value = 1
args5(1).Name = "Sel"
args5(1).Value = true

dispatcher.executeDispatch(document, ".uno:GoDownToEndOfData", "", 0, args5())

rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Flags"
args6(0).Value = "SVDFN"

dispatcher.executeDispatch(document, ".uno:Delete", "", 0, args6())

end sub
terwijl

Code: Selecteer alles

Sub VerwijderKolom()
Dim Doc As Object
Dim Sheet As Object
Dim NewColumn As Object
 
Doc = ThisComponent
Sheet = Doc.Sheets(0)
 
'Sheet.Columns.insertByIndex(3, 1)  --> kan gebruikt worden voor invoegen van kolom
Sheet.Columns.removeByIndex(4, 1)

End Sub
ook de kolom E verwijdert, maar dan zonder het gebruiken van de macrorecorder.

Kortom: als je weet welke kolom je wilt verwijderen, gebruik dan de laatste methode