Ohjelmani pitäisi siis osata hakea jostain tekstitiedostosta esimerkiksi vaikkapa rivi 2 jossa oleva lause voi olla usealla eri rivillä esimerkiksi jos tiedoston sisältö näyttää tältä:
tässä
on tekstiä
*
rivi1
rivi2
rivi3
rivi4
*
abc123
Jos haluan hakea tuosta tiedostosta vaikkapa 2 jutun eli nuo rivi1, rivi2, rivi3 ja rivi4:sen niin kuinka se tehdään?
Tiettyjen rivien haku tiedostosta
7
701
Vastaukset
- Orwell
Tarkoititko mahdollisesti jotain tällaista?
Dim sLines As String
Dim sTmp As String
sLines = vbNullString
Open [TIEDOSTOPOLKU] For Input As #1
Do Until EOF(1)
Line Input #1, sTmp
If sTmp Like "rivi*" Then sLines = sLines & sTmp & vbCrLf
Loop
Close #1
Pitäsisi palauttaa:
rivi1
rivi2
rivi3
rivi4 - Kunde
Käytän itse tällaista. Kirjoita tekstitiedosto muotoon
$10
heippa
moro
terve
$20
hei
moi mitä kuuluu?
ja sitten vain haet seuraavalla proseduurilla tekstin
Sub Koe()
x = LueTekstiFile("C:\Testi.txt", "$20", 2)
MsgBox x
End Sub
tämä palauttaa siis moi mitä kuuluu?
Function LueTekstiFile(TekstiFile As String, Dollar As String, Tekstirivi As Long) As Variant
Dim Dollarimerkki As String
Dim Teksti As String
Dim Rivimäärä As Long
Dim Dollariteksti As Boolean
Dim Pituus As Long
Dim Tarkiste As Long
Dim Omatarkiste As Long
Dim Viesti As String
On Error GoTo virhe
Dollarimerkki = "*" & Dollar & "*"
Open TekstiFile For Input As #1
Do While Not EOF(1)
Line Input #1, Teksti
If Teksti Like Dollarimerkki Then
Dollariteksti = True
Rivimäärä = 0
End If
If Dollariteksti = True Then
If Rivimäärä = Tekstirivi Then
Omatarkiste = InStr(1, Teksti, (Chr(39)))
If Omatarkiste > 0 Then
Pituus = Len(Teksti)
Tarkiste = InStr(1, Teksti, (Chr(39)))
If Tarkiste > 0 Then
LueTekstiFile = Mid(Teksti, 1, (Tarkiste - 2))
If LueTekstiFile = "False" Or LueTekstiFile = "True" Then
LueTekstiFile = CBool(LueTekstiFile)
Exit Do
ElseIf IsNumeric(LueTekstiFile) = True Then
LueTekstiFile = CDbl(LueTekstiFile)
Exit Do
Else
LueTekstiFile = CStr(LueTekstiFile)
Exit Do
End If
End If
ElseIf Omatarkiste = 0 Then
LueTekstiFile = Teksti
If LueTekstiFile = "False" Or LueTekstiFile = "True" Then
LueTekstiFile = CBool(LueTekstiFile)
Exit Do
ElseIf IsNumeric(LueTekstiFile) = True Then
LueTekstiFile = CDbl(LueTekstiFile)
Exit Do
Else
LueTekstiFile = CStr(LueTekstiFile)
Exit Do
End If
End If
End If
Rivimäärä = Rivimäärä 1
End If
Loop
Close #1
virhepoistu:
Exit Function
virhe:
Close #1
Viesti = Err.Description & " " & Err.Number
MsgBox Viesti, vbCritical, "Tiedostosta luku"
Resume virhepoistu
End Function- minähänse
...mutta tuossa on määriteltävä minkä yksittäisen rivin haluan hakea siitä.
x = LueTekstiFile("C:\Testi.txt", "$20", 2)
Siis tämähän hakee vain tuon 2 rivin tuosta "$20" kohdasta eli tuon "moi mitä kuuluu?", mutta kuinka saisin siten, että se hakisi ne kaikki muutkin rivit myöskin tuon "hei" sanan riippumatta siitä kuinka monta riviä siinä on aina tekstiä. - Orwell
minähänse kirjoitti:
...mutta tuossa on määriteltävä minkä yksittäisen rivin haluan hakea siitä.
x = LueTekstiFile("C:\Testi.txt", "$20", 2)
Siis tämähän hakee vain tuon 2 rivin tuosta "$20" kohdasta eli tuon "moi mitä kuuluu?", mutta kuinka saisin siten, että se hakisi ne kaikki muutkin rivit myöskin tuon "hei" sanan riippumatta siitä kuinka monta riviä siinä on aina tekstiä.Tarkoituksesi oli siis lukea *-merkin välissä olevat rivit?
Dim bStart As Boolean
Dim sLines As String
Dim sTmp As String
bStart = False
sLines = vbNullString
Open App.Path & "\test.txt" For Input As #1
Do Until EOF(1)
Line Input #1, sTmp
If Trim$(sTmp) = "*" And Not bStart Then
bStart = True
ElseIf Trim$(sTmp) = "*" And bStart Then
bStart = False
ElseIf bStart Then
sLines = sLines & sTmp & vbCrLf
End If
Loop
Close #1
Tämä koodin pätkä palauttaa *-merkkien välistä kaikki rivit, vaikka niitä olisi useampi. - minähänse
Orwell kirjoitti:
Tarkoituksesi oli siis lukea *-merkin välissä olevat rivit?
Dim bStart As Boolean
Dim sLines As String
Dim sTmp As String
bStart = False
sLines = vbNullString
Open App.Path & "\test.txt" For Input As #1
Do Until EOF(1)
Line Input #1, sTmp
If Trim$(sTmp) = "*" And Not bStart Then
bStart = True
ElseIf Trim$(sTmp) = "*" And bStart Then
bStart = False
ElseIf bStart Then
sLines = sLines & sTmp & vbCrLf
End If
Loop
Close #1
Tämä koodin pätkä palauttaa *-merkkien välistä kaikki rivit, vaikka niitä olisi useampi.Kyllähän tuo toimii, mutta en hae tuollaista koodia.
- Kunde
minähänse kirjoitti:
Kyllähän tuo toimii, mutta en hae tuollaista koodia.
Nyt lukee dollarimerkkien välisen tekstin
Sub Koe()
x = LueTekstiFile("C:\Testi.txt", "$20")
MsgBox x
End Sub
Function LueTekstiFile(TekstiFile As String, Alkurivi As String) As Variant
Dim Dollarimerkki As String
Dim Teksti As String
Dim Rivimäärä As Long
Dim Dollariteksti As Boolean
Dim Pituus As Long
Dim Tarkiste As Long
Dim Omatarkiste As Long
Dim Viesti As String
On Error GoTo virhe
Dollarimerkki = "*" & Alkurivi & "*"
Open TekstiFile For Input As #1
Do While Not EOF(1)
Line Input #1, Teksti
If Teksti Like Dollarimerkki Then
Dollariteksti = True
End If
If Dollariteksti = True Then
If Teksti = Alkurivi Then GoTo hyppy
If Teksti Like "*$*" Then GoTo loppu
LueTekstiFile = LueTekstiFile & Teksti & vbNewLine
End If
hyppy:
Loop
loppu:
Close #1
virhepoistu:
Exit Function
virhe:
Close #1
Viesti = Err.Description & " " & Err.Number
MsgBox Viesti, vbCritical, "Tiedostosta luku"
Resume virhepoistu
End Function - minähänse
Kunde kirjoitti:
Nyt lukee dollarimerkkien välisen tekstin
Sub Koe()
x = LueTekstiFile("C:\Testi.txt", "$20")
MsgBox x
End Sub
Function LueTekstiFile(TekstiFile As String, Alkurivi As String) As Variant
Dim Dollarimerkki As String
Dim Teksti As String
Dim Rivimäärä As Long
Dim Dollariteksti As Boolean
Dim Pituus As Long
Dim Tarkiste As Long
Dim Omatarkiste As Long
Dim Viesti As String
On Error GoTo virhe
Dollarimerkki = "*" & Alkurivi & "*"
Open TekstiFile For Input As #1
Do While Not EOF(1)
Line Input #1, Teksti
If Teksti Like Dollarimerkki Then
Dollariteksti = True
End If
If Dollariteksti = True Then
If Teksti = Alkurivi Then GoTo hyppy
If Teksti Like "*$*" Then GoTo loppu
LueTekstiFile = LueTekstiFile & Teksti & vbNewLine
End If
hyppy:
Loop
loppu:
Close #1
virhepoistu:
Exit Function
virhe:
Close #1
Viesti = Err.Description & " " & Err.Number
MsgBox Viesti, vbCritical, "Tiedostosta luku"
Resume virhepoistu
End FunctionAnteeksi, että vastaukseni kesti näin kauan ja samalla Kiitoksia todella paljon!
Tämä oli juuri se mitä tarvitsinkin.
Koodi toimii erinomaisesti.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Persujen Anna Koskela kaahasi 172 km/h
Kuvasi samalla myös videota, jonka sitten myöhemmin poisti. Jotenkin tuntuu persuilta lähtevän nyt kaikki lapasesta, va306586Ratkaisujen tarjoamisen sijaan SDP on keskittynyt levittämään väärää tietoa
Kokoomuksen kansanedustaja Martin Paasi on turhautunut eduskunnassa käytävään salikeskusteluun. Hän kertoo, miksi. – Ko895222Miksi media ei ole tutkinut Li Anderssonin antifa-yhteyksiä
Antifa on väkivaltainen äärivasemmistolainen terrori-järjestö, joka USA:ssa on nyt kielletty. Andersson itse on äärivas934805Juuri nyt! Parturi bongattu Sannan seurassa!
🌐 Breking News 📢 🗞️ 🆕 Kaksikko bongattu Suomen Helsingin Töölöstä. Kyllä. Sieltä samasta Töölöstä, josta kuppakin64629Keskisarja kiihotti persuja kansanryhmää vastaan
Rikoksen vakavuutta lisää se, että Keskisarja toimii eduskuntapuolueen puheenjohtajana, jonka puheilla on enemmän painoa694478Kolmepäiväinen työviikko on kulman takana
Zoomin toimitusjohtajan mukaan tekoäly alkaa olla monissa työtehtävissä niin tehokas, että ihmiset voivat pudottaa työpä184068Mercedes-Benzille riitti Suomen äärioikeistohallitus
Tästä jo pari vuotta sitten varoiteltiin, että kaikki ulkomaalaiset investoijat poistuvat fasistipersujen myötä tukemast544027Aamun Riikka: sakset tiputtavat 31 000 lasta köyhyysrajan alle
✂️ STM:n tuoreen arvion mukaan Riikan leikkaukset pudottavat peräti 31 000 lasta köyhyysrajan alle, kun aikaisempi THL1313920Miksi Marinin vasemmistohallitus ei tunnustanut Palestiinaa
kun mahdollisuus oli? Nyt sitten vasemmisto-oppositio ulvoo yhtään ääneen, että Palestiina pitää tunnustaa - onpa tode213530Sebu Tynkkynen vaatii Ulkopoliittisen instituutin rahoituksen leikkaamista
kun UPI:n tutkija kritisoi Tynkkystä, Mikä Trump tuo Tynkkynen oikein luulee olevansa? https://www.iltalehti.fi/politi173337