Sub DocAlyseForThinMac() ' Paul Beverley - Version 11.09.19 ' Analyses various aspects of a document showWild = True ' prompts to count number of tests ' cc =50 For i = 1 To 15 spcs = " " & spcs Next i myResponse = MsgBox("Analyse this document?" _ & vbCr & vbCr & "NOTE: Nothing will appear " _ & "to happen, but please wait patiently!", vbQuestion _ + vbYesNoCancel, "DocAlyse For Mac") If myResponse <> vbYes Then Exit Sub myTrack = ActiveDocument.TrackRevisions ActiveDocument.TrackRevisions = False ' Use main file for italic 'et al' count... myTot = ActiveDocument.range.End Set rng = ActiveDocument.Content ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc With rng.Find .ClearFormatting .Replacement.ClearFormatting .Text = "" .Font.Italic = True .Replacement.Text = "^&!" .Wrap = wdFindContinue .MatchWildcards = True .MatchWholeWord = False .MatchSoundsLike = False .Execute Replace:=wdReplaceAll End With italEtAls = ActiveDocument.range.End - myTot If italEtAls > 0 Then WordBasic.EditUndo ' ...and superscript degree count ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc With rng.Find .ClearFormatting .Replacement.ClearFormatting .Text = "[oO0]" .Font.Superscript = True .Replacement.Text = "vbvb" .Replacement.Font.Superscript = False .MatchWildcards = True .Execute Replace:=wdReplaceAll End With funnyDegrees = (ActiveDocument.range.End - myTot) / 3 With rng.Find .ClearFormatting .Replacement.ClearFormatting .Text = " vbvb" .Replacement.Text = "^&!" .MatchWildcards = True .Execute Replace:=wdReplaceAll End With funnyDegreesSp = ActiveDocument.range.End - myTot - funnyDegrees * 3 If funnyDegreesSp > 0 Then WordBasic.EditUndo If funnyDegrees > 0 Then WordBasic.EditUndo ' StatusBar = spcs & myPrompt DoEvents Selection.HomeKey Unit:=wdStory Set rngOld = ActiveDocument.Content Documents.Add Set rng = ActiveDocument.Content rng.FormattedText = rngOld.FormattedText myEnd = rng.End Set rng2 = ActiveDocument.Content rng.Collapse wdCollapseEnd rng.Text = rng2.Text Set rng3 = ActiveDocument.Content rng3.End = myEnd - 1 rng3.Select Selection.Delete myRslt = "" Set rng = ActiveDocument.Content myTot = ActiveDocument.range.End CR = vbCr: CR2 = CR & CR tr = Chr(9) & "0zczc" & CR: sp = " " Selection.HomeKey Unit:=wdStory ' Ten or 10 ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc With rng.Find .ClearFormatting .Replacement.ClearFormatting .Text = "" .Replacement.Text = "^&!" .MatchWildcards = True .Execute Replace:=wdReplaceAll End With i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = " <10>[!,]" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo If i + g > 0 Then myRslt = myRslt & "ten" & vbTab & _ Trim(Str(i)) & CR & "10" & vbTab & Trim(Str(g)) & CR2 ' spelt-out lower-case numbers over nine ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "<[efnst][efghinorvwx]{2,4}ty" rng.Find.Execute Replace:=wdReplaceAll a = ActiveDocument.range.End - myTot If a > 0 Then WordBasic.EditUndo rng.Find.Text = "" rng.Find.Execute Replace:=wdReplaceAll b = ActiveDocument.range.End - myTot If b > 0 Then WordBasic.EditUndo rng.Find.Text = "" rng.Find.Execute Replace:=wdReplaceAll C = ActiveDocument.range.End - myTot If C > 0 Then WordBasic.EditUndo rng.Find.Text = "" rng.Find.Execute Replace:=wdReplaceAll d = ActiveDocument.range.End - myTot If d > 0 Then WordBasic.EditUndo rng.Find.Text = "<[efnst][efghinuorvwx]{2,4}teen>" rng.Find.Execute Replace:=wdReplaceAll E = ActiveDocument.range.End - myTot If E > 0 Then WordBasic.EditUndo rng.Find.Text = "" rng.Find.Execute Replace:=wdReplaceAll f = ActiveDocument.range.End - myTot If f > 0 Then WordBasic.EditUndo If a + b + C + d + E + f > 0 Then myRslt = myRslt & _ "spelt-out numbers (11-999)" & vbTab & _ Trim(Str(a + b + C + d + E + f)) & CR2 ' Four-digit numbers ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "[!.]<[0-9]{4}>[!,]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo ' take off 20xx dates rng.Find.Text = "[!.]<20[0-9]{2}>[!,]" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo ' take off 13xx to 19xx dates rng.Find.Text = "[!.]<1[3-9][0-9]{2}>[!,]" rng.Find.Execute Replace:=wdReplaceAll k = ActiveDocument.range.End - myTot If k > 0 Then WordBasic.EditUndo i = i - g - k If i < 0 Then i = 0 ' Four figs with comma rng.Find.Text = "[!.]<[0-9],[0-9]{3}>[!,]" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo ' Four figs with hard or ordinary space rng.Find.Text = "[!.]<[0-9][^0160^32][0-9]{3}>[!,]" rng.Find.Execute Replace:=wdReplaceAll k = ActiveDocument.range.End - myTot If k > 0 Then WordBasic.EditUndo If i + g + k > 0 Then myRslt = myRslt & "Four-digit numbers:" & CR _ & "nnnn" & vbTab & Trim(Str(i)) & CR _ & "n,nnn" & vbTab & Trim(Str(g)) & CR _ & "n nnn" & vbTab & Trim(Str(k)) & CR If showWild = True Then myRslt = myRslt & _ "<[0-9]{4}>" & sp _ & "<[0-9],[0-9]{3}>" & sp _ & "<[0-9][^0160^32][0-9]{3}>" & tr myRslt = myRslt & CR End If ' Dates with 'mid' in front ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "mid [0-9]{4}" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "mid-[0-9]{4}" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo rng.Find.Text = "mid[0-9]{4}" rng.Find.Execute Replace:=wdReplaceAll k = ActiveDocument.range.End - myTot If k > 0 Then WordBasic.EditUndo If i + g + k > 0 Then myRslt = myRslt & "mid 1900(s)" & vbTab _ & Trim(Str(i)) & CR & "mid-1900(s)" & vbTab & _ Trim(Str(g)) & CR & "mid1900(s)" & vbTab & _ Trim(Str(k)) & CR If showWild = True Then myRslt = myRslt & _ " mid[0-9]{4}" & tr myRslt = myRslt & CR End If ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "mid [0-9]{2}[!0-9]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "mid-[0-9]{2}[!0-9]" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo rng.Find.Text = "mid[0-9]{2}[!0-9]" rng.Find.Execute Replace:=wdReplaceAll k = ActiveDocument.range.End - myTot If k > 0 Then WordBasic.EditUndo If i + g + k > 0 Then myRslt = myRslt & "mid 90(s)" & vbTab _ & Trim(Str(i)) & CR & "mid-90(s)" & vbTab & _ Trim(Str(g)) & CR & "mid90(s)" & vbTab & _ Trim(Str(k)) & CR If showWild = True Then myRslt = myRslt & _ " mid[0-9]{2}[!0-9]" & tr myRslt = myRslt & CR End If ' Serial comma/not serial comma ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "[a-zA-Z\-]@, [a-zA-Z\-]@, and " rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo myRslt = myRslt & "serial comma" & vbTab & Trim(Str(i)) & CR rng.Find.Text = "[a-zA-Z\-]@, [a-zA-Z\-]@ and " rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo myRslt = myRslt & "no serial comma" & vbTab & Trim(Str(i)) & CR If showWild = True Then myRslt = myRslt & _ "[a-zA-Z\-]@, [a-zA-Z\-]@, and " & sp & _ "[a-zA-Z\-]@, [a-zA-Z\-]@ and " & tr myRslt = myRslt & CR ' hard spaces ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "^s" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo ' hard hyphens rng.Find.Text = "^~" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo myRslt = myRslt & "hard spaces" & vbTab & Trim(Str(i)) _ & CR & "hard hyphens" & vbTab & Trim(Str(g)) & CR2 ' Types of ellipsis ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = ChrW(8230) rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "..." rng.Find.Execute Replace:=wdReplaceAll j = ActiveDocument.range.End - myTot If j > 0 Then WordBasic.EditUndo rng.Find.Text = ". . ." rng.Find.Execute Replace:=wdReplaceAll k = ActiveDocument.range.End - myTot If k > 0 Then WordBasic.EditUndo If i + j + k > 0 Then myRslt = myRslt & "Types of ellipsis:" & CR & _ "proper ellipsis" & vbTab & Trim(Str(i)) & CR _ & "triple dots" & vbTab & Trim(Str(j)) & CR _ & "spaced triple dots" & vbTab & Trim(Str(k)) & CR2 End If ' Ellipsis, etc spacing ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc allChars = ChrW(8230) & "/" & ChrW(8211) _ & ChrW(8212) & "-" myNames = "Ellipsis Solidus En dash Em dash Hyphen " For myGo = 0 To 4 sol = Mid(allChars, myGo + 1, 1) myName = Trim(Mid(myNames, (9 * myGo) + 1, 9)) rng.Find.Text = sol rng.Find.Execute Replace:=wdReplaceAll t = ActiveDocument.range.End - myTot If t > 0 Then WordBasic.EditUndo rng.Find.Text = " " & sol & " " rng.Find.Execute Replace:=wdReplaceAll bth = ActiveDocument.range.End - myTot If bth > 0 Then WordBasic.EditUndo rng.Find.Text = "[! ]" & sol & " " rng.Find.MatchWildcards = True rng.Find.Execute Replace:=wdReplaceAll ftr = ActiveDocument.range.End - myTot If ftr > 0 Then WordBasic.EditUndo rng.Find.Text = " " & sol & "[! ]" rng.Find.Execute Replace:=wdReplaceAll bfr = ActiveDocument.range.End - myTot If bfr > 0 Then WordBasic.EditUndo rng.Find.Text = "[! ]" & sol & "[! ]" rng.Find.Execute Replace:=wdReplaceAll nthr = ActiveDocument.range.End - myTot If nthr > 0 Then WordBasic.EditUndo myRslt = myRslt & myName & " spacing:" & CR & "space before only" _ & vbTab & Trim(Str(bfr)) & CR & "space after only" & _ vbTab & Trim(Str(ftr)) & CR & "spaced both ends" & _ vbTab & Trim(Str(bth)) & CR If myGo < 4 Then myRslt = myRslt & "not spaced" & vbTab & Trim(Str(nthr)) & CR2 Else myRslt = myRslt & CR End If myRslt = myRslt & CR End If Next myGo ' line breaks ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "^l" rng.Find.MatchWildcards = False rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo ' page breaks ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "^m" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo myRslt = myRslt & "line breaks" & vbTab & Trim(Str(i)) _ & CR & "page breaks" & vbTab & Trim(Str(g)) & CR2 ' Single/double quotes ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = ChrW(8216) rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo singleCurl = i myRslt = myRslt & "curly open single quote" & vbTab & _ Trim(Str(i)) & CR rng.Find.Text = ChrW(8220) rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo myRslt = myRslt & "curly open double quote" & vbTab & _ Trim(Str(i)) & CR rng.Find.Text = Chr(39) rng.Find.MatchWildcards = True rng.Find.MatchCase = True rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo myRslt = myRslt & "straight single quote" & vbTab & _ Trim(Str(i)) & CR rng.Find.Text = Chr(34) rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo myRslt = myRslt & "straight double quote" & vbTab & _ Trim(Str(i)) & CR2 ' etc(.) ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = " 0 Then WordBasic.EditUndo rng.Find.Text = " 0 Then WordBasic.EditUndo rng.Find.Text = " 0 Then WordBasic.EditUndo rng.Find.Text = " 0 Then WordBasic.EditUndo If h + i + g + k > 0 Then myRslt = myRslt & "etc" & _ vbTab & Trim(Str(h)) & CR & "etc." & vbTab & _ Trim(Str(i - g - k)) & CR2 ' et al(.) ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = " 0 Then WordBasic.EditUndo rng.Find.Text = " 0 Then WordBasic.EditUndo If g + i + italEtAls > 0 Then myRslt = myRslt & "et al." _ & vbTab & Trim(Str(g)) & CR & "et al (italic, total)" & _ vbTab & Trim(Str(italEtAls)) & CR & "et al (no dot)" & _ vbTab & Trim(Str(i)) & CR2 ' i.e./ie ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "i.e." rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo myRslt = myRslt rng.Find.Text = "" rng.Find.MatchWildcards = True rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo If i + g > 0 Then myRslt = myRslt & "ie" & vbTab & Trim(Str(g)) & CR _ & "i.e." & vbTab & Trim(Str(i)) & CR2 ' e.g./eg ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "e.g." rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo If i + g > 0 Then myRslt = myRslt & "eg" & vbTab & Trim(Str(g)) & CR _ & "e.g." & vbTab & Trim(Str(i)) & CR2 ' Initials with surnames ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "<[A-Z]. [A-Z]. [A-Z][a-z]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "<[A-Z][a-z]{2,}, [A-Z]. [A-Z]. " rng.Find.Execute Replace:=wdReplaceAll i2 = ActiveDocument.range.End - myTot If i2 > 0 Then WordBasic.EditUndo aBit = "J. L. B. Matekoni" & vbTab & Trim(Str(i + i2)) & CR g = i + i2 rng.Find.Text = "<[A-Z].[A-Z]. [A-Z][a-z]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "<[A-Z][a-z]{2,}, [A-Z].[A-Z]." rng.Find.Execute Replace:=wdReplaceAll i2 = ActiveDocument.range.End - myTot If i2 > 0 Then WordBasic.EditUndo aBit = aBit & "J.L.B. Matekoni" & vbTab & Trim(Str(i + i2)) & CR g = g + i + i2 rng.Find.Text = "<[A-Z] [A-Z] [A-Z][a-z]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "<[A-Z][a-z]{2,}, [A-Z] [A-Z] " rng.Find.Execute Replace:=wdReplaceAll i2 = ActiveDocument.range.End - myTot If i2 > 0 Then WordBasic.EditUndo aBit = aBit & "J L B Matekoni" & vbTab & Trim(Str(i + i2)) & CR g = g + i + i2 rng.Find.Text = "<[A-Z]{2}> [A-Z][a-z]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "<[A-Z][a-z]{2,}, [A-Z]{2}" rng.Find.Execute Replace:=wdReplaceAll i2 = ActiveDocument.range.End - myTot If i2 > 0 Then WordBasic.EditUndo aBit = aBit & "JLB Matekoni" & vbTab & Trim(Str(i + i2)) & _ " (Beware! This can be inflated by, e.g. BBC Enterprises.)" & CR If showWild = True Then aBit = aBit & "<[A-Z]. [A-Z]. [A-Z][a-z]" _ & sp & "<[A-Z].[A-Z]. [A-Z][a-z]" & sp & "<[A-Z] [A-Z] [A-Z][a-z]" _ & sp & "<[A-Z]{2}> [A-Z][a-z]" & tr If showWild = True Then aBit = aBit & "<[A-Z][a-z]{2,}, [A-Z]. [A-Z]. " _ & sp & "<[A-Z][a-z]{2,}, [A-Z].[A-Z]." & sp & "<[A-Z][a-z]{2,}, [A-Z] [A-Z] " _ & sp & "<[A-Z][a-z]{2,}, [A-Z]{2}" & tr aBit = aBit & CR If g + i + i2 > 0 Then myRslt = myRslt & aBit ' Convention for page numbers ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = " 0 Then WordBasic.EditUndo rng.Find.Text = " 0 Then WordBasic.EditUndo k = i + g aBit = "p/pp. 123" & vbTab & Trim(Str(k)) & CR rng.Find.Text = " 0 Then WordBasic.EditUndo rng.Find.Text = " 0 Then WordBasic.EditUndo aBit = aBit & "p/pp.123" & vbTab & Trim(Str(i + g)) & CR k = k + i + g rng.Find.Text = "

