Tiedostossa, olkoon nimi vaikka lauseet, on 2 sarakkeinen taulukko, 1 sarakkeella juokseva numerointi ja saman rivin toisella sarakkeella lause.
Kirjoitan tekstiä, ja tekstin joukkoon pitäisi hakea lause tuolta taulukosta numeron perusteella.
Kirjoitan numeron, painan makron näppäinyhdistelmää tai painiketta;
makro avaa lauseet tiedoston, siirtyy annetun numeron kohdalle, siitä seuraavaan sarakkeeseen, kopioi solun sisällön, sulkee tiedoston, korvaa annetun numeron kopioidulla tekstillä...
Onko mahdollista luoda tuollainen makro ???
Makro-gurut, apua kaivataan !!!
1
688
Vastaukset
olen käyttänyt vastaavaa ohjelmoinnissa. Helppoa laittaa ryhmittäin($) sanomat(lauseet) ja helppo hakea tiedostosta. Tietenkin sen voi tehdä pyytämälläsi tavalla, mutta mielestäni tämä on mukavin ja selkein tapa.
tee tiedosto C:\lauseet.txt" muotoon
$10 'aihe1
kunde testaa1
kunde testaa2
kunde testaa3
$20 'aihe2
kunde testaa11
kunde testaa21
$30 'aihe3
kunde testaa111
kunde testaa211
kunde testaa311
kunde testaa411
kunde testaa511
ja liitä koodi ThisDocument moduuliin...
kysyy aiheen numeron esim. 20 ja sitten rivinumeron esim. 2 ja kirjoittaa aktiiviseen kohtaan tekstin "kunde testaa21"
Dim Aihe As Variant
On Error Resume Next
Aihe = InputBox("Anna aiheen numero")
If Aihe = "" Then Exit Sub
Tekstirivi = InputBox("Anna rivinumero")
If Tekstirivi = "" Then Exit Sub
Selection.TypeText LueTeksti("C:\lauseet.txt", Aihe, Tekstirivi)
End Sub
Function LueTeksti(strTextFile As String, strDollari As Variant, lngTxtLine As Variant) As Variant
Dim dollari As String
Dim Tekstirivi As String
Dim Rivinumero As Long
Dim Dollaritesti As Boolean
Dim Pituus As Long
Dim Tarkistus As Long
Dim Oma As Long
On Error GoTo VIRHE
dollari = "*$" & strDollari & "*"
Open strTextFile For Input As #1
Do While Not EOF(1)
Line Input #1, Tekstirivi
If Tekstirivi Like dollari Then
Dollaritesti = True
Rivinumero = 0
End If
If Dollaritesti = True Then
If Rivinumero = lngTxtLine Then
Oma = InStr(1, Tekstirivi, (Chr(39)))
If Oma > 0 Then
Pituus = Len(Tekstirivi)
Tarkistus = InStr(1, Tekstirivi, (Chr(39)))
If Tarkistus > 0 Then
LueTeksti = Mid(Tekstirivi, 1, (Tarkistus - 2))
If LueTeksti = "False" Or LueTeksti = "True" Then
LueTeksti = CBool(LueTeksti)
Exit Do
ElseIf IsNumeric(LueTeksti) = True Then
LueTeksti = CDbl(LueTeksti)
Exit Do
Else
LueTeksti = CStr(LueTeksti)
Exit Do
End If
End If
ElseIf Oma = 0 Then
LueTeksti = Tekstirivi
If LueTeksti = "False" Or LueTeksti = "True" Then
LueTeksti = CBool(LueTeksti)
Exit Do
ElseIf IsNumeric(LueTeksti) = True Then
LueTeksti = CDbl(LueTeksti)
Exit Do
Else
LueTeksti = CStr(LueTeksti)
Exit Do
End If
End If
End If
Rivinumero = Rivinumero 1
End If
Loop
Close #1
POISTU:
If LueTeksti = Empty Then MsgBox "Annettua riviä ei löydy!!!", vbCritical
Exit Function
VIRHE:
Close #1
MsgBox "Joku meni pieleen!!!", vbCritical
Resume POISTU
End Function
Keep Excelling (Wording)
@Kunde
P.S. seuraavaksi varmaan haluatkin tiedot lomakkeelle, josta klikkaamalla sitten suoraan tekstiin... :-)
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 1593465
Juniorivalmennus Jokereissa..
Mitä hittoa siellä seurassa oikein tapahtuu?? Tämän kauden U14 ikäluokkaan on mahdutettu kaksi päävalmentajaa. Tälle kau612725Ammuskelua taas
Keskipohjanmaa tietää kertoa että Yläpubin hujakoilla ammuskeltu lauantain vastaisena yönä.332110- 1301687
- 781554
Seksikkäin asu mikä päällä olet nähnyt kaivattusi ?
Seksikkäin asu mikä yllä olet nähnyt kaivattusi ?831544Introverttinä osastolla
Yhdellä lääkäritapaamisella hoitaja valitti lääkärille etten tee mitään muuta kuin makaan ja ulkoilen. Kävin kuitenkin s3681472- 971215
- 891125
On tullut aika lukita kaupunginjohtajan ovi, ja hlö pihalle
Ei kahta eikä yhtäkään selitystä, ylimielisyys on kääntyi varomattomuudeksi, ja kaupungin jo ennestään kuihtuva talou1951106