'MacroName:CvtDiacritics 'MacroDescription:Convert precomposed Latin characters to base character + diacritic 'Macro written by: Joel Hahn, Niles Public Library District 'Macro last modified: 1 May 2017 '* CS.GetFieldLineUnicode has a bug; it often does not correctly convert non-MARC Unicode ' characters to HTML entities, most commonly when there are no MARC Unicode characters in ' a field. '* CS.GetFieldUnicode appears to omit this bug, but cannot easily be used to grab the ' field where the cursor is, and doesn't convert Latin-1 characters in the range 127-255 ' to HTML entities, thus causing SetField to treat them as MARC diacritics & special ' characters; it also converts subfield delimiters to HTML entities or not depending on ' the content of the rest of the field Option Explicit Declare Function GetAscChars(sChars, sRecType) As String Declare Function GetUniChars(sHtmlEntity) As String Declare Sub InitializeUniArr(sRecType) Declare Sub InitializeUniArr2(sRecType) Declare Sub CannotConvertToMARC() Dim UniArr(-5000 to 20000) Sub Main Dim bool, i as Integer Dim Add2i As integer Dim sFieldData, sFieldDataCheck, CurTag, CurTagCheck, PrevTagCheck, sRecType As String Dim place1, place2, oldplace1, TagCount, nRecType As Integer Dim CS As Object On Error Resume Next Set CS = GetObject(,"Connex.Client") On Error GoTo 0 If CS Is Nothing Then Set CS = CreateObject("Connex.Client") End If ' check for whether working with authority (strict MARC8) or bib (full Unicode) record nRecType = CS.ItemType sRecType = "" Select Case CS.ItemType Case 3, 4, 18, 14, 20 'authority record (strict MARC8) sRecType = "A" Case 0, 1, 17, 2, 19 'bibliographic record (full Unicode) sRecType = "B" Case Else MsgBox "Not viewing a bibliographic or authority record. Exiting..." Exit Sub End Select 'numErrors = CS.Validate(sErrorList) 'MsgBox sErrorList If CS.CursorRow > 0 Then i = CS.CursorRow TagCount = 1 PrevTagCheck = "" bool = CS.GetFieldLineUnicode(CS.CursorRow, sFieldDataCheck) CurTag = Left(sFieldDataCheck, 3) If Not CurTag Like "[0-9][0-9][0-9]" Then MsgBox "Macro cannot operate on a field with non-numeric characters in the tag. Exiting..." Exit Sub End If Do bool = CS.GetFieldLineUnicode(i, sFieldDataCheck) CurTagCheck = Left(sFieldDataCheck , 3) If CurTagCheck = PrevTagCheck Then TagCount = TagCount + 1 ElseIf CurTagCheck <> PrevTagCheck And i < CS.CursorRow Then Exit Do End If PrevTagCheck = CurTagCheck i = i - 1 Loop While i >= 1 End If 'bool = CS.GetFieldLineUnicode(CS.CursorRow, sFieldData) bool = CS.GetFieldUnicode(CurTag, TagCount, sFieldData) Dim CurCol, FieldLen, UniCheck Dim CurColAdd as Integer CurCol = CS.CursorColumn bool = CS.InsertText("Д") bool = CS.GetFieldUnicode(CurTag, TagCount, sFieldData) i = 1 CurColAdd = 0 Do UniCheck = Mid(sFieldData, i + CurColAdd, 8) If UniCheck Like "[&][#]x[0-9A-F][0-9A-F][0-9A-F][0-9A-F];" Then CurColAdd = CurColAdd + 7 End If i = i + 1 Loop While i= 0 Then i = i + Add2i Case 160, 175, 190, 191, 201 to 223, 252, 253, 255 'Convert ASCII to ANSEL; ASCII values that are not also used by ANSEL Add2i = Len(sFieldData) 'Add2i = Len(GetAscChars(Mid(sFieldData, i, 1), sRecType)) - 1 sFieldData = Left(sFieldData, i-1) & GetAscChars(Mid(sFieldData, i, 1), sRecType) & Mid(sFieldData, i+1) Add2i = Len(sFieldData) - Add2i If Add2i >= 0 Then i = i + Add2i ' Case Else ' 'MsgBox Mid(sFieldData, i, 1) & ":" & Asc(Mid(sFieldData, i, 1)) End Select i = i + 1 Loop 'MsgBox sFieldData place1 = 0 : place2 = 1 : oldplace1 = 1 'If InStr(sFieldData, "&#x") Then Call InitializeUniArr(sRecType) Call InitializeUniArr2(sRecType) 'End If Do While InStr(oldplace1, sFieldData, "&#x") place1 = InStr(oldplace1, sFieldData, "&#x") If place1 = 0 Then Exit Do place2 = InStr(place1, sFieldData, ";") If place2 > place1 Then sFieldData = Left(sFieldData, place1 - 1) & GetUniChars(Mid(sFieldData, place1, (place2 - place1) + 1)) & Mid(sFieldData, place2 + 1) Else Exit Do End If oldplace1 = place1 + 1 Loop 'MsgBox sFieldData bool = CS.SetFieldLine(CS.CursorRow, sFieldData) CS.CursorColumn = CurCol End Sub Function GetAscChars(sChar, sRecType) As String Dim nRetVal As Integer 'nRetVal = 6 is Yes 'nRetVal = 7 is No Dim sReplaceText As String Dim nLocalAsc As Integer nLocalAsc = Asc(Left(sChar, 1)) Select Case nLocalAsc Case 160 GetAscChars = " " Case 161 GetAscChars = Chr(201) 'This is OCLC-MARC; MARC21 is Chr(198) Case 162 'should be "[cents]", but CS.GetField[Line]Unicode auto-converts Unicode capital O with a slash (D8) to the MARC-8 value (A2) If sRecType = "A" Then sReplaceText = "[cents]" Else sReplaceText = "¢" nRetval = MsgBox("Should this text include a cents sign " & Chr(162) & " (click Yes) or a capital O with a slash " & Chr(216) & " (click No)?", 4) If nRetVal = 6 Then GetAscChars = sReplaceText Else GetAscChars = Chr(162) Case 163 GetAscChars = Chr(185) Case 164 'should be Chr(252), but CS.GetFieldLineUnicode auto-converts Unicode capital Thorn (DE) to the MARC-8 value (A4) nRetval = MsgBox("Should this text include a fill character " & Chr(164) & " (click Yes) or a capital thorn " & Chr(222) & " (click No)?", 4) If nRetVal = 6 Then GetAscChars = Chr(252) Else GetAscChars = Chr(164) Case 165 'should be "[yen]", but CS.GetFieldLineUnicode auto-converts Unicode AE-ligature (C6) to the MARC-8 value (A5) If sRecType = "A" Then sReplaceText = "[yen]" Else sReplaceText = "¥" nRetval = MsgBox("Should this text include a Yen sign " & Chr(165) & " (click Yes) or a capital AE-ligature " & Chr(198) & " (click No)?", 4) If nRetVal = 6 Then GetAscChars = sReplaceText Else GetAscChars = Chr(165) Case 166 GetAscChars = "|" Case 167 If sRecType = "A" Then sReplaceText = "[section]" Else sReplaceText = "§" GetAscChars = sReplaceText Case 168 GetAscChars = Chr(232) Case 169 GetAscChars = Chr(202) 'or "c"; This is for OCLC-MARC; MARC21 is Chr(195) Case 170 'should be "a.", but CS.GetFieldLineUnicode auto-converts Unicode phonograph copyright (AE) to the MARC-8 value (AA) nRetval = MsgBox("Should this text include a feminine ordinal " & Chr(170) & " (click Yes) or a phonograph copyright " & Chr(174) & " (click No)?", 4) If nRetVal = 6 Then GetAscChars = "a." Else GetAscChars = Chr(170) Case 171 'should be Chr(232) or Chr(34), but CS.GetFieldLineUnicode auto-converts Unicode plus/minus (B1) to the MARC-8 value (AB) nRetval = MsgBox("Should this text include a spacing umlaut/diaresis " & Chr(171) & " (click Yes) or a plus/minus sign " & Chr(177) & " (click No)?", 4) If nRetVal = 6 Then GetAscChars = Chr(34) Else GetAscChars = Chr(171) Case 172 If sRecType = "A" Then sReplaceText = "[not]" Else sReplaceText = "¬" GetAscChars = sReplaceText Case 173 GetAscChars = "-" 'probably should be ""; this character is supposed to only be used to mark where a word should break for linewraps Case 174 GetAscChars = Chr(170) Case 175 GetAscChars = Chr(229) Case 176 GetAscChars = Chr(158) 'This is for OCLC-MARC; MARC21 is Chr(192) Case 177 GetAscChars = Chr(171) Case 178 'should be Chr(130), but CS.GetFieldLineUnicode auto-converts Unicode lowercase o with slash (F8) to the MARC-8 value (B2) nRetval = MsgBox("Should this text include a superscript 2 " & Chr(178) & " (click Yes) or a lowercase o with a slash " & Chr(248) & " (click No)?", 4) If nRetVal = 6 Then GetAscChars = Chr(130) Else GetAscChars = Chr(178) Case 179 GetAscChars = Chr(131) Case 180 'should be "'", but CS.GetFieldLineUnicode auto-converts Unicode lowercase thorn (FE) to the MARC-8 value (B4) nRetval = MsgBox("Should this text include an acute accent " & Chr(180) & " (click Yes) or a lowercase thorn " & Chr(254) & " (click No)?", 4) If nRetVal = 6 Then GetAscChars = "'" Else GetAscChars = Chr(180) Case 181 'should be "[micro]", but CS.GetFieldLineUnicode auto-converts Unicode ae-ligature (E6) to the MARC-8 value (B5) If sRecType = "A" Then sReplaceText = "[micro]" Else sReplaceText = "µ" nRetval = MsgBox("Should this text include a micro sign/lowercase mu " & Chr(181) & " (click Yes) or a lowercase ae-ligature " & Chr(230) & " (click No)?", 4) If nRetVal = 6 Then GetAscChars = sReplaceText Else GetAscChars = Chr(181) Case 182 If sRecType = "A" Then sReplaceText = "[pilcrow]" Else sReplaceText = "¶" GetAscChars = sReplaceText Case 183 GetAscChars = Chr(168) Case 184 GetAscChars = Chr(240) Case 185 'should be Chr(129), but CS.GetField[Line]Unicode auto-converts Unicode British pound sign (A3) to the MARC-8 value (B9) nRetval = MsgBox("Should this text include a superscript 1 " & Chr(185) & " (click Yes) or a British pound sign " & Chr(163) & " (click No)?", 4) If nRetVal = 6 Then GetAscChars = Chr(129) Else GetAscChars = Chr(185) Case 186 'should be "o.", but CS.GetFieldLineUnicode auto-converts Unicode lowercase eth (F0) to the MARC-8 value (BA) nRetval = MsgBox("Should this text include a masculine ordinal " & Chr(186) & " (click Yes) or a lowercase eth " & Chr(240) & " (click No)?", 4) If nRetVal = 6 Then GetAscChars = "o." Else GetAscChars = Chr(186) Case 187 GetAscChars = Chr(34) Case 188 GetAscChars = "1/4" Case 189 GetAscChars = "1/2" Case 190 GetAscChars = "3/4" Case 191 GetAscChars = Chr(200) 'This is OCLC-MARC; MARC21 is Chr(197) Case 192 To 195 GetAscChars = "A" & Chr(225 + (nLocalAsc - 192)) Case 196 GetAscChars = "A" & Chr(232) Case 197 GetAscChars = "A" & Chr(234) Case 200 'should be "E" & Chr(225), but CS.GetFieldLineUnicode auto-converts Unicode inverted question mark (BF) to the MARC-8 value (C8) nRetval = MsgBox("Should this text include a capital E-grave " & Chr(200) & " (click Yes) or an inverted question mark " & Chr(191) & " (click No)?", 4) If nRetVal = 6 Then GetAscChars = "E" & Chr(225) Else GetAscChars = Chr(200) Case 201 'should be "E" & Chr(226), but CS.GetFieldLineUnicode auto-converts Unicode inverted exclamation point (A1) to the MARC-8 value (C9) nRetval = MsgBox("Should this text include a capital E-acute " & Chr(201) & " (click Yes) or an inverted exclamation point " & Chr(161) & " (click No)?", 4) If nRetVal = 6 Then GetAscChars = "E" & Chr(226) Else GetAscChars = Chr(201) Case 202 'should be "E" & Chr(227), but CS.GetFieldLineUnicode auto-converts Unicode Copyright symbol (A9) to the MARC-8 value (CA) nRetval = MsgBox("Should this text include a capital E-circumflex " & Chr(202) & " (click Yes) or a Copyright symbol " & Chr(169) & " (click No)?", 4) If nRetVal = 6 Then GetAscChars = "E" & Chr(227) Else GetAscChars = Chr(202) Case 203 GetAscChars = "E" & Chr(232) Case 204 to 206 GetAscChars = "I" & Chr(225 + (nLocalAsc - 204)) Case 207 GetAscChars = "I" & Chr(232) Case 208 GetAscChars = Chr(163) Case 209 GetAscChars = "N" & Chr(228) Case 210 to 213 GetAscChars = "O" & Chr(225 + (nLocalAsc - 210)) Case 214 GetAscChars = "O" & Chr(232) Case 215 GetAscChars = "x" Case 216 GetAscChars = Chr(162) Case 217 to 219 GetAscChars = "U" & Chr(225 + (nLocalAsc - 217)) Case 220 GetAscChars = "U" & Chr(232) Case 221 GetAscChars = "Y" & Chr(226) Case 222 GetAscChars = Chr(164) Case 223 'should be Chr(159), but CS.GetFieldLineUnicode doesn't convert delimiters to HTML entities if there are no Unicode characters with values higher than 255 nRetval = MsgBox("Should this text include an ess-tzet " & Chr(223) & " (click Yes) or a delimiter symbol (click No)?", 4) If nRetVal = 6 Then GetAscChars = Chr(159) Else GetAscChars = Chr(223) 'This is OCLC-MARC; MARC21 is Chr(199) Case 224 to 227 GetAscChars = "a" & Chr(225 + (nLocalAsc - 224)) Case 228 GetAscChars = "a" & Chr(232) Case 229 GetAscChars = "a" & Chr(234) Case 230 GetAscChars = Chr(181) Case 231 GetAscChars = "c" & Chr(240) Case 232 to 234 GetAscChars = "e" & Chr(225 + (nLocalAsc - 232)) Case 235 GetAscChars = "e" & Chr(232) Case 236 to 238 GetAscChars = "i" & Chr(225 + (nLocalAsc - 236)) Case 239 GetAscChars = "i" & Chr(232) Case 240 GetAscChars = Chr(186) Case 241 GetAscChars = "n" & Chr(228) Case 242 to 245 GetAscChars = "o" & Chr(225 + (nLocalAsc - 242)) Case 246 GetAscChars = "o" & Chr(232) Case 247 If sRecType = "A" Then sReplaceText = "[divided by]" Else sReplaceText = "÷" GetAscChars = sReplaceText Case 248 GetAscChars = Chr(178) Case 249 to 251 GetAscChars = "u" & Chr(225 + (nLocalAsc - 249)) Case 252 GetAscChars = "u" & Chr(232) Case 253 GetAscChars = "y" & Chr(226) Case 254 GetAscChars = Chr(180) Case 255 GetAscChars = "y" & Chr(232) Case Else GetAscChars = Left(sChar, 1) End Select End Function Sub InitializeUniArr(sRecType) UniArr(&H0100) = "A" & Chr(229) UniArr(&H0101) = "a" & Chr(229) UniArr(&H0102) = "A" & Chr(230) UniArr(&H0103) = "a" & Chr(230) UniArr(&H0104) = "A" & Chr(241) UniArr(&H0105) = "a" & Chr(241) UniArr(&H0106) = "C" & Chr(226) UniArr(&H0107) = "c" & Chr(226) UniArr(&H0108) = "C" & Chr(227) UniArr(&H0109) = "c" & Chr(227) UniArr(&H010A) = "C" & Chr(231) UniArr(&H010B) = "c" & Chr(231) UniArr(&H010C) = "C" & Chr(233) UniArr(&H010D) = "c" & Chr(233) UniArr(&H010E) = "D" & Chr(233) UniArr(&H010F) = "d" & Chr(233) UniArr(&H0110) = Chr(163) UniArr(&H0111) = Chr(179) UniArr(&H0112) = "E" & Chr(229) UniArr(&H0113) = "e" & Chr(229) UniArr(&H0114) = "E" & Chr(230) UniArr(&H0115) = "e" & Chr(230) UniArr(&H0116) = "E" & Chr(231) UniArr(&H0117) = "e" & Chr(231) UniArr(&H0118) = "E" & Chr(241) UniArr(&H0119) = "e" & Chr(241) UniArr(&H011A) = "E" & Chr(233) UniArr(&H011B) = "e" & Chr(233) UniArr(&H011C) = "G" & Chr(227) UniArr(&H011D) = "g" & Chr(227) UniArr(&H011E) = "G" & Chr(230) UniArr(&H011F) = "g" & Chr(230) UniArr(&H0120) = "G" & Chr(231) UniArr(&H0121) = "g" & Chr(231) UniArr(&H0122) = "G" & Chr(240) UniArr(&H0123) = "g" & Chr(240) UniArr(&H0124) = "H" & Chr(227) UniArr(&H0125) = "h" & Chr(227) If sRecType = "A" Then UniArr(&H0126) = "H" & Chr(252) 'H with stroke If sRecType = "A" Then UniArr(&H0127) = "h" & Chr(252) 'h with stroke UniArr(&H0128) = "I" & Chr(228) UniArr(&H0129) = "i" & Chr(228) UniArr(&H012A) = "I" & Chr(229) UniArr(&H012B) = "i" & Chr(229) UniArr(&H012C) = "I" & Chr(230) UniArr(&H012D) = "i" & Chr(230) UniArr(&H012E) = "I" & Chr(241) UniArr(&H012F) = "i" & Chr(241) UniArr(&H0130) = "I" & Chr(231) UniArr(&H0131) = Chr(184) UniArr(&H0132) = "I" & "J" UniArr(&H0133) = "i" & "j" UniArr(&H0134) = "J" & Chr(227) UniArr(&H0135) = "j" & Chr(227) UniArr(&H0136) = "K" & Chr(240) UniArr(&H0137) = "k" & Chr(240) UniArr(&H0138) = "k" UniArr(&H0139) = "L" & Chr(226) UniArr(&H013A) = "l" & Chr(226) UniArr(&H013B) = "L" & Chr(240) UniArr(&H013C) = "l" & Chr(240) UniArr(&H013D) = "L" & Chr(233) UniArr(&H013E) = "l" & Chr(233) UniArr(&H013F) = "L" & Chr(168) UniArr(&H0140) = "l" & Chr(168) UniArr(&H0141) = Chr(161) UniArr(&H0142) = Chr(177) UniArr(&H0143) = "N" & Chr(226) UniArr(&H0144) = "n" & Chr(226) UniArr(&H0145) = "N" & Chr(240) UniArr(&H0146) = "n" & Chr(240) UniArr(&H0147) = "N" & Chr(233) UniArr(&H0148) = "n" & Chr(233) UniArr(&H0149) = "'" & "n" UniArr(&H014C) = "O" & Chr(229) UniArr(&H014D) = "o" & Chr(229) UniArr(&H014E) = "O" & Chr(230) UniArr(&H014F) = "o" & Chr(230) UniArr(&H0150) = "O" & Chr(238) UniArr(&H0151) = "o" & Chr(238) UniArr(&H0152) = Chr(166) UniArr(&H0153) = Chr(182) UniArr(&H0154) = "R" & Chr(226) UniArr(&H0155) = "r" & Chr(226) UniArr(&H0156) = "R" & Chr(240) UniArr(&H0157) = "r" & Chr(240) UniArr(&H0158) = "R" & Chr(233) UniArr(&H0159) = "r" & Chr(233) UniArr(&H015A) = "S" & Chr(226) UniArr(&H015B) = "s" & Chr(226) UniArr(&H015C) = "S" & Chr(227) UniArr(&H015D) = "s" & Chr(227) UniArr(&H015E) = "S" & Chr(240) UniArr(&H015F) = "s" & Chr(240) UniArr(&H0160) = "S" & Chr(233) UniArr(&H0161) = "s" & Chr(233) UniArr(&H0162) = "T" & Chr(240) UniArr(&H0163) = "t" & Chr(240) UniArr(&H0164) = "T" & Chr(233) UniArr(&H0165) = "t" & Chr(233) If sRecType = "A" Then UniArr(&H0166) = "T" & Chr(252) 'T with stroke If sRecType = "A" Then UniArr(&H0167) = "t" & Chr(252) 't with stroke UniArr(&H0168) = "U" & Chr(228) UniArr(&H0169) = "u" & Chr(228) UniArr(&H016A) = "U" & Chr(229) UniArr(&H016B) = "u" & Chr(229) UniArr(&H016C) = "U" & Chr(230) UniArr(&H016D) = "u" & Chr(230) UniArr(&H016E) = "U" & Chr(234) UniArr(&H016F) = "u" & Chr(234) UniArr(&H0170) = "U" & Chr(238) UniArr(&H0171) = "u" & Chr(238) UniArr(&H0172) = "U" & Chr(241) UniArr(&H0173) = "u" & Chr(241) UniArr(&H0174) = "W" & Chr(227) UniArr(&H0175) = "w" & Chr(227) UniArr(&H0176) = "Y" & Chr(227) UniArr(&H0177) = "y" & Chr(227) UniArr(&H0178) = "Y" & Chr(232) UniArr(&H0179) = "Z" & Chr(226) UniArr(&H017A) = "z" & Chr(226) UniArr(&H017B) = "Z" & Chr(231) UniArr(&H017C) = "z" & Chr(231) UniArr(&H017D) = "Z" & Chr(233) UniArr(&H017E) = "z" & Chr(233) UniArr(&H017F) = "s" If sRecType = "A" Then UniArr(&H0180) = "b" & Chr(252) 'b with stroke UniArr(&H0181) = "B" & Chr(252) 'B with hook UniArr(&H0182) = "B" & Chr(252) 'B with top bar UniArr(&H0183) = "b" & Chr(252) 'b with top bar UniArr(&H0187) = "C" & Chr(252) 'C with hook UniArr(&H0188) = "c" & Chr(252) 'c with hook End If UniArr(&H0189) = Chr(163) If sRecType = "A" Then UniArr(&H018A) = "D" & Chr(252) 'D with hook UniArr(&H018B) = "D" & Chr(252) 'D with top bar UniArr(&H018C) = "d" & Chr(252) 'd with top bar UniArr(&H0191) = "F" & Chr(252) 'F with hook UniArr(&H0192) = "f" & Chr(252) 'f with hook UniArr(&H0193) = "G" & Chr(252) 'G with hook UniArr(&H0197) = "I" & Chr(252) 'I with stroke UniArr(&H0198) = "K" & Chr(252) 'K with hook UniArr(&H0199) = "k" & Chr(252) 'K with hook UniArr(&H019A) = "l" & Chr(252) 'l with bar End If UniArr(&H019D) = "N" & Chr(247) UniArr(&H01A0) = Chr(172) UniArr(&H01A1) = Chr(188) If sRecType = "A" Then UniArr(&H01A4) = "P" & Chr(252) 'P with hook If sRecType = "A" Then UniArr(&H01A5) = "p" & Chr(252) 'p with hook UniArr(&H01AB) = "t" & Chr(247) If sRecType = "A" Then UniArr(&H01AC) = "T" & Chr(252) 'T with hook If sRecType = "A" Then UniArr(&H01AD) = "t" & Chr(252) 't with hook UniArr(&H01AE) = "T" & Chr(241) UniArr(&H01AF) = Chr(173) UniArr(&H01B0) = Chr(189) If sRecType = "A" Then UniArr(&H01B2) = "V" & Chr(252) 'V with hook UniArr(&H01B3) = "Y" & Chr(252) 'Y with hook UniArr(&H01B4) = "y" & Chr(252) 'y with hook UniArr(&H01B5) = "Z" & Chr(252) 'Z with stroke UniArr(&H01B6) = "z" & Chr(252) 'z wtih stroke UniArr(&H01BB) = "2" & Chr(252) '2 with stroke End If UniArr(&H01C0) = "|" UniArr(&H01C2) = Chr(223) UniArr(&H01C3) = "!" UniArr(&H01C4) = "DZ" & Chr(233) UniArr(&H01C5) = "Dz" & Chr(233) UniArr(&H01C6) = "dz" & Chr(233) UniArr(&H01C7) = "L" & "J" UniArr(&H01C8) = "L" & "j" UniArr(&H01C9) = "l" & "j" UniArr(&H01CA) = "N" & "J" UniArr(&H01CB) = "N" & "j" UniArr(&H01CC) = "n" & "j" UniArr(&H01CD) = "A" & Chr(233) UniArr(&H01CE) = "a" & Chr(233) UniArr(&H01CF) = "I" & Chr(233) UniArr(&H01D0) = "i" & Chr(233) UniArr(&H01D1) = "O" & Chr(233) UniArr(&H01D2) = "o" & Chr(233) UniArr(&H01D3) = "U" & Chr(233) UniArr(&H01D4) = "u" & Chr(233) UniArr(&H01D5) = "U" & Chr(232) & Chr(229) UniArr(&H01D6) = "u" & Chr(232) & Chr(229) UniArr(&H01D7) = "U" & Chr(232) & Chr(226) UniArr(&H01D8) = "u" & Chr(232) & Chr(226) UniArr(&H01D9) = "U" & Chr(232) & Chr(233) UniArr(&H01DA) = "u" & Chr(232) & Chr(233) UniArr(&H01DB) = "U" & Chr(232) & Chr(225) UniArr(&H01DC) = "u" & Chr(232) & Chr(225) UniArr(&H01DE) = "A" & Chr(232) & Chr(229) UniArr(&H01DF) = "a" & Chr(232) & Chr(229) UniArr(&H01E0) = "A" & Chr(231) & Chr(229) UniArr(&H01E1) = "a" & Chr(231) & Chr(229) UniArr(&H01E2) = Chr(165) & Chr(229) UniArr(&H01E3) = Chr(181) & Chr(229) If sRecType = "A" Then UniArr(&H01E4) = "G" & Chr(252) 'G with stroke If sRecType = "A" Then UniArr(&H01E5) = "g" & Chr(252) 'g with stroke UniArr(&H01E6) = "G" & Chr(233) UniArr(&H01E7) = "g" & Chr(233) UniArr(&H01E8) = "K" & Chr(233) UniArr(&H01E9) = "k" & Chr(233) UniArr(&H01EA) = "O" & Chr(241) UniArr(&H01EB) = "o" & Chr(241) UniArr(&H01EC) = "O" & Chr(241) & Chr(229) UniArr(&H01ED) = "o" & Chr(241) & Chr(229) UniArr(&H01F0) = "j" & Chr(233) UniArr(&H01F1) = "D" & "Z" UniArr(&H01F2) = "D" & "z" UniArr(&H01F3) = "d" & "z" UniArr(&H01F4) = "G" & Chr(226) UniArr(&H01F5) = "g" & Chr(226) UniArr(&H01F8) = "N" & Chr(225) UniArr(&H01F9) = "n" & Chr(225) UniArr(&H01FA) = "A" & Chr(234) & Chr(226) UniArr(&H01FB) = "a" & Chr(234) & Chr(226) UniArr(&H01FC) = Chr(165) & Chr(226) UniArr(&H01FD) = Chr(181) & Chr(226) UniArr(&H01FE) = Chr(162) & Chr(226) UniArr(&H01FF) = Chr(178) & Chr(226) If sRecType = "A" Then UniArr(&H0200) = "A" & Chr(252) 'Double grave (̏) UniArr(&H0201) = "a" & Chr(252) 'Double grave (̏) UniArr(&H0202) = "A" & Chr(252) 'Inverted breve (̑) UniArr(&H0203) = "a" & Chr(252) 'Inverted breve (̑) UniArr(&H0204) = "E" & Chr(252) 'Double grave (̏) UniArr(&H0205) = "e" & Chr(252) 'Double grave (̏) UniArr(&H0206) = "E" & Chr(252) 'Inverted breve (̑) UniArr(&H0207) = "e" & Chr(252) 'Inverted breve (̑) UniArr(&H0208) = "I" & Chr(252) 'Double grave (̏) UniArr(&H0209) = "i" & Chr(252) 'Double grave (̏) UniArr(&H020A) = "I" & Chr(252) 'Inverted breve (̑) UniArr(&H020B) = "i" & Chr(252) 'Inverted breve (̑) UniArr(&H020C) = "O" & Chr(252) 'Double grave (̏) UniArr(&H020D) = "o" & Chr(252) 'Double grave (̏) UniArr(&H020E) = "O" & Chr(252) 'Inverted breve (̑) UniArr(&H020F) = "o" & Chr(252) 'Inverted breve (̑) UniArr(&H0210) = "R" & Chr(252) 'Double grave (̏) UniArr(&H0211) = "r" & Chr(252) 'Double grave (̏) UniArr(&H0212) = "R" & Chr(252) 'Inverted breve (̑) UniArr(&H0213) = "r" & Chr(252) 'Inverted breve (̑) UniArr(&H0214) = "U" & Chr(252) 'Double grave (̏) UniArr(&H0215) = "u" & Chr(252) 'Double grave (̏) UniArr(&H0216) = "U" & Chr(252) 'Inverted breve (̑) UniArr(&H0217) = "u" & Chr(252) 'Inverted breve (̑) UniArr(&H0218) = "S" & Chr(252) 'Comma below (̦) UniArr(&H0219) = "s" & Chr(252) 'Comma below (̦) UniArr(&H021A) = "T" & Chr(252) 'Comma below (̦) UniArr(&H021B) = "t" & Chr(252) 'Comma below (̦) Else UniArr(&H0200) = "A" & "̏" 'Double grave (̏) UniArr(&H0201) = "a" & "̏" 'Double grave (̏) UniArr(&H0202) = "A" & "̑" 'Inverted breve (̑) UniArr(&H0203) = "a" & "̑" 'Inverted breve (̑) UniArr(&H0204) = "E" & "̏" 'Double grave (̏) UniArr(&H0205) = "e" & "̏" 'Double grave (̏) UniArr(&H0206) = "E" & "̑" 'Inverted breve (̑) UniArr(&H0207) = "e" & "̑" 'Inverted breve (̑) UniArr(&H0208) = "I" & "̏" 'Double grave (̏) UniArr(&H0209) = "i" & "̏" 'Double grave (̏) UniArr(&H020A) = "I" & "̑" 'Inverted breve (̑) UniArr(&H020B) = "i" & "̑" 'Inverted breve (̑) UniArr(&H020C) = "O" & "̏" 'Double grave (̏) UniArr(&H020D) = "o" & "̏" 'Double grave (̏) UniArr(&H020E) = "O" & "̑" 'Inverted breve (̑) UniArr(&H020F) = "o" & "̑" 'Inverted breve (̑) UniArr(&H0210) = "R" & "̏" 'Double grave (̏) UniArr(&H0211) = "r" & "̏" 'Double grave (̏) UniArr(&H0212) = "R" & "̑" 'Inverted breve (̑) UniArr(&H0213) = "r" & "̑" 'Inverted breve (̑) UniArr(&H0214) = "U" & "̏" 'Double grave (̏) UniArr(&H0215) = "u" & "̏" 'Double grave (̏) UniArr(&H0216) = "U" & "̑" 'Inverted breve (̑) UniArr(&H0217) = "u" & "̑" 'Inverted breve (̑) UniArr(&H0218) = "S" & "̦" 'Comma below (̦) UniArr(&H0219) = "s" & "̦" 'Comma below (̦) UniArr(&H021A) = "T" & "̦" 'Comma below (̦) UniArr(&H021B) = "t" & "̦" 'Comma below (̦) End If UniArr(&H021E) = "H" & Chr(233) UniArr(&H021F) = "h" & Chr(233) If sRecType = "A" Then UniArr(&H0224) = "Z" & Chr(252) 'Z with hook If sRecType = "A" Then UniArr(&H0225) = "z" & Chr(252) 'z with hook UniArr(&H0226) = "A" & Chr(231) UniArr(&H0227) = "a" & Chr(231) UniArr(&H0228) = "E" & Chr(240) UniArr(&H0229) = "e" & Chr(240) UniArr(&H022A) = "O" & Chr(232) & Chr(229) UniArr(&H022B) = "o" & Chr(232) & Chr(229) UniArr(&H022C) = "O" & Chr(228) & Chr(229) UniArr(&H022D) = "o" & Chr(228) & Chr(229) UniArr(&H022E) = "O" & Chr(231) UniArr(&H022F) = "o" & Chr(231) UniArr(&H0230) = "O" & Chr(231) & Chr(229) UniArr(&H0231) = "o" & Chr(231) & Chr(229) UniArr(&H0232) = "Y" & Chr(229) UniArr(&H0233) = "y" & Chr(229) If sRecType = "A" Then UniArr(&H023A) = "A" & Chr(252) 'A with stroke UniArr(&H023B) = "C" & Chr(252) 'C with stroke UniArr(&H023C) = "c" & Chr(252) 'c with stroke UniArr(&H023D) = "L" & Chr(252) 'L with bar UniArr(&H023E) = "T" & Chr(252) 'T with diagonal stroke UniArr(&H023F) = "s" & Chr(252) 's with swash tail UniArr(&H0240) = "z" & Chr(252) 'z with swash tail UniArr(&H0243) = "B" & Chr(252) 'B with stroke UniArr(&H0246) = "E" & Chr(252) 'E with stroke UniArr(&H0247) = "e" & Chr(252) 'e with stroke UniArr(&H0248) = "J" & Chr(252) 'J with stroke UniArr(&H0249) = "j" & Chr(252) 'j with stroke UniArr(&H024C) = "R" & Chr(252) 'R with stroke End If UniArr(&H02BC) = Chr(174) UniArr(&H02BB) = Chr(176) UniArr(&H0360) = Chr(250) 'This is just the left half UniArr(&H0361) = Chr(235) 'This is just the left half UniArr(&H1D01) = Chr(181) UniArr(&H1E00) = "A" & Chr(244) UniArr(&H1E01) = "a" & Chr(244) UniArr(&H1E02) = "B" & Chr(231) UniArr(&H1E03) = "b" & Chr(231) UniArr(&H1E04) = "B" & Chr(242) UniArr(&H1E05) = "b" & Chr(242) If sRecType = "A" Then UniArr(&H1E06) = "B" & Chr(252) 'Macron below (̱) If sRecType = "A" Then UniArr(&H1E07) = "b" & Chr(252) 'Macron below (̱) UniArr(&H1E08) = "C" & Chr(240) & Chr(226) UniArr(&H1E09) = "c" & Chr(240) & Chr(226) UniArr(&H1E0A) = "D" & Chr(231) UniArr(&H1E0B) = "d" & Chr(231) UniArr(&H1E0C) = "D" & Chr(242) UniArr(&H1E0D) = "d" & Chr(242) If sRecType = "A" Then UniArr(&H1E0E) = "D" & Chr(252) 'Macron below (̱) If sRecType = "A" Then UniArr(&H1E0F) = "d" & Chr(252) 'Macron below (̱) UniArr(&H1E10) = "D" & Chr(240) UniArr(&H1E11) = "d" & Chr(240) If sRecType = "A" Then UniArr(&H1E12) = "D" & Chr(252) 'Circumflex below (̭) If sRecType = "A" Then UniArr(&H1E13) = "d" & Chr(252) 'Circumflex below (̭) UniArr(&H1E14) = "E" & Chr(229) & Chr(225) UniArr(&H1E15) = "e" & Chr(229) & Chr(225) UniArr(&H1E16) = "E" & Chr(229) & Chr(226) UniArr(&H1E17) = "e" & Chr(229) & Chr(226) If sRecType = "A" Then UniArr(&H1E18) = "E" & Chr(252) 'Circumflex below (̭) If sRecType = "A" Then UniArr(&H1E19) = "e" & Chr(252) 'Circumflex below (̭) If sRecType = "A" Then UniArr(&H1E1A) = "E" & Chr(252) 'Tilde below (̰) If sRecType = "A" Then UniArr(&H1E1B) = "e" & Chr(252) 'Tilde below (̰) UniArr(&H1E1C) = "E" & Chr(240) & Chr(230) UniArr(&H1E1D) = "e" & Chr(240) & Chr(230) UniArr(&H1E1E) = "F" & Chr(231) UniArr(&H1E1F) = "f" & Chr(231) UniArr(&H1E20) = "G" & Chr(229) UniArr(&H1E21) = "g" & Chr(229) UniArr(&H1E22) = "H" & Chr(231) UniArr(&H1E23) = "h" & Chr(231) UniArr(&H1E24) = "H" & Chr(242) UniArr(&H1E25) = "h" & Chr(242) UniArr(&H1E26) = "H" & Chr(232) UniArr(&H1E27) = "h" & Chr(232) UniArr(&H1E28) = "H" & Chr(240) UniArr(&H1E29) = "h" & Chr(240) If sRecType = "A" Then UniArr(&H1E2A) = "H" & Chr(252) 'Breve below (̮) If sRecType = "A" Then UniArr(&H1E2B) = "h" & Chr(252) 'Breve below (̮) If sRecType = "A" Then UniArr(&H1E2C) = "I" & Chr(252) 'Tilde below (̰) If sRecType = "A" Then UniArr(&H1E2D) = "i" & Chr(252) 'Tilde below (̰) UniArr(&H1E2E) = "I" & Chr(232) & Chr(226) UniArr(&H1E2F) = "i" & Chr(232) & Chr(226) UniArr(&H1E30) = "K" & Chr(226) UniArr(&H1E31) = "k" & Chr(226) UniArr(&H1E32) = "K" & Chr(242) UniArr(&H1E33) = "k" & Chr(242) If sRecType = "A" Then UniArr(&H1E34) = "K" & Chr(252) 'Macron below (̱) If sRecType = "A" Then UniArr(&H1E35) = "k" & Chr(252) 'Macron below (̱) UniArr(&H1E36) = "L" & Chr(242) UniArr(&H1E37) = "l" & Chr(242) UniArr(&H1E38) = "L" & Chr(242) & Chr(229) UniArr(&H1E39) = "L" & Chr(242) & Chr(229) If sRecType = "A" Then UniArr(&H1E3A) = "L" & Chr(252) 'Macron below (̱) If sRecType = "A" Then UniArr(&H1E3B) = "l" & Chr(252) 'Macron below (̱) If sRecType = "A" Then UniArr(&H1E3C) = "L" & Chr(252) 'Circumflex below (̭) If sRecType = "A" Then UniArr(&H1E3D) = "l" & Chr(252) 'Circumflex below (̭) UniArr(&H1E3E) = "M" & Chr(226) UniArr(&H1E3F) = "m" & Chr(226) UniArr(&H1E40) = "M" & Chr(231) UniArr(&H1E41) = "m" & Chr(231) UniArr(&H1E42) = "M" & Chr(242) UniArr(&H1E43) = "m" & Chr(242) UniArr(&H1E44) = "N" & Chr(231) UniArr(&H1E45) = "n" & Chr(231) UniArr(&H1E46) = "N" & Chr(242) UniArr(&H1E47) = "n" & Chr(242) If sRecType = "A" Then UniArr(&H1E48) = "N" & Chr(252) 'Macron below (̱) If sRecType = "A" Then UniArr(&H1E49) = "n" & Chr(252) 'Macron below (̱) If sRecType = "A" Then UniArr(&H1E4A) = "N" & Chr(252) 'Circumflex below (̭) If sRecType = "A" Then UniArr(&H1E4B) = "n" & Chr(252) 'Circumflex below (̭) UniArr(&H1E4C) = "O" & Chr(228) & Chr(226) UniArr(&H1E4D) = "o" & Chr(228) & Chr(226) UniArr(&H1E4E) = "O" & Chr(228) & Chr(232) UniArr(&H1E4F) = "o" & Chr(228) & Chr(232) UniArr(&H1E50) = "O" & Chr(229) & Chr(225) UniArr(&H1E51) = "o" & Chr(229) & Chr(225) UniArr(&H1E52) = "O" & Chr(229) & Chr(226) UniArr(&H1E53) = "o" & Chr(229) & Chr(226) UniArr(&H1E54) = "P" & Chr(226) UniArr(&H1E55) = "p" & Chr(226) UniArr(&H1E56) = "P" & Chr(231) UniArr(&H1E57) = "p" & Chr(231) UniArr(&H1E58) = "R" & Chr(231) UniArr(&H1E59) = "r" & Chr(231) UniArr(&H1E5A) = "R" & Chr(242) UniArr(&H1E5B) = "r" & Chr(242) UniArr(&H1E5C) = "R" & Chr(242) & Chr(229) UniArr(&H1E5D) = "r" & Chr(242) & Chr(229) If sRecType = "A" Then UniArr(&H1E5E) = "R" & Chr(252) 'Macron below (̱) If sRecType = "A" Then UniArr(&H1E5F) = "r" & Chr(252) 'Macron below (̱) UniArr(&H1E60) = "S" & Chr(231) UniArr(&H1E61) = "s" & Chr(231) UniArr(&H1E62) = "S" & Chr(242) UniArr(&H1E63) = "s" & Chr(242) UniArr(&H1E64) = "S" & Chr(226) & Chr(231) UniArr(&H1E65) = "s" & Chr(226) & Chr(231) UniArr(&H1E66) = "S" & Chr(233) & Chr(231) UniArr(&H1E67) = "s" & Chr(233) & Chr(231) UniArr(&H1E68) = "S" & Chr(242) & Chr(231) UniArr(&H1E69) = "s" & Chr(242) & Chr(231) UniArr(&H1E6A) = "T" & Chr(231) UniArr(&H1E6B) = "t" & Chr(231) UniArr(&H1E6C) = "T" & Chr(242) UniArr(&H1E6D) = "t" & Chr(242) If sRecType = "A" Then UniArr(&H1E6E) = "T" & Chr(252) 'Macron below (̱) If sRecType = "A" Then UniArr(&H1E6F) = "t" & Chr(252) 'Macron below (̱) If sRecType = "A" Then UniArr(&H1E70) = "T" & Chr(252) 'Circumflex below (̭) If sRecType = "A" Then UniArr(&H1E71) = "t" & Chr(252) 'Circumflex below (̭) UniArr(&H1E72) = "U" & Chr(243) UniArr(&H1E73) = "u" & Chr(243) If sRecType = "A" Then UniArr(&H1E74) = "U" & Chr(252) 'Tilde below (̰) If sRecType = "A" Then UniArr(&H1E75) = "u" & Chr(252) 'Tilde below (̰) If sRecType = "A" Then UniArr(&H1E76) = "U" & Chr(252) 'Circumflex below (̭) If sRecType = "A" Then UniArr(&H1E77) = "u" & Chr(252) 'Circumflex below (̭) UniArr(&H1E78) = "U" & Chr(228) & Chr(226) UniArr(&H1E79) = "u" & Chr(228) & Chr(226) UniArr(&H1E7A) = "U" & Chr(229) & Chr(232) UniArr(&H1E7B) = "u" & Chr(229) & Chr(232) UniArr(&H1E7C) = "V" & Chr(228) UniArr(&H1E7D) = "v" & Chr(228) UniArr(&H1E7E) = "V" & Chr(242) UniArr(&H1E7F) = "v" & Chr(242) UniArr(&H1E80) = "W" & Chr(225) UniArr(&H1E81) = "w" & Chr(225) UniArr(&H1E82) = "W" & Chr(226) UniArr(&H1E83) = "w" & Chr(226) UniArr(&H1E84) = "W" & Chr(232) UniArr(&H1E85) = "w" & Chr(232) UniArr(&H1E86) = "W" & Chr(231) UniArr(&H1E87) = "w" & Chr(231) UniArr(&H1E88) = "W" & Chr(242) UniArr(&H1E89) = "w" & Chr(242) UniArr(&H1E8A) = "X" & Chr(231) UniArr(&H1E8B) = "x" & Chr(231) UniArr(&H1E8C) = "X" & Chr(232) UniArr(&H1E8D) = "x" & Chr(232) UniArr(&H1E8E) = "Y" & Chr(231) UniArr(&H1E8F) = "y" & Chr(231) UniArr(&H1E90) = "Z" & Chr(227) UniArr(&H1E91) = "z" & Chr(227) UniArr(&H1E92) = "Z" & Chr(242) UniArr(&H1E93) = "z" & Chr(242) If sRecType = "A" Then UniArr(&H1E94) = "Z" & Chr(252) 'Macron below (̱) If sRecType = "A" Then UniArr(&H1E95) = "z" & Chr(252) 'Macron below (̱) If sRecType = "A" Then UniArr(&H1E96) = "h" & Chr(252) 'Macron below (̱) UniArr(&H1E97) = "t" & Chr(232) UniArr(&H1E98) = "w" & Chr(234) UniArr(&H1E99) = "y" & Chr(234) If sRecType = "A" Then UniArr(&H1E9A) = "a" & Chr(252) 'Right half ring (ʾ) UniArr(&H1EA0) = "A" & Chr(242) UniArr(&H1EA1) = "a" & Chr(242) If sRecType = "A" Then UniArr(&H1EA2) = "A" & Chr(252) 'Hook above (̉) If sRecType = "A" Then UniArr(&H1EA3) = "a" & Chr(252) 'Hook above (̉) UniArr(&H1EA4) = "A" & Chr(227) & Chr(226) UniArr(&H1EA5) = "a" & Chr(227) & Chr(226) UniArr(&H1EA6) = "A" & Chr(227) & Chr(225) UniArr(&H1EA7) = "a" & Chr(227) & Chr(225) If sRecType = "A" Then UniArr(&H1EA8) = "A" & Chr(227) & Chr(252) 'Hook above (̉) If sRecType = "A" Then UniArr(&H1EA9) = "a" & Chr(227) & Chr(252) 'Hook above (̉) UniArr(&H1EAA) = "A" & Chr(227) & Chr(228) UniArr(&H1EAB) = "a" & Chr(227) & Chr(228) UniArr(&H1EAC) = "A" & Chr(242) & Chr(227) UniArr(&H1EAD) = "a" & Chr(242) & Chr(227) UniArr(&H1EAE) = "A" & Chr(230) & Chr(226) UniArr(&H1EAF) = "a" & Chr(230) & Chr(226) UniArr(&H1EB0) = "A" & Chr(230) & Chr(225) UniArr(&H1EB1) = "a" & Chr(230) & Chr(225) If sRecType = "A" Then UniArr(&H1EB2) = "A" & Chr(230) & Chr(252) 'Hook above (̉) If sRecType = "A" Then UniArr(&H1EB3) = "a" & Chr(230) & Chr(252) 'Hook above (̉) UniArr(&H1EB4) = "A" & Chr(230) & Chr(228) UniArr(&H1EB5) = "a" & Chr(230) & Chr(228) UniArr(&H1EB6) = "A" & Chr(242) & Chr(230) UniArr(&H1EB7) = "a" & Chr(242) & Chr(230) UniArr(&H1EB8) = "E" & Chr(242) UniArr(&H1EB9) = "e" & Chr(242) If sRecType = "A" Then UniArr(&H1EBA) = "E" & Chr(252) 'Hook above (̉) If sRecType = "A" Then UniArr(&H1EBB) = "e" & Chr(252) 'Hook above (̉) UniArr(&H1EBC) = "E" & Chr(228) UniArr(&H1EBD) = "e" & Chr(228) UniArr(&H1EBE) = "E" & Chr(227) & Chr(226) UniArr(&H1EBF) = "e" & Chr(227) & Chr(226) UniArr(&H1EC0) = "E" & Chr(227) & Chr(225) UniArr(&H1EC1) = "e" & Chr(227) & Chr(225) If sRecType = "A" Then UniArr(&H1EC2) = "E" & Chr(227) & Chr(252) 'Hook above (̉) If sRecType = "A" Then UniArr(&H1EC3) = "e" & Chr(227) & Chr(252) 'Hook above (̉) UniArr(&H1EC4) = "E" & Chr(227) & Chr(228) UniArr(&H1EC5) = "e" & Chr(227) & Chr(228) UniArr(&H1EC6) = "E" & Chr(242) & Chr(227) UniArr(&H1EC7) = "e" & Chr(242) & Chr(227) If sRecType = "A" Then UniArr(&H1EC8) = "I" & Chr(252) 'Hook above (̉) If sRecType = "A" Then UniArr(&H1EC9) = "i" & Chr(252) 'Hook above (̉) UniArr(&H1ECA) = "I" & Chr(242) UniArr(&H1ECB) = "i" & Chr(242) UniArr(&H1ECC) = "O" & Chr(242) UniArr(&H1ECD) = "o" & Chr(242) If sRecType = "A" Then UniArr(&H1ECE) = "O" & Chr(252) 'Hook above (̉) If sRecType = "A" Then UniArr(&H1ECF) = "o" & Chr(252) 'Hook above (̉) UniArr(&H1ED0) = "O" & Chr(227) & Chr(226) UniArr(&H1ED1) = "o" & Chr(227) & Chr(226) UniArr(&H1ED2) = "O" & Chr(227) & Chr(225) UniArr(&H1ED3) = "o" & Chr(227) & Chr(225) If sRecType = "A" Then UniArr(&H1ED4) = "O" & Chr(227) & Chr(252) 'Hook above (̉) If sRecType = "A" Then UniArr(&H1ED5) = "o" & Chr(227) & Chr(252) 'Hook above (̉) UniArr(&H1ED6) = "O" & Chr(227) & Chr(228) UniArr(&H1ED7) = "o" & Chr(227) & Chr(228) UniArr(&H1ED8) = "O" & Chr(242) & Chr(227) UniArr(&H1ED9) = "o" & Chr(242) & Chr(227) UniArr(&H1EDA) = Chr(172) & Chr(226) UniArr(&H1EDB) = Chr(188) & Chr(226) UniArr(&H1EDC) = Chr(172) & Chr(225) UniArr(&H1EDD) = Chr(188) & Chr(225) If sRecType = "A" Then UniArr(&H1EDE) = Chr(172) & Chr(252) 'Hook above (̉) If sRecType = "A" Then UniArr(&H1EDF) = Chr(188) & Chr(252) 'Hook above (̉) UniArr(&H1EE0) = Chr(172) & Chr(228) UniArr(&H1EE1) = Chr(188) & Chr(228) UniArr(&H1EE2) = Chr(172) & Chr(242) UniArr(&H1EE3) = Chr(188) & Chr(242) UniArr(&H1EE4) = "U" & Chr(242) UniArr(&H1EE5) = "u" & Chr(242) If sRecType = "A" Then UniArr(&H1EE6) = "U" & Chr(252) 'Hook above (̉) If sRecType = "A" Then UniArr(&H1EE7) = "u" & Chr(252) 'Hook above (̉) UniArr(&H1EE8) = Chr(173) & Chr(226) UniArr(&H1EE9) = Chr(189) & Chr(226) UniArr(&H1EEA) = Chr(173) & Chr(225) UniArr(&H1EEB) = Chr(189) & Chr(225) If sRecType = "A" Then UniArr(&H1EEC) = Chr(173) & Chr(252) 'Hook above (̉) If sRecType = "A" Then UniArr(&H1EED) = Chr(189) & Chr(252) 'Hook above (̉) UniArr(&H1EEE) = Chr(173) & Chr(228) UniArr(&H1EEF) = Chr(189) & Chr(228) UniArr(&H1EF0) = Chr(173) & Chr(242) UniArr(&H1EF1) = Chr(189) & Chr(242) UniArr(&H1EF2) = "Y" & Chr(225) UniArr(&H1EF3) = "y" & Chr(225) UniArr(&H1EF4) = "Y" & Chr(242) UniArr(&H1EF5) = "y" & Chr(242) If sRecType = "A" Then UniArr(&H1EF6) = "Y" & Chr(252) 'Hook above (̉) If sRecType = "A" Then UniArr(&H1EF7) = "y" & Chr(252) 'Hook above (̉) UniArr(&H1EF8) = "Y" & Chr(228) UniArr(&H1EF9) = "y" & Chr(228) End Sub Sub InitializeUniArr2(sRecType) UniArr(&H2000) = " " UniArr(&H2001) = " " UniArr(&H2002) = " " UniArr(&H2003) = " " UniArr(&H2004) = " " UniArr(&H2005) = " " UniArr(&H2006) = " " UniArr(&H2007) = " " UniArr(&H2008) = " " UniArr(&H2009) = " " UniArr(&H200A) = " " UniArr(&H200B) = " " UniArr(&H200C) = " " UniArr(&H200D) = " " UniArr(&H2010) = "-" UniArr(&H2011) = "-" UniArr(&H2012) = "-" UniArr(&H2013) = "-" UniArr(&H2014) = "--" UniArr(&H2015) = "--" UniArr(&H2016) = "||" UniArr(&H2017) = " " & Chr(245) UniArr(&H2018) = "'" UniArr(&H2019) = "'" UniArr(&H201A) = "," UniArr(&H201B) = "'" UniArr(&H201C) = Chr(34) UniArr(&H201D) = Chr(34) UniArr(&H201E) = Chr(34) UniArr(&H201F) = Chr(34) UniArr(&H2022) = Chr(168) UniArr(&H2024) = "." UniArr(&H2025) = ".." UniArr(&H2026) = "..." UniArr(&H2027) = Chr(168) UniArr(&H2032) = Chr(167) UniArr(&H2033) = Chr(183) UniArr(&H2034) = Chr(167) & Chr(167) & Chr(167) UniArr(&H2039) = "'" UniArr(&H203A) = "'" UniArr(&H203C) = "!!" If sRecType = "A" Then UniArr(&H203D) = "!?" UniArr(&H2047) = "??" UniArr(&H2048) = "?!" UniArr(&H2049) = "!?" UniArr(&H2053) = "~" UniArr(&H2057) = Chr(167) & Chr(167) & Chr(167) & Chr(167) UniArr(&H205F) = " " UniArr(&H2060) = " " UniArr(&H2070) = Chr(128) UniArr(&H2074) = Chr(132) UniArr(&H2075) = Chr(133) UniArr(&H2076) = Chr(134) UniArr(&H2077) = Chr(135) UniArr(&H2078) = Chr(136) UniArr(&H2079) = Chr(137) UniArr(&H207A) = Chr(140) UniArr(&H207B) = Chr(141) UniArr(&H207D) = Chr(138) UniArr(&H207E) = Chr(139) UniArr(&H2080) = Chr(144) UniArr(&H2081) = Chr(145) UniArr(&H2082) = Chr(146) UniArr(&H2083) = Chr(147) UniArr(&H2084) = Chr(148) UniArr(&H2085) = Chr(149) UniArr(&H2086) = Chr(150) UniArr(&H2087) = Chr(151) UniArr(&H2088) = Chr(152) UniArr(&H2089) = Chr(153) UniArr(&H208A) = Chr(157) UniArr(&H208B) = Chr(156) UniArr(&H208D) = Chr(154) UniArr(&H208E) = Chr(155) UniArr(&H20AC) = Chr(160) 'This is OCLC-MARC; MARC21 is Chr(200) UniArr(&H2109) = Chr(158) & "F" UniArr(&H2113) = Chr(190) 'This is OCLC-MARC; MARC21 is Chr(193) UniArr(&H2117) = Chr(203) 'This is OCLC-MARC; MARC21 is Chr(194) If sRecType = "A" Then UniArr(&H211E) = "Rx" If sRecType = "A" Then UniArr(&H2120) = "SM" If sRecType = "A" Then UniArr(&H2122) = "TM" UniArr(&H212A) = "K" UniArr(&H2150) = "1/7" UniArr(&H2151) = "1/9" UniArr(&H2152) = "1/10" UniArr(&H2153) = "1/3" UniArr(&H2154) = "2/3" UniArr(&H2155) = "1/5" UniArr(&H2156) = "2/5" UniArr(&H2157) = "3/5" UniArr(&H2158) = "4/5" UniArr(&H2159) = "1/6" UniArr(&H215A) = "5/6" UniArr(&H215B) = "1/8" UniArr(&H215C) = "3/8" UniArr(&H215D) = "5/8" UniArr(&H215E) = "7/1" UniArr(&H215F) = "1/" UniArr(&H2160) = "I" UniArr(&H2161) = "II" UniArr(&H2162) = "III" UniArr(&H2163) = "IV" UniArr(&H2164) = "V" UniArr(&H2165) = "VI" UniArr(&H2166) = "VII" UniArr(&H2167) = "VIII" UniArr(&H2168) = "IX" UniArr(&H2169) = "X" UniArr(&H216A) = "XI" UniArr(&H216B) = "XII" UniArr(&H216C) = "L" UniArr(&H216D) = "C" UniArr(&H216E) = "D" UniArr(&H216F) = "M" UniArr(&H2160) = "i" UniArr(&H2161) = "ii" UniArr(&H2162) = "iii" UniArr(&H2163) = "iv" UniArr(&H2164) = "v" UniArr(&H2165) = "vi" UniArr(&H2166) = "vii" UniArr(&H2167) = "viii" UniArr(&H2168) = "ix" UniArr(&H2169) = "x" UniArr(&H216A) = "xi" UniArr(&H216B) = "xii" UniArr(&H216C) = "l" UniArr(&H216D) = "c" UniArr(&H216E) = "d" UniArr(&H216F) = "m" UniArr(&H2189) = "0/3" UniArr(&H266D) = Chr(169) 'This is OCLC-MARC; MARC21 is Chr(196) UniArr(&H266F) = Chr(204) 'This is OCLC-MARC; MARC21 is Chr(197) End Sub Sub CannotConvertToMARC() 'Included for reference; the macro currently does nothing with this list Dim UniNonMarcArr(0 to 32757) UniNonMarcArr(&H014A) = Chr(252) 'Capital letter Eng UniNonMarcArr(&H014B) = Chr(252) 'Lowercase letter eng UniNonMarcArr(&H0184) = Chr(252) 'Capital Tone Six UniNonMarcArr(&H0185) = Chr(252) 'Lowercase tone six UniNonMarcArr(&H0186) = Chr(252) 'Capital Open O UniNonMarcArr(&H018D) = Chr(252) 'Lowercase turned delta UniNonMarcArr(&H018E) = Chr(252) 'Capital Reversed E UniNonMarcArr(&H018F) = Chr(252) 'Capital Schwa UniNonMarcArr(&H0190) = Chr(252) 'Capital Open E UniNonMarcArr(&H0194) = Chr(252) 'Capital Gamma UniNonMarcArr(&H0195) = Chr(252) 'Lowercase hv UniNonMarcArr(&H0196) = Chr(252) 'Capital iota UniNonMarcArr(&H019B) = Chr(252) 'Lowercase lambda with stroke UniNonMarcArr(&H019C) = Chr(252) 'Capital Turned M UniNonMarcArr(&H019E) = Chr(252) 'Lowercase n with long right leg UniNonMarcArr(&H019F) = Chr(252) 'Capital O with middle tilde UniNonMarcArr(&H01A2) = Chr(252) 'Capital Oi UniNonMarcArr(&H01A3) = Chr(252) 'Lowercase oi UniNonMarcArr(&H01A6) = Chr(252) 'Letter Yr UniNonMarcArr(&H01A7) = Chr(252) 'Capital Letter Tone Two UniNonMarcArr(&H01A8) = Chr(252) 'Lowercase letter tone two UniNonMarcArr(&H01A9) = Chr(252) 'Letter Esh UniNonMarcArr(&H01AA) = Chr(252) 'Reversed esh loop UniNonMarcArr(&H01B1) = Chr(252) 'Capital Upsilon UniNonMarcArr(&H01B7) = Chr(252) 'Capital Ezh UniNonMarcArr(&H01B8) = Chr(252) 'Capital Ezh Reversed UniNonMarcArr(&H01B9) = Chr(252) 'Lowercase ezh reversed UniNonMarcArr(&H01BA) = Chr(252) 'Lowercase ezh with tail UniNonMarcArr(&H01BC) = Chr(252) 'Capital Letter Tone Five UniNonMarcArr(&H01BD) = Chr(252) 'Lowercase letter tone five UniNonMarcArr(&H01BE) = Chr(252) 'Inverted glottal stop with stroke UniNonMarcArr(&H01BF) = Chr(252) 'Letter Wynn UniNonMarcArr(&H01C1) = Chr(252) 'Lateral click UniNonMarcArr(&H01DD) = Chr(252) 'Lowercase schwa UniNonMarcArr(&H01EE) = Chr(252) UniNonMarcArr(&H01EF) = Chr(252) UniNonMarcArr(&H01F6) = Chr(252) 'Capital Letter Hwair UniNonMarcArr(&H01F7) = Chr(252) 'Capital Letter Wynn UniNonMarcArr(&H021C) = Chr(252) 'Capital Yogh UniNonMarcArr(&H021D) = Chr(252) 'Lowercase yogh UniNonMarcArr(&H0220) = Chr(252) 'Capital N with long right leg UniNonMarcArr(&H0221) = Chr(252) 'd with curl UniNonMarcArr(&H0222) = Chr(252) 'Capital Ou UniNonMarcArr(&H0223) = Chr(252) 'Lowercase ou UniNonMarcArr(&H0234) = Chr(252) 'l with curl UniNonMarcArr(&H0235) = Chr(252) 'n with curl UniNonMarcArr(&H0236) = Chr(252) 't with curl UniNonMarcArr(&H0237) = Chr(252) 'dotless j UniNonMarcArr(&H0238) = Chr(252) 'lowercase db digraph UniNonMarcArr(&H0239) = Chr(252) 'lowercase qp digraph UniNonMarcArr(&H0241) = Chr(252) 'Capital glottal stop UniNonMarcArr(&H0242) = Chr(252) 'Lowercase glottal stop UniNonMarcArr(&H0244) = Chr(252) 'U bar UniNonMarcArr(&H0245) = Chr(252) 'Turned V UniNonMarcArr(&H024A) = Chr(252) 'Q with hook tail UniNonMarcArr(&H024B) = Chr(252) 'q with hook tail UniNonMarcArr(&H024D) = Chr(252) UniNonMarcArr(&H024E) = Chr(252) UniNonMarcArr(&H024F) = Chr(252) UniNonMarcArr(&H0250) = Chr(252) UniNonMarcArr(&H0251) = Chr(252) UniNonMarcArr(&H0252) = Chr(252) UniNonMarcArr(&H0253) = Chr(252) UniNonMarcArr(&H0254) = Chr(252) UniNonMarcArr(&H0255) = Chr(252) UniNonMarcArr(&H0256) = Chr(252) UniNonMarcArr(&H0257) = Chr(252) UniNonMarcArr(&H0258) = Chr(252) UniNonMarcArr(&H0259) = Chr(252) UniNonMarcArr(&H025A) = Chr(252) UniNonMarcArr(&H025B) = Chr(252) UniNonMarcArr(&H025C) = Chr(252) UniNonMarcArr(&H025D) = Chr(252) UniNonMarcArr(&H025E) = Chr(252) UniNonMarcArr(&H025F) = Chr(252) UniNonMarcArr(&H0260) = Chr(252) UniNonMarcArr(&H0261) = Chr(252) UniNonMarcArr(&H0262) = Chr(252) UniNonMarcArr(&H0263) = Chr(252) UniNonMarcArr(&H0264) = Chr(252) UniNonMarcArr(&H0265) = Chr(252) UniNonMarcArr(&H0266) = Chr(252) UniNonMarcArr(&H0267) = Chr(252) UniNonMarcArr(&H0268) = Chr(252) UniNonMarcArr(&H0269) = Chr(252) UniNonMarcArr(&H026A) = Chr(252) UniNonMarcArr(&H026B) = Chr(252) UniNonMarcArr(&H026C) = Chr(252) UniNonMarcArr(&H026D) = Chr(252) UniNonMarcArr(&H026E) = Chr(252) UniNonMarcArr(&H026F) = Chr(252) UniNonMarcArr(&H0270) = Chr(252) UniNonMarcArr(&H0271) = Chr(252) UniNonMarcArr(&H0272) = Chr(252) UniNonMarcArr(&H0273) = Chr(252) UniNonMarcArr(&H0274) = Chr(252) UniNonMarcArr(&H0275) = Chr(252) UniNonMarcArr(&H0276) = Chr(252) UniNonMarcArr(&H0277) = Chr(252) UniNonMarcArr(&H0278) = Chr(252) UniNonMarcArr(&H0279) = Chr(252) UniNonMarcArr(&H027A) = Chr(252) UniNonMarcArr(&H027B) = Chr(252) UniNonMarcArr(&H027C) = Chr(252) UniNonMarcArr(&H027D) = Chr(252) UniNonMarcArr(&H027E) = Chr(252) UniNonMarcArr(&H027F) = Chr(252) UniNonMarcArr(&H0280) = Chr(252) UniNonMarcArr(&H0281) = Chr(252) UniNonMarcArr(&H0282) = Chr(252) UniNonMarcArr(&H0283) = Chr(252) UniNonMarcArr(&H0284) = Chr(252) UniNonMarcArr(&H0285) = Chr(252) UniNonMarcArr(&H0286) = Chr(252) UniNonMarcArr(&H0287) = Chr(252) UniNonMarcArr(&H0288) = Chr(252) UniNonMarcArr(&H0289) = Chr(252) UniNonMarcArr(&H028A) = Chr(252) UniNonMarcArr(&H028B) = Chr(252) UniNonMarcArr(&H028C) = Chr(252) UniNonMarcArr(&H028D) = Chr(252) UniNonMarcArr(&H028E) = Chr(252) UniNonMarcArr(&H028F) = Chr(252) UniNonMarcArr(&H0290) = Chr(252) UniNonMarcArr(&H0291) = Chr(252) UniNonMarcArr(&H0292) = Chr(252) UniNonMarcArr(&H0293) = Chr(252) UniNonMarcArr(&H0294) = Chr(252) UniNonMarcArr(&H0295) = Chr(252) UniNonMarcArr(&H0296) = Chr(252) UniNonMarcArr(&H0297) = Chr(252) UniNonMarcArr(&H0298) = Chr(252) UniNonMarcArr(&H0299) = Chr(252) UniNonMarcArr(&H029A) = Chr(252) UniNonMarcArr(&H029B) = Chr(252) UniNonMarcArr(&H029C) = Chr(252) UniNonMarcArr(&H029D) = Chr(252) UniNonMarcArr(&H029E) = Chr(252) UniNonMarcArr(&H029F) = Chr(252) UniNonMarcArr(&H02A0) = Chr(252) UniNonMarcArr(&H02A1) = Chr(252) UniNonMarcArr(&H02A2) = Chr(252) UniNonMarcArr(&H02A3) = Chr(252) UniNonMarcArr(&H02A4) = Chr(252) UniNonMarcArr(&H02A5) = Chr(252) UniNonMarcArr(&H02A6) = Chr(252) UniNonMarcArr(&H02A7) = Chr(252) UniNonMarcArr(&H02A8) = Chr(252) UniNonMarcArr(&H02A9) = Chr(252) UniNonMarcArr(&H02AA) = Chr(252) UniNonMarcArr(&H02AB) = Chr(252) UniNonMarcArr(&H02AC) = Chr(252) UniNonMarcArr(&H02AD) = Chr(252) UniNonMarcArr(&H02AE) = Chr(252) UniNonMarcArr(&H02AF) = Chr(252) UniNonMarcArr(&H1D00) = Chr(252) UniNonMarcArr(&H1D02) = Chr(252) UniNonMarcArr(&H1D03) = Chr(252) UniNonMarcArr(&H1D04) = Chr(252) UniNonMarcArr(&H1D05) = Chr(252) UniNonMarcArr(&H1D06) = Chr(252) UniNonMarcArr(&H1D07) = Chr(252) UniNonMarcArr(&H1D08) = Chr(252) UniNonMarcArr(&H1D09) = Chr(252) UniNonMarcArr(&H1D0A) = Chr(252) UniNonMarcArr(&H1D0B) = Chr(252) UniNonMarcArr(&H1D0C) = Chr(252) UniNonMarcArr(&H1D0D) = Chr(252) UniNonMarcArr(&H1D0E) = Chr(252) UniNonMarcArr(&H1D0F) = Chr(252) UniNonMarcArr(&H1D10) = Chr(252) UniNonMarcArr(&H1D11) = Chr(252) UniNonMarcArr(&H1D12) = Chr(252) UniNonMarcArr(&H1D13) = Chr(252) UniNonMarcArr(&H1D14) = Chr(252) UniNonMarcArr(&H1D15) = Chr(252) UniNonMarcArr(&H1D16) = Chr(252) UniNonMarcArr(&H1D17) = Chr(252) UniNonMarcArr(&H1D18) = Chr(252) UniNonMarcArr(&H1D19) = Chr(252) UniNonMarcArr(&H1D1A) = Chr(252) UniNonMarcArr(&H1D1B) = Chr(252) UniNonMarcArr(&H1D1C) = Chr(252) UniNonMarcArr(&H1D1D) = Chr(252) UniNonMarcArr(&H1D1E) = Chr(252) UniNonMarcArr(&H1D1F) = Chr(252) UniNonMarcArr(&H1D20) = Chr(252) UniNonMarcArr(&H1D21) = Chr(252) UniNonMarcArr(&H1D22) = Chr(252) UniNonMarcArr(&H1D23) = Chr(252) UniNonMarcArr(&H1D24) = Chr(252) UniNonMarcArr(&H1D25) = Chr(252) UniNonMarcArr(&H1D6B) = Chr(252) UniNonMarcArr(&H1D6C) = Chr(252) UniNonMarcArr(&H1D6D) = Chr(252) UniNonMarcArr(&H1D6E) = Chr(252) UniNonMarcArr(&H1D6F) = Chr(252) UniNonMarcArr(&H1D70) = Chr(252) UniNonMarcArr(&H1D71) = Chr(252) UniNonMarcArr(&H1D72) = Chr(252) UniNonMarcArr(&H1D73) = Chr(252) UniNonMarcArr(&H1D74) = Chr(252) UniNonMarcArr(&H1D75) = Chr(252) UniNonMarcArr(&H1D76) = Chr(252) UniNonMarcArr(&H1D77) = Chr(252) UniNonMarcArr(&H1D79) = Chr(252) UniNonMarcArr(&H1D7A) = Chr(252) UniNonMarcArr(&H1D7B) = Chr(252) UniNonMarcArr(&H1D7C) = Chr(252) UniNonMarcArr(&H1D7D) = Chr(252) UniNonMarcArr(&H1D7E) = Chr(252) UniNonMarcArr(&H1D7F) = Chr(252) UniNonMarcArr(&H1D80) = Chr(252) UniNonMarcArr(&H1D81) = Chr(252) UniNonMarcArr(&H1D82) = Chr(252) UniNonMarcArr(&H1D83) = Chr(252) UniNonMarcArr(&H1D84) = Chr(252) UniNonMarcArr(&H1D85) = Chr(252) UniNonMarcArr(&H1D86) = Chr(252) UniNonMarcArr(&H1D87) = Chr(252) UniNonMarcArr(&H1D88) = Chr(252) UniNonMarcArr(&H1D89) = Chr(252) UniNonMarcArr(&H1D8A) = Chr(252) UniNonMarcArr(&H1D8B) = Chr(252) UniNonMarcArr(&H1D8C) = Chr(252) UniNonMarcArr(&H1D8D) = Chr(252) UniNonMarcArr(&H1D8E) = Chr(252) UniNonMarcArr(&H1D8F) = Chr(252) UniNonMarcArr(&H1D90) = Chr(252) UniNonMarcArr(&H1D91) = Chr(252) UniNonMarcArr(&H1D92) = Chr(252) UniNonMarcArr(&H1D93) = Chr(252) UniNonMarcArr(&H1D94) = Chr(252) UniNonMarcArr(&H1D95) = Chr(252) UniNonMarcArr(&H1D96) = Chr(252) UniNonMarcArr(&H1D97) = Chr(252) UniNonMarcArr(&H1D98) = Chr(252) UniNonMarcArr(&H1D99) = Chr(252) UniNonMarcArr(&H1D9A) = Chr(252) UniNonMarcArr(&H1E9B) = Chr(252) UniNonMarcArr(&H1E9C) = Chr(252) UniNonMarcArr(&H1E9D) = Chr(252) UniNonMarcArr(&H1E9E) = Chr(252) UniNonMarcArr(&H1E9F) = Chr(252) UniNonMarcArr(&H1EFA) = Chr(252) UniNonMarcArr(&H1EFB) = Chr(252) UniNonMarcArr(&H1EFC) = Chr(252) UniNonMarcArr(&H1EFD) = Chr(252) UniNonMarcArr(&H1EFE) = Chr(252) UniNonMarcArr(&H1EFF) = Chr(252) UniNonMarcArr(&H207C) = Chr(252) UniNonMarcArr(&H208C) = Chr(252) UniNonMarcArr(&H2C60) = Chr(252) UniNonMarcArr(&H2C61) = Chr(252) UniNonMarcArr(&H2C62) = Chr(252) UniNonMarcArr(&H2C63) = Chr(252) UniNonMarcArr(&H2C64) = Chr(252) UniNonMarcArr(&H2C65) = Chr(252) UniNonMarcArr(&H2C66) = Chr(252) UniNonMarcArr(&H2C67) = Chr(252) UniNonMarcArr(&H2C68) = Chr(252) UniNonMarcArr(&H2C69) = Chr(252) UniNonMarcArr(&H2C6A) = Chr(252) UniNonMarcArr(&H2C6B) = Chr(252) UniNonMarcArr(&H2C6C) = Chr(252) UniNonMarcArr(&H2C6D) = Chr(252) UniNonMarcArr(&H2C6E) = Chr(252) UniNonMarcArr(&H2C6F) = Chr(252) UniNonMarcArr(&H2C71) = Chr(252) UniNonMarcArr(&H2C72) = Chr(252) UniNonMarcArr(&H2C73) = Chr(252) UniNonMarcArr(&H2C74) = Chr(252) UniNonMarcArr(&H2C75) = Chr(252) UniNonMarcArr(&H2C76) = Chr(252) UniNonMarcArr(&H2C77) = Chr(252) UniNonMarcArr(&H2C78) = Chr(252) UniNonMarcArr(&H2C79) = Chr(252) UniNonMarcArr(&H2C7A) = Chr(252) UniNonMarcArr(&H2C7B) = Chr(252) UniNonMarcArr(&H2C7C) = Chr(252) End Sub Function GetUniChars(sHtmlEntity) As String Dim Hextext As String Dim HexVal As Long Hextext = Mid(sHtmlEntity, 4) Hextext = Left(HexText, Len(sHtmlEntity) - 1) HexVal = Val("&H" & Hextext & "&") GetUniChars = sHtmlEntity Dim nRetVal 'If sHtmlEntity = "ǂ" Then GetUniChars = Chr(223) 'If HexVal = &H01C2 Then msgBox UniArr(HexVal) If UniArr(HexVal) <> "" Then GetUniChars = UniArr(HexVal) Else GetUniChars = sHtmlEntity If HexVal = &H200E Or HexVal = &H200F Then nRetval = MsgBox("Left-to-Right or Right-to-Left marker found. Keep (click Yes) or Remove (click No)?", 4) If nRetVal = 6 Then GetUniChars = sHtmlEntity Else GetUniChars = "" End If End Function