0 Then WordBasic.EditUndo rng.Find.Text = " 0 Then WordBasic.EditUndo aBit = aBit & "p/pp 123" & vbTab & Trim(Str(i + g)) & CR k = k + i + g rng.Find.Text = " 0 Then WordBasic.EditUndo rng.Find.Text = " 0 Then WordBasic.EditUndo aBit = aBit & "p/pp123" & vbTab & Trim(Str(i + g)) & CR If showWild = True Then aBit = aBit & _ " 0 Then myRslt = myRslt & aBit ' Convention for ed/eds/edn ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "[!.]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "[!.]" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo rng.Find.Text = "[!.]" rng.Find.Execute Replace:=wdReplaceAll h = ActiveDocument.range.End - myTot If h > 0 Then WordBasic.EditUndo rng.Find.Text = " 0 Then WordBasic.EditUndo rng.Find.Text = " 0 Then WordBasic.EditUndo rng.Find.Text = " 0 Then WordBasic.EditUndo If k + m + j + i + g + h > 0 Then myRslt = myRslt _ & "ed" & vbTab & Trim(Str(i)) & CR & "eds" _ & vbTab & Trim(Str(g)) & CR & "edn" & vbTab & _ Trim(Str(h)) & CR & "ed." _ & vbTab & Trim(Str(k)) & CR & "eds." & vbTab & _ Trim(Str(m)) & CR & "edn." _ & vbTab & Trim(Str(j)) & CR2 ' Convention for am/pm ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "[1-9][ap]m" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo aBit = "2pm" & vbTab & Trim(Str(i)) & CR rng.Find.Text = "[1-9][ap].m." rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo aBit = aBit & "2p.m." & vbTab & Trim(Str(g)) & CR rng.Find.Text = "[1-9] [ap]m" rng.Find.Execute Replace:=wdReplaceAll k = ActiveDocument.range.End - myTot If k > 0 Then WordBasic.EditUndo aBit = aBit & "2 pm" & vbTab & Trim(Str(k)) & CR rng.Find.Text = "[1-9] [ap].m." rng.Find.Execute Replace:=wdReplaceAll h = ActiveDocument.range.End - myTot If h > 0 Then WordBasic.EditUndo aBit = aBit & "2 p.m." & vbTab & Trim(Str(h)) & CR2 If k + i + g + h > 0 Then myRslt = myRslt & aBit ' US/UK spelling ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "[bpiv]our[ ,.s]" rng.Find.Execute Replace:=wdReplaceAll a = ActiveDocument.range.End - myTot If a > 0 Then WordBasic.EditUndo rng.Find.Text = "[a-z]{3,}elling>" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo rng.Find.Text = "[a-z]{3,}elled>" rng.Find.Execute Replace:=wdReplaceAll f = ActiveDocument.range.End - myTot If f > 0 Then WordBasic.EditUndo ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "[bpiv]or[ ,.s]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "rior[ ,.s]" rng.Find.Execute Replace:=wdReplaceAll q = ActiveDocument.range.End - myTot If q > 0 Then WordBasic.EditUndo rng.Find.Text = "eling>" rng.Find.Execute Replace:=wdReplaceAll v = ActiveDocument.range.End - myTot If v > 0 Then WordBasic.EditUndo rng.Find.Text = "eled>" rng.Find.Execute Replace:=wdReplaceAll k = ActiveDocument.range.End - myTot If k > 0 Then WordBasic.EditUndo If a + g + f + i + q + v + k > 0 Then myRslt = _ myRslt & "UK spelling (appx)" & vbTab & _ Trim(Str(a + g + f)) & CR & _ "US spelling (appx)" & vbTab & _ Trim(Str(i - q + v + k)) & CR & _ "(For a more accurate count, please use UKUScount.)" & CR2 ' US/UK punctuation ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "[a-zA-Z][""" & ChrW(8221) & "][,.]" rng.Find.Execute Replace:=wdReplaceAll dfgsdfg = ActiveDocument.range.End i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "[a-zA-Z]['" & ChrW(8217) & "][,.]" rng.Find.Execute Replace:=wdReplaceAll j = ActiveDocument.range.End - myTot If j > 0 Then WordBasic.EditUndo rng.Find.Text = "[a-zA-Z][,.][""" & ChrW(8221) & "][,.]" rng.Find.Execute Replace:=wdReplaceAll k = ActiveDocument.range.End - myTot If k > 0 Then WordBasic.EditUndo rng.Find.Text = "[a-zA-Z]['" & ChrW(8217) & "][,.]" rng.Find.Execute Replace:=wdReplaceAll m = ActiveDocument.range.End - myTot If m > 0 Then WordBasic.EditUndo If i + j + k + m > 0 Then myRslt = myRslt & _ "UK punctuation (appx)" & vbTab & _ Trim(Str(i + j)) & CR & "US punctuation (appx)" _ & vbTab & Trim(Str(k + m)) & CR2 ' Initial capital after colon? ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "[a-zA-Z]: [A-Z][a-z]" rng.Find.Execute Replace:=wdReplaceAll dfgsdfg = ActiveDocument.range.End i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "[a-zA-Z]: [a-z]" rng.Find.Execute Replace:=wdReplaceAll j = ActiveDocument.range.End - myTot If j > 0 Then WordBasic.EditUndo If i + j > 0 Then myRslt = myRslt & _ "Initial capital after colon" & vbTab & _ Trim(Str(i)) & CR & "Lowercase after colon" _ & vbTab & Trim(Str(j)) & CR2 ' is/iz ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "ise>" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "ise[sd]>" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo rng.Find.Text = "ising>" rng.Find.Execute Replace:=wdReplaceAll k = ActiveDocument.range.End - myTot If k > 0 Then WordBasic.EditUndo rng.Find.Text = "isation" rng.Find.Execute Replace:=wdReplaceAll l = ActiveDocument.range.End - myTot If l > 0 Then WordBasic.EditUndo rng.Find.Text = "[armvt]ising" rng.Find.Execute Replace:=wdReplaceAll p = ActiveDocument.range.End - myTot If p > 0 Then WordBasic.EditUndo rng.Find.Text = "[arvtw]ise" rng.Find.Execute Replace:=wdReplaceAll q = ActiveDocument.range.End - myTot If q > 0 Then WordBasic.EditUndo rng.Find.Text = "ex[eo]rcis[ei]" rng.Find.Execute Replace:=wdReplaceAll r = ActiveDocument.range.End - myTot If r > 0 Then WordBasic.EditUndo myRslt = myRslt & "-is- (very appx)" & vbTab & _ Trim(Str(i + g + k + l - p - q - r)) & CR ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "ize>" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "ize[sd]>" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo rng.Find.Text = "izing>" rng.Find.Execute Replace:=wdReplaceAll k = ActiveDocument.range.End - myTot If k > 0 Then WordBasic.EditUndo rng.Find.Text = "ization" rng.Find.Execute Replace:=wdReplaceAll l = ActiveDocument.range.End - myTot If l > 0 Then WordBasic.EditUndo rng.Find.Text = "[Pp]riz[ie]" rng.Find.Execute Replace:=wdReplaceAll p = ActiveDocument.range.End - myTot If p > 0 Then WordBasic.EditUndo rng.Find.Text = "[Sse]@iz[ie]" rng.Find.Execute Replace:=wdReplaceAll q = ActiveDocument.range.End - myTot If q > 0 Then WordBasic.EditUndo myRslt = myRslt & "-iz- (very appx)" & vbTab _ & Trim(Str(i + g + k + l - p - q)) & CR & _ "(For a more accurate count, please use IZIScount.)" _ & CR2 ' data singular/plural ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo rng.Find.Text = "" rng.Find.Execute Replace:=wdReplaceAll h = ActiveDocument.range.End - myTot If h > 0 Then WordBasic.EditUndo rng.Find.Text = "<[Tt]his data>" rng.Find.Execute Replace:=wdReplaceAll k = ActiveDocument.range.End - myTot If k > 0 Then WordBasic.EditUndo myRslt = myRslt l = i + g + h + k ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo rng.Find.Text = "" rng.Find.Execute Replace:=wdReplaceAll h = ActiveDocument.range.End - myTot If h > 0 Then WordBasic.EditUndo rng.Find.Text = "<[Tt]hese data>" rng.Find.Execute Replace:=wdReplaceAll k = ActiveDocument.range.End - myTot If k > 0 Then WordBasic.EditUndo If l + i + h + g + k > 0 Then myRslt = myRslt & _ "data singular" & _ vbTab & Trim(Str(l)) & CR & "data plural" & _ vbTab & Trim(Str(i + g + h + k)) & CR2 ' past participle -rnt -elt ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "sp[oi]@lt>" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo rng.Find.Text = "lea[np]t>" rng.Find.Execute Replace:=wdReplaceAll h = ActiveDocument.range.End - myTot If h > 0 Then WordBasic.EditUndo rng.Find.Text = "[l ][be][ua]rnt>" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "[ds][wpm]elt>" rng.Find.Execute Replace:=wdReplaceAll k = ActiveDocument.range.End - myTot If k > 0 Then WordBasic.EditUndo rng.Find.Text = "sp[oi]@[l]@ed>" rng.Find.Execute Replace:=wdReplaceAll p = ActiveDocument.range.End - myTot If p > 0 Then WordBasic.EditUndo rng.Find.Text = "lea[np]ed>" rng.Find.Execute Replace:=wdReplaceAll q = ActiveDocument.range.End - myTot If q > 0 Then WordBasic.EditUndo rng.Find.Text = "[l ][be][ua]rned>" rng.Find.Execute Replace:=wdReplaceAll r = ActiveDocument.range.End - myTot If r > 0 Then WordBasic.EditUndo rng.Find.Text = "[ds][wpm]elled>" rng.Find.Execute Replace:=wdReplaceAll s = ActiveDocument.range.End - myTot If g + h + i + k + p + q + r + s > 0 Then myRslt = myRslt & _ "-rnt -elt" & vbTab & Trim(Str(g + h + i + k)) & CR & _ "-rned -elled" & vbTab & Trim(Str(p + q + r + s)) & CR2 ' amid(st), among(st), while(st) ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "<[Aa]mid>" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo rng.Find.Text = "<[Aa]mong>" rng.Find.Execute Replace:=wdReplaceAll h = ActiveDocument.range.End - myTot If h > 0 Then WordBasic.EditUndo: g = g + h rng.Find.Text = "<[Ww]hile>" rng.Find.Execute Replace:=wdReplaceAll h = ActiveDocument.range.End - myTot If h > 0 Then WordBasic.EditUndo: g = g + h rng.Find.Text = "<[Aa]midst>" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "<[Aa]mongst>" rng.Find.Execute Replace:=wdReplaceAll h = ActiveDocument.range.End - myTot If h > 0 Then WordBasic.EditUndo: i = i + h rng.Find.Text = "<[Ww]hilst>" rng.Find.Execute Replace:=wdReplaceAll h = ActiveDocument.range.End - myTot If h > 0 Then WordBasic.EditUndo: i = i + h If i + g > 0 Then myRslt = myRslt & "amid/among/while" & vbTab & Trim(Str(g)) & CR myRslt = myRslt & "amidst/amongst/whilst" & vbTab & Trim(Str(i)) & CR If showWild = True Then myRslt = myRslt & "[dgl]st>" & tr myRslt = myRslt & CR End If ' fig/figure aBit = "" rng.Find.Text = "[!.]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo aBit = aBit & "fig" & vbTab & Trim(Str(i)) & CR End If rng.Find.Text = "[!.]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo aBit = aBit & "Fig" & vbTab & Trim(Str(i)) & CR End If rng.Find.Text = " 0 Then WordBasic.EditUndo aBit = aBit & "fig." & vbTab & Trim(Str(i)) & CR End If rng.Find.Text = " 0 Then WordBasic.EditUndo aBit = aBit & "Fig." & vbTab & Trim(Str(i)) & CR End If rng.Find.Text = "[!.]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo aBit = aBit & "figs" & vbTab & Trim(Str(i)) & CR End If rng.Find.Text = "[!.]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo aBit = aBit & "Figs" & vbTab & Trim(Str(i)) & CR End If rng.Find.Text = " 0 Then WordBasic.EditUndo aBit = aBit & "figs." & vbTab & Trim(Str(i)) & CR End If rng.Find.Text = "figure [0-9\(]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo aBit = aBit & "figure" & vbTab & Trim(Str(i)) & CR End If rng.Find.Text = "[!.] Figure [0-9\(]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo aBit = aBit & "Figure" & vbTab & Trim(Str(i)) & CR End If If aBit > "" Then myRslt = myRslt & aBit & CR ' Chapter/chapter ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "[!.] Chapter [0-9]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "chapter [0-9]" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo If i + g > 0 Then myRslt = myRslt & "Chapter (number)" & vbTab & Trim(Str(i)) & CR _ & "chapter (number)" & vbTab & Trim(Str(g)) & CR If showWild = True Then myRslt = myRslt & "chapter [0-9]" & tr myRslt = myRslt & CR End If ' Section/section ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "[!.] Section [0-9]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "section [0-9]" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo If i + g > 0 Then myRslt = myRslt & "Section (number)" & vbTab & _ Trim(Str(i)) & CR & "section (number)" _ & vbTab & Trim(Str(g)) & CR If showWild = True Then myRslt = myRslt & _ "section [0-9]" & tr myRslt = myRslt & CR End If ' No./no. ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = " No. [0-9]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = " No [0-9]" rng.Find.Execute Replace:=wdReplaceAll j = ActiveDocument.range.End - myTot If j > 0 Then WordBasic.EditUndo rng.Find.Text = " no. [0-9]" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo rng.Find.Text = " No.[0-9]" rng.Find.Execute Replace:=wdReplaceAll k = ActiveDocument.range.End - myTot If k > 0 Then WordBasic.EditUndo rng.Find.Text = " No[0-9]" rng.Find.Execute Replace:=wdReplaceAll l = ActiveDocument.range.End - myTot If l > 0 Then WordBasic.EditUndo rng.Find.Text = " no.[0-9]" rng.Find.Execute Replace:=wdReplaceAll m = ActiveDocument.range.End - myTot If m > 0 Then WordBasic.EditUndo If i + j + g + k + l + m > 0 Then myRslt = myRslt & "No (number)" & vbTab & Trim(Str(i)) _ & CR & "No. (number)" & vbTab & Trim(Str(j)) & CR _ & "no. (number)" & vbTab & Trim(Str(g)) & CR myRslt = myRslt & "No(number)" & vbTab & Trim(Str(k)) _ & CR & "No.(number)" & vbTab & Trim(Str(l)) & CR _ & "no.(number)" & vbTab & Trim(Str(m)) & CR2 End If ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = " Vol. [0-9]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = " Vol [0-9]" rng.Find.Execute Replace:=wdReplaceAll j = ActiveDocument.range.End - myTot If j > 0 Then WordBasic.EditUndo rng.Find.Text = " vol. [0-9]" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo rng.Find.Text = " Vol.[0-9]" rng.Find.Execute Replace:=wdReplaceAll k = ActiveDocument.range.End - myTot If k > 0 Then WordBasic.EditUndo rng.Find.Text = " Vol[0-9]" rng.Find.Execute Replace:=wdReplaceAll l = ActiveDocument.range.End - myTot If l > 0 Then WordBasic.EditUndo rng.Find.Text = " vol.[0-9]" rng.Find.Execute Replace:=wdReplaceAll m = ActiveDocument.range.End - myTot If m > 0 Then WordBasic.EditUndo If i + j + g + k + l + m > 0 Then myRslt = myRslt & "Vol (number)" & vbTab & Trim(Str(i)) _ & CR & "Vol. (number)" & vbTab & Trim(Str(j)) & CR _ & "vol. (number)" & vbTab & Trim(Str(g)) & CR myRslt = myRslt & "Vol(number)" & vbTab & Trim(Str(k)) _ & CR & "Vol.(number)" & vbTab & Trim(Str(l)) & CR _ & "vol.(number)" & vbTab & Trim(Str(m)) & CR myRslt = myRslt & CR End If ' units ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "[0-9][^32^160][kKcmM][NgAVm]>" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "[0-9][^32^160][NgAVm]>" rng.Find.Execute Replace:=wdReplaceAll j = ActiveDocument.range.End - myTot If j > 0 Then WordBasic.EditUndo rng.Find.Text = "[0-9][kKcmM][NgAVm]>" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo rng.Find.Text = "[0-9][NgAVm]>" rng.Find.Execute Replace:=wdReplaceAll h = ActiveDocument.range.End - myTot If h > 0 Then WordBasic.EditUndo If i + j + g + h > 0 Then myRslt = myRslt & "spaced units (3 mm)" & vbTab & _ Trim(Str(i + j)) & CR & "unspaced units (3mm)" _ & vbTab & Trim(Str(g + h)) & CR If showWild = True Then myRslt = myRslt & _ "[0-9][^32^160][kKcmM][NgAVm]>" & sp & _ "[0-9][kKcmM][NgAVm]>" & sp & _ "[0-9][NgAVm]>" & sp & _ "[0-9][kKcmM][NgAVmg]>" & tr myRslt = myRslt & CR End If ' percentages ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "[0-9]%" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "[0-9][^32^160]%" rng.Find.Execute Replace:=wdReplaceAll j = ActiveDocument.range.End - myTot If j > 0 Then WordBasic.EditUndo rng.Find.Text = "[0-9] per cent>" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo rng.Find.Text = "[0-9] percent>" rng.Find.Execute Replace:=wdReplaceAll h = ActiveDocument.range.End - myTot If h > 0 Then WordBasic.EditUndo rng.Find.Text = "[a-z]{3,} per cent>" rng.Find.Execute Replace:=wdReplaceAll k = ActiveDocument.range.End - myTot If k > 0 Then WordBasic.EditUndo rng.Find.Text = "[a-z]{3,} percent>" rng.Find.Execute Replace:=wdReplaceAll m = ActiveDocument.range.End - myTot If m > 0 Then WordBasic.EditUndo If i + j + g + h + k + m > 0 Then myRslt = myRslt & "unspaced, e.g. 9%" & vbTab & _ Trim(Str(i)) & CR & "spaced, e.g. 9 %" _ & vbTab & Trim(Str(j)) & CR & "9 per cent" & vbTab & _ Trim(Str(g)) & CR & "9 percent" _ & vbTab & Trim(Str(h)) & CR & "nine per cent" & vbTab & _ Trim(Str(k)) & CR & "nine percent" _ & vbTab & Trim(Str(m)) & CR2 End If ' Feet and inches ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc curlyOpt = Options.AutoFormatAsYouTypeReplaceQuotes Options.AutoFormatAsYouTypeReplaceQuotes = False rng.Find.Text = "[0-9]'" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "[0-9]""" rng.Find.Execute Replace:=wdReplaceAll j = ActiveDocument.range.End - myTot If j > 0 Then WordBasic.EditUndo rng.Find.Text = "[0-9]" & ChrW(8242) rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo rng.Find.Text = "[0-9]" & ChrW(8243) rng.Find.Execute Replace:=wdReplaceAll h = ActiveDocument.range.End - myTot If h > 0 Then WordBasic.EditUndo Options.AutoFormatAsYouTypeReplaceQuotes = curlyOpt If i + j + g + h > 0 Then myRslt = myRslt & "feet (straight) 9'" & vbTab & _ Trim(Str(i)) & CR & "inches (straight) 9""" _ & vbTab & Trim(Str(j)) & CR & "single prime 9" & _ ChrW(8242) & vbTab & Trim(Str(g)) & CR & _ "double prime 9" & ChrW(8243) & vbTab & _ Trim(Str(h)) & CR2 End If ' focus(s) ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc rng.Find.Text = "[Ff]ocus[ei]" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = "[Ff]ocuss[ei]" rng.Find.Execute Replace:=wdReplaceAll g = ActiveDocument.range.End - myTot If g > 0 Then WordBasic.EditUndo If i + g > 0 Then myRslt = myRslt & "focus..." & _ vbTab & Trim(Str(i)) & CR _ & "focuss..." & vbTab & Trim(Str(g)) & CR2 ' Funny characters ' cc =cc - 1 DoEvents ' Ordinary degree symbols rng.Find.Text = ChrW(176) rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = " " & ChrW(176) rng.Find.Execute Replace:=wdReplaceAll isp = ActiveDocument.range.End - myTot If isp > 0 Then WordBasic.EditUndo If i > 0 Then myRslt = myRslt & "degree symbols closed" _ & vbTab & Trim(Str(i - isp)) & CR _ & "degree symbols spaced" _ & vbTab & Trim(Str(isp)) & CR2 ' Funny degrees rng.Find.Text = "º" rng.Find.Execute Replace:=wdReplaceAll i = ActiveDocument.range.End - myTot If i > 0 Then WordBasic.EditUndo rng.Find.Text = " º" rng.Find.Execute Replace:=wdReplaceAll isp = ActiveDocument.range.End - myTot If isp > 0 Then WordBasic.EditUndo If i + funnyDegrees > 0 Then myRslt = myRslt & "funny degrees closed" _ & vbTab & Trim(Str(i + funnyDegrees - isp - _ funnyDegreesSp)) & CR _ & "funny degrees spaced" _ & vbTab & Trim(Str(isp + funnyDegreesSp)) & CR2 End If appx = "" If colouredText > 0 Then If colourOverflow = True Then appx = " (I think)" myRslt = myRslt & "text in coloured font" _ & appx & vbTab & Trim(Str(colouredText - 1)) & CR2 End If If lineBreaks > 0 Then myRslt = myRslt & "line breaks" _ & vbTab & Trim(Str(i + lineBreaks)) & CR2 End If If pageBreaks > 0 Then myRslt = myRslt & "page breaks" _ & vbTab & Trim(Str(i + pageBreaks)) & CR2 End If ' Medical bits go in here myRslt = myRslt & CR Selection.HomeKey Unit:=wdStory Selection.TypeText Text:=CR & myRslt & CR2 Selection.Start = 0 Selection.Font.Bold = True Selection.ParagraphFormat.TabStops(CentimetersToPoints(5#)).Position = _ CentimetersToPoints(5#) ' Grey out the zero lines ' cc =cc - 1 DoEvents ' StatusBar = spcs & "Test number " & cc With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Text = "^13([!^13]@)^t0" .Wrap = wdFindContinue .Replacement.Text = "^p\1^t^=" .Replacement.Font.Bold = False .Replacement.Font.Color = wdColorGray25 .MatchWildcards = True .Execute Replace:=wdReplaceAll End With With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Text = "^t^=zczc" .Wrap = wdFindContinue .Replacement.Text = "" .MatchWildcards = False .Execute Replace:=wdReplaceAll End With Set rng = ActiveDocument.Content With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Text = "" .Replacement.Text = "" .MatchWildcards = False .Execute End With Selection.HomeKey Unit:=wdStory Selection.TypeText Text:="Docalyse" & vbCr ActiveDocument.Paragraphs(1).Style = _ ActiveDocument.Styles(wdStyleHeading1) Selection.HomeKey Unit:=wdStory Beep End Sub