En serie af Microsoft-softwareprodukter til tekstbehandling til oprettelse af web-, mail- og udskriftsdokumenter.
Nej. Noget er tilsyneladende gået helt galt for konstruktørerne til Word 2013, hvad angår målinger af teksters læsbarhed. Den nordiske LIX-tal beregning helt tilbage fra Word 2007, der bygger på antal ord + antal svære ord (over 6 bogstaver), er helt væk nu. Og den engelske Flesch-Kincaid Reading Ease, der bygger på antal ord + gennemsnit af stavelser i ord, skal man selv beregne ud fra den nuværende stavekontrols "Statistik", i øvrigt uden angivelse af nogen formel at beregne resultatet efter.
Da jeg som skribent selv tit har brug for at tjekke læsbarheden af mine tekster, alt afhængig af de forskellige målgruppers gennemsnitlige læsekundskaber jeg henvender mig til, har jeg derfor selv i al hast måtte programmere en makro til Word 2013, der når som helst øjeblikkelig kan give mig LIX-tallet til et givet udkast.
Jeg vedlægger her LIX-programmet, skrevet i Visual-Basic. Enhver må frit tage en kopi af det og lægge det ind i Word 2013 som en makro til eget brug. Jeg har markeret programmet med copyright, da jeg vil forbeholde mig at kunne sagsøge evt. brugere, som måtte kunne finde på at ville tjene penge el.lign. på min ophavsret til de creationer, jeg selv er forfatter til.
Sub LIX() ' © Jørn Dalmer, 2013
Standardbogside = 400
Dim Hyppighed(200) As Integer 'Der forventes ingen sætningslængder over 200 ord
If Selection.Type = wdSelectionNormal Then 'Beregning af markerede udsnit af teksten
Selection.Copy
Documents.Add.Content.Paste
markering = 1
End If
For FalskeSætninger = 1 To 6 'Teksten renses for falske sætninger
With Selection.Find
.Text = " ^p"
.Replacement.Text = "^p"
.Text = " "
.Replacement.Text = " "
.Forward = True
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
Next FalskeSætninger
'NB! - Antal sætninger er ikke overalt korrigeret for ordforkortelser (= upræcis SD)
TotalOrdAntal = ActiveDocument.ComputeStatistics(statistic:=wdStatisticWords)
TotalAntalSætn = ActiveDocument.Sentences.Count
For SætnNr = 1 To TotalAntalSætn 'Beregning af de enkelte sætningslængder ved antal ord
OrdAntal = ActiveDocument.Sentences(SætnNr).ComputeStatistics(wdStatisticWords)
Hyppighed(OrdAntal) = Hyppighed(OrdAntal) + 1 'Sætningslængder indlæst i indexeret variabel
If HøjesteOrdAntal < OrdAntal Then
HøjesteOrdAntal = OrdAntal 'Længste sætning + sætnings-Nr. bestemmes
Sætningsnummer = SætnNr
End If
sumOrdAntal = sumOrdAntal + OrdAntal 'Til beregning af standardafv. (SD)
sumOrdAntal2 = sumOrdAntal2 + OrdAntal ^ 2
Next SætnNr
forkortelser = "0"
For Each sætning In ActiveDocument.Sentences 'Korrektion for alle ordforkortelser
If sætning.Words(1).Characters(1).Case = wdLowerCase Then forkortelser = forkortelser + 1
Next sætning
If TotalAntalSætn > Sætningsnummer Then 'Korrektion af længste sætning hvis ordforkortelser
If ActiveDocument.Sentences(Sætningsnummer).Words(1).Characters(1).Case = wdLowerCase Then
ExtraOrdAntalTilVenstre = ActiveDocument.Sentences(Sætningsnummer - 1).ComputeStatistics(wdStatisticWords)
HøjesteOrdAntal = HøjesteOrdAntal + ExtraOrdAntalTilVenstre
End If
If ActiveDocument.Sentences(Sætningsnummer + 1).Words(1).Characters(1).Case = wdLowerCase Then
ExtraOrdAntalTilHøjre = ActiveDocument.Sentences(Sætningsnummer + 1).ComputeStatistics(wdStatisticWords)
HøjesteOrdAntal = HøjesteOrdAntal + ExtraOrdAntalTilHøjre
End If
End If
SD = Sqr((TotalAntalSætn * sumOrdAntal2 - sumOrdAntal ^ 2) / TotalAntalSætn ^ 2) 'SD-formel
SD = Int(SD * 10 + 0.5) / 10 'SD med 1 decimal
For Each ord In ActiveDocument.Words 'Beregning af antal lange ord over 6 bogstaver
If Len(Trim(ord)) > 6 Then Langeord = Langeord + 1
Next ord
For Each tankestregsøgning In ActiveDocument.Words 'Tæller sætninger med, der begynder med tankestreg, efterfulgt af lille beg.bogstav (desværre også med stort bogstav.
If LTrim(tankestregsøgning) = "- " Then tankestreg = tankestreg + 1
Next tankestregsøgning
TotalAntalSætn = TotalAntalSætn + tankestreg
KorrTotalAntalSætn = TotalAntalSætn - forkortelser 'Korr. kun til LIX-beregning, ikke til SD
SætningsLængde = Int(TotalOrdAntal / KorrTotalAntalSætn * 10 + 0.5) / 10 'Beregning af LIX
ProcentLangeOrd = Int(Langeord / TotalOrdAntal * 100 + 0.5)
LIXtal = Int(SætningsLængde + ProcentLangeOrd + 0.5)
Standardsider = Int(TotalOrdAntal / Standardbogside * 10 + 0.5) / 10
Trykknap = MsgBox(" LIX = " & LIXtal & Chr$(13) & Chr$(13) & " Meningslængden = " & SætningsLængde & " ord" & Chr$(13) & " Lange ord = " & ProcentLangeOrd & "%" & Chr$(13) & "Sætn.nr. " & Sætningsnummer & " = længste sætning på " & HøjesteOrdAntal & " ord" & Chr$(13) & " Spredning = " & SD & Chr$(13) & " _________" & Chr$(13) & Chr$(13) & " Antal ord i alt = " & TotalOrdAntal & Chr$(13) & " Antal sætninger i alt = " & KorrTotalAntalSætn & Chr$(13) & " Antal ordforkortelser i alt = " & forkortelser & Chr$(13) & " Antal standardbogsider á " & Standardbogside & " ord = " & Standardsider & Chr$(13) & Chr$(13) & " (Se LIX-tabel?)", vbYesNo + vbDefaultButton2, " LÆSBARHEDS-INDEX")
If Trykknap = vbYes Then
MsgBox " [ Aktuel teksts LIX-tal = " & LIXtal & " ]" & Chr$(13) & Chr$(13) & " 15 (11-19) = 1.-3. klassetrin" & Chr(13) & " 24 (21-27) = 3.-6. klassetrin" & Chr(13) & " 28 (25-31) = 6.-7. klassetrin" & Chr(13) & " 30 (27-33) = 7.-10. klassetrin" & Chr(13) & " _______________" & Chr(13) & Chr(13) & "18 = Tegneserier" & Chr(13) & "24 = BT & Extrabladet" & Chr(13) & "31 = Voksenskønlitteratur (20-45)" & Chr(13) & "36 = Ugeblade" & Chr(13) & "42 = Fleste aviser" & Chr(13) & "48 = Bl.a. Information og Politiken" & Chr(13) & "60 = Fagbøger & tidsskrifter (højt niveau)" & Chr(13) & "65 = Visse juridiske tekster, o.lign." & Chr(13) & " _______________" & Chr(13) & Chr(13) & " [ Aktuel teksts sprednings-tal = S(" & SD & ") ]" & Chr(13) & Chr(13) & " S(5-10) = ensartet, jævn og fast tekst." & Chr(13) & " S(10-15) = normal, jævn tekst." & Chr(13) & " S(15-20) = ujævn, springende tekst.", , " LIX-tabel"
End If
Trykknap = MsgBox("SE TABEL FOR HYPPIGHED AF SÆTNINGSLÆNGDER?" & Chr$(13) & Chr$(13) & " - hvis Nej, markeres kun tekstens længste sætning.", vbYesNo + vbDefaultButton2, " TABEL")
If Sætningsnummer = TotalAntalSætn Then ActiveDocument.Sentences(Sætningsnummer).Select: GoTo SLUT
If Trykknap = vbNo Then 'Markering af længste sætning og afslut
If ActiveDocument.Sentences(Sætningsnummer).Words(1).Characters(1).Case = wdLowerCase Then
ActiveDocument.Sentences(Sætningsnummer - 1).Select
Selection.SetRange Start:=Selection.Start, End:=ActiveDocument.Sentences(Sætningsnummer).End
ElseIf ActiveDocument.Sentences(Sætningsnummer + 1).Words(1).Characters(1).Case = wdLowerCase Then
ActiveDocument.Sentences(Sætningsnummer).Select
Selection.SetRange Start:=Selection.Start, End:=ActiveDocument.Sentences(Sætningsnummer + 1).End
Else
ActiveDocument.Sentences(Sætningsnummer).Select
End If: GoTo SLUT
End If
Set NytPapir = Documents.Add 'Udskrivning i tabel
Set Tabel = NytPapir.Tables.Add(Selection.Range, HøjesteOrdAntal + 1, 2)
Tabel.Cell(1, 1).Range.InsertAfter "Sætningslængde i antal ord/tegn"
Tabel.Cell(1, 2).Range.InsertAfter "Hyppighed af sætningslængde"
For n = 2 To HøjesteOrdAntal + 1
Tabel.Cell(n, 1).Range.InsertAfter n - 1
Tabel.Cell(n, 2).Range.InsertAfter Hyppighed(n - 1) 'Indexeret variabel udlæses i tabel
Next n
With Selection ' Formatering af tabel
.Tables(1).Select
.Columns.PreferredWidth = CentimetersToPoints(3.1)
.ParagraphFormat.Alignment = wdAlignParagraphCenter
.EndKey Unit:=wdStory
End With
Selection.Tables(1).Columns(2).Select 'Tabeludskrift afbildet i diagram
WordBasic.InsertChart
Selection.ShapeRange.Height = 270#
Selection.ShapeRange.Width = 405#
SLUT: If markering = 1 Then ActiveDocument.Close
End Sub
Mvh,
Jørn Dalmer
******@hotmail.dk