VBA tiettyjen rivien kopiointi

Tumpelo2015

Useita satoja sivuja sisältävästä dokumentista pitäisi kopioida sellaiset rivit, joissa esiintyy tietyt kaksi merkkijonoa. Käytännössä merkkijonot ovat perättäisillä riveillä.
Esimerkiksi:
qqqqqqqqqqq Merkkijono1: xxxxxxxxxxxxxxxx
ööööööööööööööööööö Merkkijono2: xxxxxxxxxxxx
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Merkkijono1 xxxxxxxxxxxxxxxx
Merkkijono2

Ongelmana minulla on, että vaikka em. kentät (merkkijonot) ovat sinänsä määrämuotoisia MUTTA merkkijono2: -kenttä voi olla myös tyhjä.

Tulikohan nyt riittävän epäselvästi selitettyä... Mutta kiitokset, jos apu löytyy vaikka täältä!

1

118

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Kävipä hassusti. Luulin, että olin OpenOffice -sivustolla, kun luin aloitusviestin. Sitten massamuististani löytyi tämmöinen OpenOfficessa jotenkin toimiva koodi:
      ------------------
      Sub Main

      RivitEriTiedostoon("Merkkijono1",1)

      End Sub

      Rem Muunnoslähde: https://wiki.openoffice.org/wiki/Writer/API/Text_cursor
      Rem alkuperäinen laatija: JohnV (2003)
      Rem Muunnos: RJ/2015
      Sub RivitEriTiedostoon (sMerkkijono as String, iRiviLkm as Integer)
      dim oDoc,oVC,NewDoc,filename,url,oTC,oNewDocVC,newname,newurl,n


      oDoc = ThisComponent
      oVC = oDoc.CurrentController.getViewCursor 'Create View Cursor oVC
      oVC.gotoStart(false) 'Make oVC position itself to the start of the document
      NewDoc = StarDesktop.loadComponentFromURL("private:factory/swriter","_blank",0,Array()) 'Open blank Writer doc
      oNewDocVC = NewDoc.CurrentController.getViewCursor 'Create another View Cursor for this new document

      Do
      oTC = oDoc.Text.createTextCursorByRange(oVC) 'Create Text Cursor by cloning the View Cursor (both have same position in doc)
      oVC.gotoStartOfLine(False)
      oVC.gotoEndOfLine(True) 'Valitaan uusi rivi
      'oVC.jumpToEndOfPage 'Move View Cursor oVC to EndOfPage

      oTC.gotoRange(oVC,true) 'Move Text Cursor to same location as oVC while selecting text in between (True)
      IF Instr(oTC.String,sMerkkijono) then
      Rem riviltä löytyi 1. tunnusmerkkijono
      Rem laajennetaan valintaa yhdellä rivillä
      oVC.goDown(iRiviLkm, False) 'Rivejä alaspäin, esim. 1
      oTC.gotoRange(oVC,true) 'Tekstikursorivalinta
      oNewDocVC.String = Chr(10) & oTC.String & Chr(10)
      oNewDocVC.gotoEnd(False) 'Varmistetaan, ettu tuloskursori on alimpana. Ehkä turhaa tässä?
      EndIf
      Loop While oVC.goDown(1, False) 'Katkaissee valinnan siirryttäessä seuraavalle riville?
      'NewDoc.dispose 'Close NewDoc
      Rem Tulostiedosto jää tallentamattomana auki
      End Sub 'RivitEriTiedostoon

      ------------------
      Tiedä sitten, saako tuota muokattua VBA:lla toimivaksi? Osa pitkistä riveistä voi olla poikki tämän s24-systeemin vuoksi?

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Minkähän takia ns. persuille ei tunnu työ maistuvan?

      Vaikuttavat olevan joutoväkeä syystä tai toisesta  – työttömiä tai työeläkeloisia. Muiden rahoilla pötköttelevää väkeä,
      Maailman menoa
      25
      2084
    2. Suomen veroaste 5 %-yks liian matala

      Palauttamalla kokonaisveroaste 1990-luvun tasolle saadaan hyvinvointivaltion palvelut rahoitettua ilman velan ottoa.
      Maailman menoa
      88
      1909
    3. Kolme neljästä suomalaisesta kannattaa miljonääriveroa

      Kertoo vasemmistoliiton teettämä kysely. Veron ulkopuolelle jätettäisiin asunto. "Puolet vastaajista oli sitä mieltä, e
      Maailman menoa
      88
      1881
    4. MTV: Harvinainen haastattelu! Vappu Pimiä kommentoi vihdoinkin uutta TTK-juontajaa

      TTK-juontajaspekuloinnit käyvät edelleen kuumana. Kenet sinä haluaisit uudeksi TTK-juontajaksi? Kommentoi alle! Lue,
      Suomalaiset julkkikset
      13
      1593
    5. Evoluutioon ja alkuräjähdykseen uskominen vaatii todella vahvaa uskoa

      Että tyhjästä syntyi ja kehittyi kaikki se mitä näemme ympärillämme.
      Luterilaisuus
      488
      1456
    6. Yleveron tuotto siirrettävä S-ryhmälle

      Yleisradio on mukana kansanmurhassa. Tuollaista ei voi tukea verovaroin. S-ryhmä on ainoa selkärankainen iso toimija S
      Maailman menoa
      1
      1444
    7. Olit ihan

      Kiihkona silloin. Sen näki ja lähes tunsi. Ei tainnut olla kaukana et olisit vetänyt lähellesi jos siihen olisi hetki tu
      Ikävä
      24
      1347
    8. Mikä ihme teitä lieksalaisia tuossa

      p*rs*reiässä niin kiinnostelee? Että siitä pitää päntönnään huutaa?
      Lieksa
      48
      1247
    9. Mistä juttelit viimeisen kerran

      Mistä juttelitte viimeisen kerran ikävöinnin kohteen kanssa? Irl tai viesteillä.
      Ikävä
      73
      1114
    10. Kemet lomautukset

      Onkohan tuo oikein lain mukaista toimintaa jatkaa jo lomautettuina olevien uudelleen lomautusta yhdenvertaisuuden ja tas
      Suomussalmi
      35
      1109
    Aihe