Option Explicit Option Base 1 Dim kulcsszo As String Dim tombszam() As Integer Dim tombszoveg() As String Dim tombindex As Integer 'A mindenkori tömbméret. Dim fodokunev As String Dim kulcsdokunev As String Sub Index_bejegyz_keszites() Static para As Paragraph Dim befejezes As Integer If Application.Documents.Count >= 1 Then fodokunev = Word.Application.ActiveDocument.Name Call alcimektarolasa MsgBox "Nyissa meg a kulcsszavakat tartalmazó állományt!" 'Ebben minden kulcsszót önálló bekezdésbe kell tenni! befejezes = Dialogs(wdDialogFileOpen).Show 'Ha a párbeszédablak bezárásával vagy a Mégse gombbal megyünk tovább, befejezzük a bejegyzések készítését. If befejezes = 0 Or befejezes = -2 Then Exit Sub 'Tájékoztatjuk a felhasználót: UserForm1.Show MsgBox "Nyissa meg az indexelendő dokumentumot!" Sub Fodoku() Dim paragr As Paragraph Dim bekszam As Integer Dim tombfutoindex As Integer
Dim jeloloszoveg As String bekszam = 0 jeloloszoveg = "" 'Aktívvá tesszük az indexelendő állományt. Word.Application.Documents(fodokuNev).Activate For Each paragr In ActiveWindow.Document.Paragraphs bekszam = 1 + bekszam If paragr.style <> "Hiperhivatkozás" And InStr(paragr.Style, "TJ") = 0 Then 'Indulhat a keresés a bekezdésben: paragr.range.select With Selection.Find.Forward = True.ClearFormatting.MatchWholeWord = True.MatchCase = False.Wrap = wdfindstop.execute FindText:=kulcsszo End With 'Egy bekezdésben megelégszünk az első előfordulással. If Selection.Find.Found Then 'Van találat. Kezdődhet a "Jelölés". Selection.Collapse (wdcollapseend) 'Meg kell találni a közvetlenül felette lévő címsor stílusú bekezdés szövegét. 'Hátulról kell kezdeni a vizsgálatot, mert az első címsor előtt is lehet bevezető szöveg. For tombfutoindex = tombindex To 1 Step -1 If tombszam(tombfutoindex) <= bekszam Then jeloloszoveg = tombszoveg(tombfutoindex) Exit For Next tombfutoindex 'Jelölő szöveg kialakítása: If jeloloszoveg <> "" Then jeloloszoveg = kulcsszo & ":" & jeloloszoveg
jeloloszoveg = kulcsszo 'Jöhet a mezőkód kialakítása: ActiveDocument.Indexes.MarkEntry Range:=Selection.Range, Entry:= _ jeloloszoveg, EntryAutoText:=jeloloSzoveg, CrossReference:="", _ CrossReferenceAutoText:="", BookmarkName:="", Bold:=False, Italic:=False jeloloszoveg = "" Next paragr Sub alcimektarolasa() Dim bek As Paragraph Dim bekszam As Integer bekszam = 0 tombindex = 0 For Each bek In ActiveDocument.Paragraphs bekszam = 1 + bekszam If InStr(bek.Style, "Címsor") <> 0 Then 'Címsor stílust találtunk. tombindex = 1 + tombindex ReDim Preserve tombszam(tombindex) As Integer tombszam(tombindex) = bekszam ReDim Preserve tombszoveg(tombindex) As String tombszoveg(tombindex) = bek.range.text Next bek Sub Kulcsdoku1() kulcsdokunev = Word.Application.ActiveDocument.Name 'Elrejtjük a programot, hogy gyorsabb legyen a működés: Word.Application.Visible = False 'Előkészítjük a folyamatjelzőt:
Unload UserForm1 UserForm2.Show Sub Kulcsdoku2() Static para As Paragraph Dim kulcsszoszam As Integer Dim bekszam As Integer bekszam = 0 kulcsszoszam = ActiveWindow.Document.Paragraphs.Count 'Végigmegyünk a most megnyitott állomány minden bekezdésén: For Each para In ActiveWindow.Document.Paragraphs bekszam = bekszam + 1 kulcsszo = para.range.text kulcsszo = Trim(Replace(kulcsszo, Chr(13), "")) Call Fodoku Call Kijelzes(kulcsszoSzam, bekszam) Word.Application.Documents(kulcsdokuNev).Activate Next para ActiveDocument.Close ActiveWindow.Selection.Collapse Call Vege2 Sub Vege2() Unload UserForm2 'Megjelenítjük az ablakot: Word.Application.Visible = True Sub Vege1() Unload UserForm1 'Megjelenítjük az ablakot: Word.Application.Visible = True
Sub Kijelzes(osszes, futo) Dim novekmeny As Single Dim b(20) As Boolean Dim i As Integer If osszes >= 20 Then novekmeny = osszes / 20 Select Case futo / novekmeny Case Is >= 20 UserForm2.Frame20.Visible = True Case Is >= 19 UserForm2.Frame19.Visible = True Case Is >= 18 UserForm2.Frame18.Visible = True Case Is >= 17 UserForm2.Frame17.Visible = True Case Is >= 16 UserForm2.Frame16.Visible = True Case Is >= 15 UserForm2.Frame15.Visible = True Case Is >= 14 UserForm2.Frame14.Visible = True Case Is >= 13 UserForm2.Frame13.Visible = True Case Is >= 12 UserForm2.Frame12.Visible = True Case Is >= 11 UserForm2.Frame11.Visible = True Case Is >= 10 UserForm2.Frame10.Visible = True Case Is >= 9 UserForm2.Frame9.Visible = True Case Is >= 8 UserForm2.Frame8.Visible = True Case Is >= 7
UserForm2.Frame7.Visible = True Case Is >= 6 UserForm2.Frame6.Visible = True Case Is >= 5 UserForm2.Frame5.Visible = True Case Is >= 4 UserForm2.Frame4.Visible = True Case Is >= 3 UserForm2.Frame3.Visible = True Case Is >= 2 UserForm2.Frame2.Visible = True Case Is >= 1 UserForm2.Frame1.Visible = True End Select novekmeny = 20 * futo / osszes For i = 1 To 20 If novekmeny >= i Then b(i) = True b(i) = False Next i UserForm2.Frame1.Visible = b(1) UserForm2.Frame2.Visible = b(2) UserForm2.Frame3.Visible = b(3) UserForm2.Frame4.Visible = b(4) UserForm2.Frame5.Visible = b(5) UserForm2.Frame6.Visible = b(6) UserForm2.Frame7.Visible = b(7) UserForm2.Frame8.Visible = b(8) UserForm2.Frame9.Visible = b(9) UserForm2.Frame10.Visible = b(10) UserForm2.Frame11.Visible = b(11) UserForm2.Frame12.Visible = b(12) UserForm2.Frame13.Visible = b(13)
UserForm2.Frame14.Visible = b(14) UserForm2.Frame15.Visible = b(15) UserForm2.Frame16.Visible = b(16) UserForm2.Frame17.Visible = b(17) UserForm2.Frame18.Visible = b(18) UserForm2.Frame19.Visible = b(19) UserForm2.Frame20.Visible = b(20) Vissza a magyarázathoz