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ä!
VBA tiettyjen rivien kopiointi
1
105
Vastaukset
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
Persujen VigeIius noIasi taas itsensä
Kun uhriutui vuonna 2024 (siis persujen "vahtivuorolla") Tampereella aloittaneen perheryhmäkodin toiminnasta. ”Leviää k2263911Joko alkaa menemään tajuntaan tämä yliluonnollinen yhteys?
Varmaan pikkuhiljaa. Muista olla kiltisti ❤️323215Oli kiva nähdä sut
vaikkakin kaukaa ja nopeasti. Tiedän kyllä tasan tarkkaan missä mennään, joten anteeksi jos pilasin päiväsi, ei ollut mi333184Kohtalokas laukaus
IL 20.9.25 "Ihminen kuoli baarin edustalla Kajaanissa Poliisi ei epäile tapauksessa rikosta." "Kajaanin keskustassa on k243107Työeläkkeen saamiseksi olisi tehtävä töitä
Meillä on Suomessa iso joukko ihmisiä, joilla olisi vielä työkykyä jäljellä, mutta joilta puuttuu arjesta mielekäs tekem1013048Joulukinkku NYT
Sian kankuista tulee vielä pula. Nyt on oikea aika hankkia joulukinkku.72897- 92418
Vasemmistoliitto peruisi sosiaaliturvan heikennykset
He palauttaisivat työttömyysturvan ja asumstuen suojaosat, eli saisi jälleen tienata 300 euroa kuukaudessa ilman tukien872286Jos voisit kysyä
Kaivatultasi vielä yhden kysymyksen, mikä se olisi? Aloitan: Mitä sinä halusit minusta?2302278Linux Mint asennus kaatuu heti alkuun
Tulee kernel panic BIOS-tekstin jälkeen. Yritän ensimmäistä kertaa asentaa Linux Minttiä vanhalle Windows 10 -läppärill92098