Calc - toistuvan tiedon lisääminen soluun

Heippis!

Minulla on tietokannasta tulostettu iso taulukko täynnä tekstiä. Yksi rivi on aina yksi artikkeli. Pystysuunnassa on sitten erotettu kunkin artikkelin ominaisuuksia.

Pitäisi lisätä tiettyihin pystysarakkeisiin tekstinpätkä soluissa tällä hetkellä olevien tekstin eteen. Miten tämä tapahtuu fiksuiten?

Eli esim. kaikkien sarakkeen B soluihin tulisi eteen tekstilisäys, ja sitten jatkuisi siellä nyt olevalla tavaralla.
4769
Äänestä

Muut lukivat myös

Vastaukset 4

Vanhimmat

Toistuvat tehtävät on helpointa hoitaa makroilla.

http://wiki.services.openoffice.org/wiki/Documentation/OOoAuthors_User_Manual/Getting_Started/Creating_a_macro

Voisit vaikka aloittaa tällaisella:

Sub Main
lisaa_alkuun("tekstin lisäys alkuun")
End Sub

sub lisaa_alkuun (t as Variant)
dim document as object
dim dispatcher as object

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

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
ocell=ThisComponent.CurrentSelection
entinen = oCell.getString()
args1(0).Name = "StringName"
args1(0).Value = t " " entinen
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args1())
end sub

eli tuo lisää valitun solun tekstin eteen tekstin joka on Main-subin argumenttina, tässä tapauksessa "tekstin lisäys alkuun" kun painaa makroeditorin nappia "Suorita BASIC".

Äänestä
  • Mutta tekeekö tuo kaikkiin 1000 soluun kerralla, vai pitääkö jokainen suorittaa erikseen? Voisiko tietoa hakea solun alkuun jotenkin toisesta taulusta esimerkiksi?

    Äänestä

  • aloittaja kirjoitti:

    Mutta tekeekö tuo kaikkiin 1000 soluun kerralla, vai pitääkö jokainen suorittaa erikseen? Voisiko tietoa hakea solun alkuun jotenkin toisesta taulusta esimerkiksi?

    >...vai pitääkö jokainen suorittaa erikseen?

    Tuo laittaa vain yhteen soluun ja oli tarkoitettu vain esimerkiksi mistä voisit alkaa kehitellä omaa ratkaisuasi.

    Jos muutat sen tällaiseksi,

    sub lisaa_alkuun (t as Variant)

    dim oDocument as object

    oDocument = ThisComponent
    oDesktop = createUnoService("com.sun.star.frame.Desktop")
    oSelectedCells = oDocument.CurrentSelection
    oActiveCells = oSelectedCells.RangeAddress
    oSheets = oDocument.Sheets
    oSheet = oSheets.getByIndex(oActiveCells.Sheet)
    rem ----------------------------------------------------------------------
    For Rivi = oActiveCells.StartRow To oActiveCells.EndRow
    For Sarake = oActiveCells.StartColumn To oActiveCells.EndColumn
    oCell = oSheet.getCellByPosition(Sarake,Rivi)
    entinen = oCell.getString()
    oCell.setString(t " " entinen)
    Next
    Next

    end sub

    , niin tekstin lisäys tulee kaikkiin soluihin jotka sinulla on maalattuna aktiiivisella
    välilehdellä.

    >Voisiko tietoa hakea solun alkuun...

    Makrolla voi tehdä ihan kaiken minkä näppäimistöllä ja hiirelläkin mutta nyt saa joku toinen jatkaa. Mun tarttee mennä maate että jaksaa huomennakin. ;)

    Äänestä

  • makro. kirjoitti:

    >...vai pitääkö jokainen suorittaa erikseen?

    Tuo laittaa vain yhteen soluun ja oli tarkoitettu vain esimerkiksi mistä voisit alkaa kehitellä omaa ratkaisuasi.

    Jos muutat sen tällaiseksi,

    sub lisaa_alkuun (t as Variant)

    dim oDocument as object

    oDocument = ThisComponent
    oDesktop = createUnoService("com.sun.star.frame.Desktop")
    oSelectedCells = oDocument.CurrentSelection
    oActiveCells = oSelectedCells.RangeAddress
    oSheets = oDocument.Sheets
    oSheet = oSheets.getByIndex(oActiveCells.Sheet)
    rem ----------------------------------------------------------------------
    For Rivi = oActiveCells.StartRow To oActiveCells.EndRow
    For Sarake = oActiveCells.StartColumn To oActiveCells.EndColumn
    oCell = oSheet.getCellByPosition(Sarake,Rivi)
    entinen = oCell.getString()
    oCell.setString(t " " entinen)
    Next
    Next

    end sub

    , niin tekstin lisäys tulee kaikkiin soluihin jotka sinulla on maalattuna aktiiivisella
    välilehdellä.

    >Voisiko tietoa hakea solun alkuun...

    Makrolla voi tehdä ihan kaiken minkä näppäimistöllä ja hiirelläkin mutta nyt saa joku toinen jatkaa. Mun tarttee mennä maate että jaksaa huomennakin. ;)

    Avustasi!

    Äänestä

Kommentoi aloitusta


anonyymi aloittelija kirjoitti:

Heippis!

Minulla on tietokannasta tulostettu iso taulukko täynnä tekstiä. Yksi rivi on aina yksi artikkeli. Pystysuunnassa on sitten erotettu kunkin artikkelin ominaisuuksia.

Pitäisi lisätä tiettyihin pystysarakkeisiin tekstinpätkä soluissa tällä hetkellä olevien tekstin eteen. Miten tämä tapahtuu fiksuiten?

Eli esim. kaikkien sarakkeen B soluihin tulisi eteen tekstilisäys, ja sitten jatkuisi siellä nyt olevalla tavaralla.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu