indsætte data fra kildeark og returnere til arbejdsark

Brugerhjælp og support til makroer i LibreOffice Basic

Moderators: Lodahl, LarsBrandi

Post Reply
soren
Posts: 17
Joined: 12. Aug 2011 17:24

indsætte data fra kildeark og returnere til arbejdsark

Post by soren »

Jeg har brug for at lave en makro der kan kopiere celler i eet skjult ark og indsætte dem i et andet, aktivt ark.
Det hele skal foregå i een arbejdsgang.
Jeg har foreløbig optaget en makro der kopierer cellerne i eet ark. Og så har jeg optaget en anden makro der indsætter cellerne der hvor min cursor er placeret.
Min arbejdsgang pt er følgende:

Jeg arbejder i eet bestemt ark (der findes 14 forskellige arbejdsark, som alle har brug for samme makrofunktion) og har brug for at indsætte et bestemt celleområde fra et andet ark ("kilde")
1) I arbejdsarket: aktiver makro "kopier" herved ender jeg i selve kilde-arket.
2) I kildearket: tryk tilbage til arbejdsarket
3) i arbejdsarket: vælg celle og aktiver makro "indsæt".

Det er for mange arbejdsgange.
Jeg forestiller mig
1) en makro der finder arbejdsarkets reference og gemmer den til senere brug
2) makroen kopierer herefter de angivne celler
3) og vender tilbage til arbejdsarket via den gemte reference
4) herefter indsættes de kopierede celler i arbejdsarket

Alt dette må¨være muligt, men som sagt kan jeg ikke finde ud af at lave referencen korrekt.

Er der nogen, der har en løsning eller kan give et tip til, hvordan det kan løses?

mvh
Søren
Jens S
Posts: 1091
Joined: 25. Mar 2007 22:42

Re: indsætte data fra kildeark og returnere til arbejdsark

Post by Jens S »

Den indbyggede makrooptager er ikke meget anvendelig. Du kan skrive din egen makro på grundlag af Andrew Pitonyak vejledning https://www.dropbox.com/s/rvteletxa07zv ... o.odt?dl=0 Her er en vejledning under pkt 5.23 som du skal tilpasse dit formål.

mvh
Jens
Lodahl
Posts: 1961
Joined: 14. Sep 2005 08:27
Location: Storkøbenhavn
Contact:

Re: indsætte data fra kildeark og returnere til arbejdsark

Post by Lodahl »

Er det altid det samme celle-område der skal kopieres?
Skal området indsættes på markørens position, eller et bestemt sted (samme sted hver gang) i arbejdsarket?
Med venlig hilsen

Leif Lodahl
Blog: https://libreofficedk.blogspot.dk
LibreOffice: http://da.libreoffice.org
Lodahl
Posts: 1961
Joined: 14. Sep 2005 08:27
Location: Storkøbenhavn
Contact:

Re: indsætte data fra kildeark og returnere til arbejdsark

Post by Lodahl »

Denne makro anvender klippe-klistre, hvilket desværre kun virker, så længe kilde-arket ikke er skjult. Kan du leve med det?

REM ***** BASIC *****

Sub Main
oDoc=thisComponent
Selection=oDoc.CurrentSelection.getRangeAddress
oSheets = oDoc.Sheets

SourceArea = oDoc.Sheets.getByName("Data").getCellRangeByName("A1:B8")

oDoc.CurrentController.Select(SourceArea)

document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

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

oSheet = oDoc.getSheets().getByIndex(Selection.Sheet)
oCell = oSheet.GetCellbyPosition( Selection.StartColumn, Selection.StartRow )
oDoc.CurrentController.Select(oCell)

dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())

End Sub
Med venlig hilsen

Leif Lodahl
Blog: https://libreofficedk.blogspot.dk
LibreOffice: http://da.libreoffice.org
Post Reply