Avatar billede foxladi Nybegynder
24. oktober 2004 - 18:21 Der er 7 kommentarer og
1 løsning

Hvordan laver jeg en ordliste?

Findes der en metode, hvorpå man let kan lave en ordliste bagest i
bogen, sådan à la stikordsregister, bare ikke med henvisning til den
side, ordet står på, men en forklaring af ordet?

Hvis jeg kunne undgå at kigge 250 A4-sider igennem, kopiere og
indsætte ord i ordlisten, og derefter sortere den i alfabetisk form,
ville jeg være meget, meget glad ;-)

Jeg skal bruge Word, men i dette tilfælde vil jeg kunne bruge funktionen i et andet program, hvis det findes, og bagefter konvertere dokumentet tilbage i Wordl-format.

I Word har jeg i øvrigt også forsøgt mig med Fodnote/slutnote-funktionen, men den er ikke tilstrækkelig, da den dels sætter et tegn ved ordet, som kun skal være markeret med fed,  dels ikke gentager ordet sidst i dokumentet.
Avatar billede supertekst Ekspert
11. november 2004 - 13:34 #1
Der kunne måske konstrueres en løsning ved makering af et ord - dialogboks vises - forklaring indtastes - gemmes i en database eller lignende. Kan sorteres og indsættes i Word format igen.

MVH
Avatar billede supertekst Ekspert
12. november 2004 - 08:20 #2
Nu er det ikke et måske - har faktisk udarbejdet det nødvendige:

Når et ord ønskes optaget på ordlisten - dobbeltklik på ordet - aktiver en makro med en genvejstast.
Hvis ordet findes i listen i forvejen - markeres dette med fed -
hvis ikke åbnes en dialogboks, hvor ordet vises og hvor der kan indtastes en ordforklaring. Når OK knappen aktiveres - opdateres ord+forklaring i en database, der indeholder 2 felter:-ORD, som primær nøgle og FORKLARING som et notatfelt. Ordet markeres med fed i dokumentet.

Når man er færdig - aktiveres en anden genvejstast - programmet leder efter det bogmærke, der indleder ordlisten i dokumentet.
Findes dette - altså hvis ordlisten er genereret i forvejen - så slettes ordlisten.

Der positioneres til slutning af dokumentet - indsættes sideskift - oprettes bogmærke - databasen søges igennem - alle ord sorteres og udskrives sammen med den tilhørende forklaring.

(fylder ca. 150 linier i VBA) + en enkel Userform

Spørgsmål: skal forekomster af de optagne ord alle markeres med FED - uden manuel indsats?

MVH
Avatar billede foxladi Nybegynder
14. november 2004 - 18:59 #3
Hej supertekst

Tak for dit grundige udkast til svar.

Nej, ordet skal kun markeres med fed det sted, hvor jeg har markeret det. Grunden er, at jeg skal følge den bog, som jeg har oversat.
Avatar billede supertekst Ekspert
07. december 2004 - 14:05 #4
Hej foxladi

Har du fået løst problem - eller skal du have en kopi af systemet?
Avatar billede foxladi Nybegynder
15. februar 2005 - 17:36 #5
Hej Supertekst

Jeg fik løst mit problem, men jeg vil gerne bede om scriptet til en anden god gang. Husk at angive de som et svar.
Avatar billede supertekst Ekspert
16. februar 2005 - 09:49 #6
Hej igen

========================
VBA-kode til formularen:
========================
Private Sub CommandButton1_Click()                  'opret ordet
    opretOrdet ord, forklaring
    Unload UserForm1
   
    CommandButton1.Visible = False
   
    NewMacros.markerOrdet
End Sub
Private Sub CommandButton2_Click()                  'annuller
    Unload UserForm1
End Sub
Private Sub forklaring_Change()                      'forklaring
    If Len(ordet) > 1 And Len(forklaring) > 1 Then
        CommandButton1.Visible = True
    End If
End Sub
Private Sub UserForm_activate()
    NewMacros.openDB
       
    UserForm1.Caption = "OrdListe: Antal ord " + CStr(ordTab.RecordCount)
    ordet.Value = NewMacros.ord
   
    If NewMacros.findesOrd(ordet) = True Then
        Exit Sub
    End If
   
    forklaring.SetFocus
End Sub
Private Sub opretOrdet(ord, forklaring)
    With NewMacros.ordTab
        .AddNew
        .Fields(0) = ord
        .Fields(1) = forklaring
        .Update
    End With
End Sub

===================
VBA-kode til modul:
===================
Public db, ordTab, xdoksti
Public ord, sortOrd_$(), antalOrd
Sub main()
    ord = LCase(RTrim(LTrim(WordBasic.[getbookmark$]("\Sel"))))
   
    If ord <> "" Then
        openDB
        If findesOrd(ord) = False Then
            Load UserForm1
            UserForm1.Show
        Else
            markerOrdet
        End If
        lukDB
    End If
End Sub
Public Sub openDB()
    xdoksti = ActiveDocument.Path
    If Right(xdoksti, 1) <> "\" Then
        xdoksti = xdoksti + "\"
    End If
   
    Set db = opendatabase(xdoksti + "ordliste.mdb")
    Set ordTab = db.openrecordset("ordliste")
End Sub
Public Sub lukDB()
    ordTab.Close
    db.Close
End Sub
Public Function findesOrd(ord)
    ordTab.Index = "primarykey"
    ordTab.Seek "=", ord
   
    If Not ordTab.NoMatch Then
        findesOrd = True
        Exit Function
    End If
    findesOrd = False
End Function
Public Sub markerOrdet()
        Selection.Font.Bold = True
        WordBasic.charright 1
End Sub
Sub bygOrdforklaring()
Dim f
    openDB
   
    antalOrd = ordTab.RecordCount
    ReDim sortOrd_$(antalOrd, 2)
   
    For f = 1 To antalOrd
        With ordTab
            sortOrd_$(f - 1, 0) = .Fields(0)
            sortOrd_$(f - 1, 1) = .Fields(1)
            .MoveNext
        End With
    Next f

    WordBasic.sortarray sortOrd_$, 0, 0, antalOrd - 1
   
   
    If findesOrdListe = True Then
        findbogmærke "ordliste"
        WordBasic.endofdocument 1
        Selection.Delete
    Else
        WordBasic.endofdocument
        Selection.InsertBreak Type:=wdPageBreak
        ActiveDocument.Bookmarks.Add Name:="ordliste"
    End If
   
    Selection.Font.Size = 12
    Selection.Font.Bold = True
    WordBasic.Insert "Ordliste:" + Chr(13) + Chr(13)
    Selection.Font.Size = 10
    Selection.Font.Bold = False
   
    For f = 0 To antalOrd - 1
        Selection.Font.Bold = True
        WordBasic.Insert sortOrd_$(f, 0) + Chr(13)
        Selection.Font.Bold = False
        WordBasic.Insert sortOrd_$(f, 1) + Chr(13) + Chr(13)
    Next f
   
    lukDB
   
End Sub
Private Function findesOrdListe()
Dim bm
    For Each bm In ActiveDocument.Bookmarks
        If bm.Name = "ordliste" Then
            findesOrdListe = True
            Exit Function
        End If
    Next bm
    findesOrdListe = False
End Function
Private Sub findbogmærke(bm)
    Selection.GoTo What:=wdGoToBookmark, Name:=bm
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
End Sub


MVH
Avatar billede foxladi Nybegynder
16. februar 2005 - 10:40 #7
Tusind tak. Macroerne er nu indlagt i Word. Gider du give en kort forklaring på, hvordan jeg bruger dem?
Avatar billede supertekst Ekspert
17. februar 2005 - 08:24 #8
Send en mail til pb@skivehs.dk - så sender jeg hele "pakken" så kan du se, hvordan det fungerer i modellen - det er nok det nemmeste - i forlængelse af den korte indlæg pr. 12-11-04.

MVH
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester