'MacroName:Cyrillic2Latin 'MacroDescription:Automatically transliterate a field with Cyrillic characters into Latin characters 'Macro created by: Joel Hahn, Niles Public Library District 'Last modified: 30 October 2013 Declare Function GetActiveWindow Lib "user32" () As Long Declare Function OpenClipboard Lib "user32" Alias "OpenClipboard" (ByVal hwnd As Long) As Long Declare Function GetClipboardData Lib "user32" Alias "GetClipboardData" (ByVal wFormat As Long) As Long Declare Function CloseClipboard Lib "user32" Alias "CloseClipboard" () As Long Declare Function GlobalLock Lib "kernel32" Alias "GlobalLock" (ByVal hMem As Long) As Long Declare Function GlobalUnlock Lib "kernel32" Alias "GlobalUnlock" (ByVal hMem As Long) As Long Declare Function lstrlen Lib "kernel32" Alias "lstrlenW" (ByVal lpString As Long) As Long Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pTo As Any, uFrom As Any, ByVal lSize As Long) Option Explicit Declare Function GetClip() As String Declare Function PointerToStringA(lpStringA As Long) As String Declare Function TransRussian (sHexcode As String) As String Declare Function TransBelarusian (sHexcode As String) As String Declare Function TransBulgarian (sHexcode As String) As String Declare Function TransMacedonian (sHexcode As String) As String Declare Function TransRusyn (sHexcode As String) As String Declare Function TransSlavic (sHexcode As String) As String Declare Function TransSerbian (sHexcode As String) As String Declare Function TransUkranian (sHexcode As String) As String Declare Function TransNonSlavic (sHexcode As String) As String Sub Main Dim CharacterSet As Integer Dim response As Integer Dim bool As Integer Dim CurRow As Integer Dim retval As String Dim NewField As String Dim place As Integer Dim place2 As Integer Dim UCode As String Dim TransChar As String 'Set the default transliteration table selection CharacterSet = 0 'Russian ' 0 = Russian ' 1 = Belarusian ' 2 = Bulgarian ' 3 = Church Slavic ' 4 = Serbian ' 5 = Ukranian ' 6 = Non-Slavic Cyrillic languages ' 7 = Rusyn ' 8 = Macedonian 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 Select Case CS.ItemType Case -1, 5 To 13, 15 To 16, 21 To 25 MsgBox "Not viewing a MARC record. Exiting..." Exit Sub End Select Dim CharSets(8) As String CharSets(0) = "Russian" CharSets(1) = "Belarusian" CharSets(2) = "Bulgarian" CharSets(3) = "Church Slavic" CharSets(4) = "Serbian" CharSets(5) = "Ukranian" CharSets(6) = "Non-Slavic Cyrillic" CharSets(7) = "Rusyn" CharSets(8) = "Macedonian" Begin Dialog newdlg 183, 50, "Transliteration Options" OkButton 35, 27, 50, 14 CancelButton 95, 27, 50, 14 Text 3, 3, 177, 10, "Please select the LC Cyrillic transliteration table to use:" DropListBox 42, 11, 78, 98, CharSets(), .Langs End Dialog Dim CharSelect As newdlg CharSelect.Langs = CharacterSet response = Dialog(CharSelect) If response = 0 Then Exit Sub End If CharacterSet = CharSelect.Langs CurRow = CS.CursorRow CS.CopyField retval = GetClip() NewField = Left(retval, 5) retval = Mid(retval, 6) If InStr(retval, "|4") = 0 Then MsgBox "There are no Cyrillic characters in the selected field. Exiting..." Exit Sub End If Do While InStr(retval, "|") place = InStr(retval, "|") If place > 1 Then NewField = NewField & Left(retval, place - 1) End If place2 = InStr(place + 1, retval, "|") UCode = Mid(retval, place + 1, place2 - place - 1) retval = Mid(retval, place2 + 1) If UCode = "1C2" Then TransChar = Chr(223) Else Select Case CharacterSet Case 0 TransChar = TransRussian(UCode) Case 1 TransChar = TransBelarusian(UCode) Case 2 TransChar = TransBulgarian(UCode) Case 3 TransChar = TransSlavic(UCode) Case 4 TransChar = TransSerbian(UCode) Case 5 TransChar = TransUkranian(UCode) Case 6 TransChar = TransNonSlavic(UCode) Case 7 TransChar = TransRusyn(UCode) Case 8 TransChar = TransMacedonian(UCode) Case Else TransChar = "*" End Select End If If (CharacterSet = 0 Or CharacterSet = 3) And TransChar = Chr(183) And (Left(retval, 1) Like "[A-Za-z|]") = FALSE Then TransChar = "" ElseIf CharacterSet = 2 And (TransChar = "U" & Chr(230) Or TransChar = "u" & Chr(230)) And (Left(retval, 1) Like "[A-Za-z|]") = FALSE Then TransChar = Chr(183) ElseIf CharacterSet = 3 And (Right(NewField, 2) = "V" & Chr(231) Or Right(NewField, 2) = "v" & Chr(231)) Then If UCode = "300" Or UCode = "301" Or UCode = "309" Then If Mid(NewField, Len(NewField) - 1, 1) = "V" Then Mid(NewField, Len(NewField) - 1, 1) = "Y" Else Mid(NewField, Len(NewField) - 1, 1) = "y" End If End If ElseIf CharacterSet = 7 And (LCase(TransChar) = "o" And Left(retval, 5) = "|302|") Then TransChar = TransChar & Chr(227) retval = Mid(retval, 6) End If NewField = NewField & TransChar Loop If retval <> "" Then NewField = NewField & retval bool = CS.AddFieldLine(CurRow+1, NewField) CS.CursorRow = CS.CursorRow -1 CS.SendKeys "%ekl", -1 'MsgBox NewField End Sub '################################################################################ Function GetClip() As String Dim CF_DSPTEXT As Integer Dim CF_OEMTEXT As Integer Dim CF_TEXT As Integer Dim CF_UNICODETEXT As Integer Dim hwnd As Long Dim bool As Long Dim retval As String CF_DSPTEXT = &H81 CF_OEMTEXT = 7 CF_TEXT = 1 CF_UNICODETEXT = 13 hwnd = GetActiveWindow() bool = OpenClipboard(hwnd) Dim hData as Long Dim lpData as Long hData = GetClipboardData(CF_UNICODETEXT) 'If hData Then lpData = GlobalLock(hData) retval = PointerToStringA(lpData) Call GlobalUnlock(hData) ' End If bool = CloseClipboard() GetClip = retval End Function '################################################################################ Function PointerToStringA(lpStringA As Long) As String Dim Buffer() As Integer Dim nLen As Long Dim i As Long Dim psa As String 'If lpStringA Then nLen = lstrlen(lpStringA) If nLen Then ReDim Buffer(0 To (nLen - 1) * 2) As Integer CopyMemory Buffer(0), ByVal lpStringA, nLen * 2 for i = 0 to (nLen-1) * 2 if Buffer(i) < 128 and Buffer(i) > 0 Then psa = psa & Chr(Buffer(i)) Elseif Buffer(i) > 128 Then psa = psa & "|" & Hex(Buffer(i)) & "|" 'Chr(Buffer(i)) End If 'If len(psa) > 80 Then psa = psa & Chr(10) Next PointerToStringA = psa 'StrConv(Buffer, vbUnicode) End If 'End If End Function '################################################################################ Function TransRussian (sHexcode As String) As String Select Case sHexcode Case "410" TransRussian = "A" Case "411" TransRussian = "B" Case "412" TransRussian = "V" Case "413" TransRussian = "G" Case "414" TransRussian = "D" Case "415" TransRussian = "E" Case "416" TransRussian = "Zh" Case "417" TransRussian = "Z" Case "418" TransRussian = "I" Case "406" TransRussian = "I" & Chr(229) Case "419" TransRussian = "I" & Chr(230) Case "41A" TransRussian = "K" Case "41B" TransRussian = "L" Case "41C" TransRussian = "M" Case "41D" TransRussian = "N" Case "41E" TransRussian = "O" Case "41F" TransRussian = "P" Case "420" TransRussian = "R" Case "421" TransRussian = "S" Case "422" TransRussian = "T" Case "423" TransRussian = "U" Case "424" TransRussian = "F" Case "425" TransRussian = "Kh" Case "426" TransRussian = "T" & Chr(235) & "S" & Chr(236) Case "427" TransRussian = "Ch" Case "428" TransRussian = "Sh" Case "429" TransRussian = "Shch" Case "42A" TransRussian = Chr(183) Case "42B" TransRussian = "Y" Case "42C" TransRussian = Chr(167) Case "42D" TransRussian = "E" & Chr(231) Case "42E" TransRussian = "I" & Chr(235) & "U" & Chr(236) Case "42F" TransRussian = "I" & Chr(235) & "A" & Chr(236) Case "401" TransRussian = "E" & Chr(232) Case "462" TransRussian = "I" & Chr(235) & "E" & Chr(236) 'Case "466" ' TransRussian = "E" & Chr(241) Case "472" TransRussian = "F" & Chr(231) Case "474" TransRussian = "Y" & Chr(231) Case "430" TransRussian = "a" Case "431" TransRussian = "b" Case "432" TransRussian = "v" Case "433" TransRussian = "g" Case "434" TransRussian = "d" Case "435" TransRussian = "e" Case "436" TransRussian = "zh" Case "437" TransRussian = "z" Case "438" TransRussian = "i" Case "456" TransRussian = "i" & Chr(229) Case "439" TransRussian = "i" & Chr(230) Case "43A" TransRussian = "k" Case "43B" TransRussian = "l" Case "43C" TransRussian = "m" Case "43D" TransRussian = "n" Case "43E" TransRussian = "o" Case "43F" TransRussian = "p" Case "440" TransRussian = "r" Case "441" TransRussian = "s" Case "442" TransRussian = "t" Case "443" TransRussian = "u" Case "444" TransRussian = "f" Case "445" TransRussian = "kh" Case "446" TransRussian = "t" & Chr(235) & "s" & Chr(236) Case "447" TransRussian = "ch" Case "448" TransRussian = "sh" Case "449" TransRussian = "shch" Case "44A" TransRussian = Chr(183) Case "44B" TransRussian = "y" Case "44C" TransRussian = Chr(167) Case "44D" TransRussian = "e" & Chr(231) Case "44E" TransRussian = "i" & Chr(235) & "u" & Chr(236) Case "44F" TransRussian = "i" & Chr(235) & "a" & Chr(236) Case "451" TransRussian = "e" & Chr(232) Case "463" TransRussian = "i" & Chr(235) & "e" & Chr(236) 'Case "467" ' TransRussian = "e" & Chr(241) Case "473" TransRussian = "f" & Chr(231) Case "475" TransRussian = "y" & Chr(231) Case Else TransRussian = Chr(252) End Select End Function '################################################################################ Function TransBelarusian (sHexcode As String) As String Select Case sHexcode Case "410" TransBelarusian = "A" Case "411" TransBelarusian = "B" Case "412" TransBelarusian = "V" Case "413" TransBelarusian = "H" Case "403" TransBelarusian = "G" Case "414" TransBelarusian = "D" Case "415" TransBelarusian = "E" Case "401" TransBelarusian = "I" & Chr(235) & "O" & Chr(236) Case "416" TransBelarusian = "Z" & Chr(235) & "H" & Chr(236) Case "417" TransBelarusian = "Z" Case "406" TransBelarusian = "I" Case "407" TransBelarusian = "I" & Chr(232) Case "418" TransBelarusian = "I" & Chr(229) Case "419" TransBelarusian = "I" & Chr(230) Case "41A" TransBelarusian = "K" Case "41B" TransBelarusian = "L" Case "41C" TransBelarusian = "M" Case "41D" TransBelarusian = "N" Case "41E" TransBelarusian = "O" Case "41F" TransBelarusian = "P" Case "420" TransBelarusian = "R" Case "421" TransBelarusian = "S" Case "422" TransBelarusian = "T" Case "423" TransBelarusian = "U" Case "40E" TransBelarusian = "U" & Chr(230) Case "424" TransBelarusian = "F" Case "425" TransBelarusian = "Kh" Case "426" TransBelarusian = "Ts" Case "427" TransBelarusian = "Ch" Case "428" TransBelarusian = "Sh" Case "429" TransBelarusian = "Shch" Case "42A" TransBelarusian = Chr(183) Case "42B" TransBelarusian = "Y" Case "42C" TransBelarusian = Chr(167) Case "42D" TransBelarusian = "E" & Chr(231) Case "42E" TransBelarusian = "I" & Chr(235) & "U" & Chr(236) Case "42F" TransBelarusian = "I" & Chr(235) & "A" & Chr(236) 'Case "462" ' TransBelarusian = "I" & Chr(235) & "E" & Chr(236) 'Case "472" ' TransBelarusian = "F" & Chr(231) 'Case "474" ' TransBelarusian = "Y" & Chr(231) Case "48C" TransBelarusian = "E" & Chr(233) Case "430" TransBelarusian = "a" Case "431" TransBelarusian = "b" Case "432" TransBelarusian = "v" Case "433" TransBelarusian = "h" Case "453" TransBelarusian = "g" Case "434" TransBelarusian = "d" Case "435" TransBelarusian = "e" Case "451" TransBelarusian = "i" & Chr(235) & "o" & Chr(236) Case "436" TransBelarusian = "z" & Chr(235) & "h" & Chr(236) Case "437" TransBelarusian = "z" Case "456" TransBelarusian = "i" Case "457" TransBelarusian = "i" & Chr(232) Case "438" TransBelarusian = "i" & Chr(229) Case "439" TransBelarusian = "i" & Chr(230) Case "43A" TransBelarusian = "k" Case "43B" TransBelarusian = "l" Case "43C" TransBelarusian = "m" Case "43D" TransBelarusian = "n" Case "43E" TransBelarusian = "o" Case "43F" TransBelarusian = "p" Case "440" TransBelarusian = "r" Case "441" TransBelarusian = "s" Case "442" TransBelarusian = "t" Case "443" TransBelarusian = "u" Case "45E" TransBelarusian = "u" & Chr(230) Case "444" TransBelarusian = "f" Case "445" TransBelarusian = "kh" Case "446" TransBelarusian = "ts" Case "447" TransBelarusian = "ch" Case "448" TransBelarusian = "sh" Case "449" TransBelarusian = "shch" Case "44A" TransBelarusian = Chr(183) Case "44B" TransBelarusian = "y" Case "44C" TransBelarusian = Chr(167) Case "44D" TransBelarusian = "e" & Chr(231) Case "44E" TransBelarusian = "i" & Chr(235) & "u" & Chr(236) Case "44F" TransBelarusian = "i" & Chr(235) & "a" & Chr(236) 'Case "463" ' TransBelarusian = "i" & Chr(235) & "e" & Chr(235) 'Case "473" ' TransBelarusian = "f" & Chr(231) 'Case "475" ' TransBelarusian = "y" & Chr(231) Case "48D" TransBelarusian = "e" & Chr(233) Case Else TransBelarusian = Chr(252) End Select End Function '################################################################################ Function TransBulgarian (sHexcode As String) As String Select Case sHexcode Case "410" TransBulgarian = "A" Case "411" TransBulgarian = "B" Case "412" TransBulgarian = "V" Case "413" TransBulgarian = "G" Case "414" TransBulgarian = "D" Case "415" TransBulgarian = "E" Case "416" TransBulgarian = "Zh" Case "417" TransBulgarian = "Z" Case "418" TransBulgarian = "I" Case "419" TransBulgarian = "I" & Chr(230) Case "41A" TransBulgarian = "K" Case "41B" TransBulgarian = "L" Case "41C" TransBulgarian = "M" Case "41D" TransBulgarian = "N" Case "41E" TransBulgarian = "O" Case "41F" TransBulgarian = "P" Case "420" TransBulgarian = "R" Case "421" TransBulgarian = "S" Case "422" TransBulgarian = "T" Case "423" TransBulgarian = "U" Case "424" TransBulgarian = "F" Case "425" TransBulgarian = "Kh" Case "426" TransBulgarian = "T" & Chr(235) & "S" & Chr(236) Case "427" TransBulgarian = "Ch" Case "428" TransBulgarian = "Sh" Case "429" TransBulgarian = "Sht" Case "42A" TransBulgarian = "U" & Chr(230) Case "42C" TransBulgarian = Chr(167) Case "462" TransBulgarian = "I" & Chr(235) & "E" & Chr(236) Case "42E" TransBulgarian = "I" & Chr(235) & "U" & Chr(236) Case "42F" TransBulgarian = "I" & Chr(235) & "A" & Chr(236) Case "46A" TransBulgarian = "U" & Chr(239) Case "430" TransBulgarian = "a" Case "431" TransBulgarian = "b" Case "432" TransBulgarian = "v" Case "433" TransBulgarian = "g" Case "434" TransBulgarian = "d" Case "435" TransBulgarian = "e" Case "436" TransBulgarian = "zh" Case "437" TransBulgarian = "z" Case "438" TransBulgarian = "i" Case "439" TransBulgarian = "i" & Chr(230) Case "43A" TransBulgarian = "k" Case "43B" TransBulgarian = "l" Case "43C" TransBulgarian = "m" Case "43D" TransBulgarian = "n" Case "43E" TransBulgarian = "o" Case "43F" TransBulgarian = "p" Case "440" TransBulgarian = "r" Case "441" TransBulgarian = "s" Case "442" TransBulgarian = "t" Case "443" TransBulgarian = "u" Case "444" TransBulgarian = "f" Case "445" TransBulgarian = "kh" Case "446" TransBulgarian = "t" & Chr(235) & "s" & Chr(236) Case "447" TransBulgarian = "ch" Case "448" TransBulgarian = "sh" Case "449" TransBulgarian = "sht" Case "44A" TransBulgarian = "u" & Chr(230) Case "44C" TransBulgarian = Chr(167) Case "463" TransBulgarian = "i" & Chr(235) & "e" & Chr(235) Case "44E" TransBulgarian = "i" & Chr(235) & "u" & Chr(236) Case "44F" TransBulgarian = "i" & Chr(235) & "a" & Chr(236) Case "46B" TransBulgarian = "u" & Chr(239) Case Else TransBulgarian = Chr(252) End Select End Function '################################################################################ Function TransMacedonian (sHexcode As String) As String Select Case sHexcode Case "410" TransMacedonian = "A" Case "411" TransMacedonian = "B" Case "412" TransMacedonian = "V" Case "413" TransMacedonian = "G" Case "403" TransMacedonian = "G" & Chr(226) Case "414" TransMacedonian = "D" 'Case "402" ' TransMacedonian = Chr(163) Case "415" TransMacedonian = "E" Case "416" TransMacedonian = "Z" & Chr(233) Case "417" TransMacedonian = "Z" Case "405" TransMacedonian = "Dz" Case "418" TransMacedonian = "I" 'Case "419" ' TransMacedonian = "I" & Chr(230) Case "408" TransMacedonian = "J" Case "41A" TransMacedonian = "K" Case "40C" TransMacedonian = "K" & Chr(226) Case "41B" TransMacedonian = "L" Case "409" TransMacedonian = "Lj" Case "41C" TransMacedonian = "M" Case "41D" TransMacedonian = "N" Case "40A" TransMacedonian = "Nj" Case "41E" TransMacedonian = "O" Case "41F" TransMacedonian = "P" Case "420" TransMacedonian = "R" Case "421" TransMacedonian = "S" Case "422" TransMacedonian = "T" Case "40B" TransMacedonian = "C" & Chr(226) Case "423" TransMacedonian = "U" Case "424" TransMacedonian = "F" Case "425" TransMacedonian = "H" Case "426" TransMacedonian = "C" 'Case "427" ' TransMacedonian = "C" & Chr(233) Case "40F" TransMacedonian = "Dz" & Chr(233) Case "428" TransMacedonian = "S" & Chr(233) 'Case "429" ' TransMacedonian = "Shch" 'Case "42A" ' TransMacedonian = Chr(183) 'Case "42B" ' TransMacedonian = "Y" 'Case "42C" ' TransMacedonian = Chr(167) 'Case "42D" ' TransMacedonian = "E" & Chr(231) 'Case "42E" ' TransMacedonian = "I" & Chr(235) & "U" & Chr(236) 'Case "42F" ' TransMacedonian = "I" & Chr(235) & "A" & Chr(236) 'Case "401" ' TransMacedonian = "E" & Chr(232) 'Case "406" ' TransMacedonian = "I" & Chr(229) 'Case "462" ' TransMacedonian = "I" & Chr(235) & "E" & Chr(236) 'Case "472" ' TransMacedonian = "F" & Chr(231) 'Case "474" ' TransMacedonian = "Y" & Chr(231) Case "430" TransMacedonian = "a" Case "431" TransMacedonian = "b" Case "432" TransMacedonian = "v" Case "433" TransMacedonian = "g" Case "453" TransMacedonian = "g" & Chr(226) Case "434" TransMacedonian = "d" 'Case "452" ' TransMacedonian = Chr(179) Case "435" TransMacedonian = "e" Case "436" TransMacedonian = "z" & Chr(233) Case "437" TransMacedonian = "z" Case "455" TransMacedonian = "dz" Case "438" TransMacedonian = "i" 'Case "439" ' TransMacedonian = "i" & Chr(230) Case "458" TransMacedonian = "j" Case "43A" TransMacedonian = "k" Case "45C" TransMacedonian = "k" & Chr(226) Case "43B" TransMacedonian = "l" Case "459" TransMacedonian = "lj" Case "43C" TransMacedonian = "m" Case "43D" TransMacedonian = "n" Case "45A" TransMacedonian = "nj" Case "43E" TransMacedonian = "o" Case "43F" TransMacedonian = "p" Case "440" TransMacedonian = "r" Case "441" TransMacedonian = "s" Case "442" TransMacedonian = "t" Case "45B" TransMacedonian = "c" & Chr(226) Case "443" TransMacedonian = "u" Case "444" TransMacedonian = "f" Case "445" TransMacedonian = "h" Case "446" TransMacedonian = "c" 'Case "447" ' TransMacedonian = "c" & Chr(233) Case "45F" TransMacedonian = "dz" & Chr(233) Case "448" TransMacedonian = "s" & Chr(233) 'Case "449" ' TransMacedonian = "shch" 'Case "44A" ' TransMacedonian = Chr(183) 'Case "44B" ' TransMacedonian = "y" 'Case "44C" ' TransMacedonian = Chr(167) 'Case "44D" ' TransMacedonian = "e" & Chr(231) 'Case "44E" ' TransMacedonian = "i" & Chr(235) & "u" & Chr(236) 'Case "44F" ' TransMacedonian = "i" & Chr(235) & "a" & Chr(236) 'Case "451" ' TransMacedonian = "e" & Chr(232) 'Case "456" ' TransMacedonian = "i" & Chr(229) 'Case "463" ' TransMacedonian = "i" & Chr(235) & "e" & Chr(235) 'Case "473" ' TransMacedonian = "f" & Chr(231) 'Case "475" ' TransMacedonian = "y" & Chr(231) Case Else TransMacedonian = Chr(252) End Select End Function '################################################################################ Function TransRusyn (sHexcode As String) As String Select Case sHexcode Case "410" TransRusyn = "A" Case "411" TransRusyn = "B" Case "412" TransRusyn = "V" Case "413" TransRusyn = "H" Case "490" TransRusyn = "G" Case "414" TransRusyn = "D" Case "415" TransRusyn = "E" Case "404" TransRusyn = "I" & Chr(235) & "E" & Chr(236) Case "401" TransRusyn = "E" & Chr(232) Case "416" TransRusyn = "Z" & Chr(235) & "H" & Chr(236) Case "417" TransRusyn = "Z" Case "418" TransRusyn = "Y" Case "406" TransRusyn = "I" Case "407" TransRusyn = "I" & Chr(232) Case "419" TransRusyn = "I" & Chr(230) Case "41A" TransRusyn = "K" Case "41B" TransRusyn = "L" Case "41C" TransRusyn = "M" Case "41D" TransRusyn = "N" Case "41E" TransRusyn = "O" Case "41F" TransRusyn = "P" Case "420" TransRusyn = "R" Case "421" TransRusyn = "S" Case "422" TransRusyn = "T" Case "423" TransRusyn = "U" Case "424" TransRusyn = "F" Case "425" TransRusyn = "K" & Chr(235) & "H" & Chr(236) Case "426" TransRusyn = "T" & Chr(235) & "S" & Chr(236) Case "427" TransRusyn = "Ch" Case "428" TransRusyn = "Sh" Case "429" TransRusyn = "Shch" Case "42A" TransRusyn = Chr(183) Case "42B" TransRusyn = "Y" & Chr(233) Case "42C" TransRusyn = Chr(167) Case "42D" TransRusyn = "E" & Chr(231) Case "42E" TransRusyn = "I" & Chr(235) & "U" & Chr(236) Case "42F" TransRusyn = "I" & Chr(235) & "A" & Chr(236) 'Case "401" ' TransRusyn = "E" & Chr(232) 'Case "406" ' TransRusyn = "I" & Chr(229) 'Case "462" ' TransRusyn = "I" & Chr(235) & "E" & Chr(236) 'Case "472" ' TransRusyn = "F" & Chr(231) 'Case "474" ' TransRusyn = "Y" & Chr(231) Case "48C" TransRusyn = "I" & Chr(227) Case "430" TransRusyn = "a" Case "431" TransRusyn = "b" Case "432" TransRusyn = "v" Case "433" TransRusyn = "h" Case "491" TransRusyn = "g" Case "434" TransRusyn = "d" Case "435" TransRusyn = "e" Case "454" TransRusyn = "i" & Chr(235) & "e" & Chr(236) Case "451" TransRusyn = "e" & Chr(232) Case "436" TransRusyn = "z" & Chr(235) & "h" & Chr(236) Case "437" TransRusyn = "z" Case "438" TransRusyn = "y" Case "456" TransRusyn = "i" Case "457" TransRusyn = "i" & Chr(232) Case "439" TransRusyn = "i" & Chr(230) Case "43A" TransRusyn = "k" Case "43B" TransRusyn = "l" Case "43C" TransRusyn = "m" Case "43D" TransRusyn = "n" Case "43E" TransRusyn = "o" Case "43F" TransRusyn = "p" Case "440" TransRusyn = "r" Case "441" TransRusyn = "s" Case "442" TransRusyn = "t" Case "443" TransRusyn = "u" Case "444" TransRusyn = "f" Case "445" TransRusyn = "k" & Chr(235) & "h" & Chr(236) Case "446" TransRusyn = "t" & Chr(235) & "s" & Chr(236) Case "447" TransRusyn = "ch" Case "448" TransRusyn = "sh" Case "449" TransRusyn = "shch" Case "44A" TransRusyn = Chr(183) Case "44B" TransRusyn = "y" & Chr(233) Case "44C" TransRusyn = Chr(167) Case "44D" TransRusyn = "e" & Chr(231) Case "44E" TransRusyn = "i" & Chr(235) & "u" & Chr(236) Case "44F" TransRusyn = "i" & Chr(235) & "a" & Chr(236) 'Case "451" ' TransRusyn = "e" & Chr(232) 'Case "456" ' TransRusyn = "i" & Chr(229) 'Case "463" ' TransRusyn = "i" & Chr(235) & "e" & Chr(235) 'Case "473" ' TransRusyn = "f" & Chr(231) 'Case "475" ' TransRusyn = "y" & Chr(231) Case "48D" TransRusyn = "i" & Chr(227) Case Else TransRusyn = Chr(252) End Select End Function '################################################################################ Function TransSlavic (sHexcode As String) As String Select Case sHexcode Case "410" TransSlavic = "A" Case "411" TransSlavic = "B" Case "412" TransSlavic = "V" Case "413" TransSlavic = "G" Case "414" TransSlavic = "D" 'Case "415" ' TransSlavic = "E" 'Case "401" ' TransSlavic = "E" & Chr(232) Case "404" TransSlavic = "E" 'Case ??? ' E+macron ("E" & Chr(229)) character not provided for in Unicode Case "464" TransSlavic = "I" & Chr(235) & "E" & Chr(236) Case "416" TransSlavic = "Zh" Case "405" TransSlavic = "Z" & Chr(231) Case "417" TransSlavic = "Z" Case "418" TransSlavic = "I" Case "406" TransSlavic = "I" & Chr(229) Case "419" TransSlavic = "I" & Chr(230) Case "41A" TransSlavic = "K" Case "41B" TransSlavic = "L" Case "41C" TransSlavic = "M" Case "41D" TransSlavic = "N" Case "41E" TransSlavic = "O" Case "41F" TransSlavic = "P" Case "420" TransSlavic = "R" Case "421" TransSlavic = "S" Case "422" TransSlavic = "T" 'Case "423" ' TransSlavic = "U" Case "478" TransSlavic = "U" 'Case ??? ' U+macron ("U" & Chr(229)) character not provided for in Unicode Case "424" TransSlavic = "F" Case "425" TransSlavic = "Kh" Case "47E" TransSlavic = "O" & Chr(229) & Chr(235) & "T" & Chr(236) Case "460" TransSlavic = "O" & Chr(229) Case "426" TransSlavic = "T" & Chr(235) & "S" & Chr(236) Case "427" TransSlavic = "Ch" Case "428" TransSlavic = "Sh" Case "429" TransSlavic = "Sht" Case "42A" TransSlavic = Chr(183) Case "42B" TransSlavic = "Y" & Chr(229) 'Case ??? ' Y character not provided for in Unicode Case "42C" TransSlavic = Chr(167) Case "462" TransSlavic = "E" & Chr(233) 'Case "42D" ' TransSlavic = "E" & Chr(231) Case "42E" TransSlavic = "I" & Chr(235) & "U" & Chr(236) 'Case "42F" ' TransSlavic = "I" & Chr(235) & "A" & Chr(236) 'Case ??? ' IA-ligature ("I" & Chr(235) & "A" & Chr(236)) character not provided for in Unicode Case "466" TransSlavic = "E" & Chr(241) Case "46E" TransSlavic = "K" & Chr(235) & "S" & Chr(236) Case "470" TransSlavic = "P" & Chr(235) & "S" & Chr(236) Case "472" TransSlavic = "F" & Chr(231) Case "476" TransSlavic = "Y" & Chr(231) '&H476 is not yet a valid MARC character Case "474" TransSlavic = "V" & Chr(231) Case "46A" TransSlavic = "O" & Chr(241) Case "468" TransSlavic = "I" & Chr(235) & "E" & Chr(241) & Chr(236) Case "46C" TransSlavic = "I" & Chr(235) & "O" & Chr(241) & Chr(236) Case "40B" TransSlavic = "G" & Chr(226) Case "430" TransSlavic = "a" Case "431" TransSlavic = "b" Case "432" TransSlavic = "v" Case "433" TransSlavic = "g" Case "434" TransSlavic = "d" Case "454" TransSlavic = "e" 'Case ??? ' e+macron ("e" & Chr(229)) character not provided for in Unicode 'Case "435" ' TransSlavic = "e" 'Case "451" ' TransSlavic = "e" & Chr(232) Case "465" TransSlavic = "i" & Chr(235) & "e" & Chr(236) Case "436" TransSlavic = "zh" Case "455" TransSlavic = "z" & Chr(231) Case "437" TransSlavic = "z" Case "438" TransSlavic = "i" Case "456" TransSlavic = "i" & Chr(229) Case "439" TransSlavic = "i" & Chr(230) Case "43A" TransSlavic = "k" Case "43B" TransSlavic = "l" Case "43C" TransSlavic = "m" Case "43D" TransSlavic = "n" Case "43E" TransSlavic = "o" Case "43F" TransSlavic = "p" Case "440" TransSlavic = "r" Case "441" TransSlavic = "s" Case "442" TransSlavic = "t" Case "443" TransSlavic = "v" & Chr(231) Case "479" TransSlavic = "u" 'Case ??? ' u+macron ("u" & Chr(229)) character not provided for in Unicode Case "444" TransSlavic = "f" Case "445" TransSlavic = "kh" Case "47F" TransSlavic = "o" & Chr(229) & Chr(235) & "t" & Chr(236) Case "461" TransSlavic = "o" & Chr(229) Case "446" TransSlavic = "t" & Chr(235) & "s" & Chr(236) Case "447" TransSlavic = "ch" Case "448" TransSlavic = "sh" Case "449" TransSlavic = "sht" Case "44A" TransSlavic = Chr(183) Case "44B" TransSlavic = "y" & Chr(229) 'Case ??? ' y character not provided for in Unicode Case "44C" TransSlavic = Chr(167) Case "463" TransSlavic = "e" & Chr(233) 'Case "44D" ' TransSlavic = "e" & Chr(231) Case "44E" TransSlavic = "i" & Chr(235) & "u" & Chr(236) 'Case "44F" ' TransSlavic = "i" & Chr(235) & "a" & Chr(236) 'Case ??? ' ia-ligature ("i" & Chr(235) & "a" & Chr(236)) character not provided for in Unicode Case "467" TransSlavic = "e" & Chr(241) Case "46F" TransSlavic = "k" & Chr(235) & "s" & Chr(236) Case "471" TransSlavic = "p" & Chr(235) & "s" & Chr(236) Case "473" TransSlavic = "f" & Chr(231) Case "477" TransSlavic = "y" & Chr(231) '&H477 is not yet a valid MARC character Case "475" TransSlavic = "v" & Chr(231) Case "46B" TransSlavic = "o" & Chr(241) Case "469" TransSlavic = "i" & Chr(235) & "e" & Chr(241) & Chr(236) Case "46D" TransSlavic = "i" & Chr(235) & "o" & Chr(241) & Chr(236) Case "45B" TransSlavic = "g" & Chr(226) Case Else TransSlavic = Chr(252) End Select End Function '################################################################################ Function TransSerbian (sHexcode As String) As String Select Case sHexcode Case "410" TransSerbian = "A" Case "411" TransSerbian = "B" Case "412" TransSerbian = "V" Case "413" TransSerbian = "G" Case "403" TransSerbian = "G" & Chr(226) Case "414" TransSerbian = "D" Case "402" TransSerbian = Chr(163) Case "415" TransSerbian = "E" Case "416" TransSerbian = "Z" & Chr(233) Case "417" TransSerbian = "Z" 'Case "405" ' TransSerbian = "Dz" Case "418" TransSerbian = "I" 'Case "419" ' TransSerbian = "I" & Chr(230) Case "408" TransSerbian = "J" Case "41A" TransSerbian = "K" 'Case "40C" ' TransSerbian = "K" & Chr(226) Case "41B" TransSerbian = "L" Case "409" TransSerbian = "Lj" Case "41C" TransSerbian = "M" Case "41D" TransSerbian = "N" Case "40A" TransSerbian = "Nj" Case "41E" TransSerbian = "O" Case "41F" TransSerbian = "P" Case "420" TransSerbian = "R" Case "421" TransSerbian = "S" Case "422" TransSerbian = "T" Case "40B" TransSerbian = "C" & Chr(226) Case "423" TransSerbian = "U" Case "424" TransSerbian = "F" Case "425" TransSerbian = "H" Case "426" TransSerbian = "C" Case "427" TransSerbian = "C" & Chr(233) Case "40F" TransSerbian = "Dz" & Chr(233) Case "428" TransSerbian = "S" & Chr(233) 'Case "429" ' TransSerbian = "Shch" 'Case "42A" ' TransSerbian = Chr(183) 'Case "42B" ' TransSerbian = "Y" 'Case "42C" ' TransSerbian = Chr(167) 'Case "42D" ' TransSerbian = "E" & Chr(231) 'Case "42E" ' TransSerbian = "I" & Chr(235) & "U" & Chr(236) 'Case "42F" ' TransSerbian = "I" & Chr(235) & "A" & Chr(236) 'Case "401" ' TransSerbian = "E" & Chr(232) 'Case "406" ' TransSerbian = "I" & Chr(229) 'Case "462" ' TransSerbian = "I" & Chr(235) & "E" & Chr(236) 'Case "472" ' TransSerbian = "F" & Chr(231) 'Case "474" ' TransSerbian = "Y" & Chr(231) Case "430" TransSerbian = "a" Case "431" TransSerbian = "b" Case "432" TransSerbian = "v" Case "433" TransSerbian = "g" Case "453" TransSerbian = "g" & Chr(226) Case "434" TransSerbian = "d" Case "452" TransSerbian = Chr(179) Case "435" TransSerbian = "e" Case "436" TransSerbian = "z" & Chr(233) Case "437" TransSerbian = "z" 'Case "455" ' TransSerbian = "dz" Case "438" TransSerbian = "i" 'Case "439" ' TransSerbian = "i" & Chr(230) Case "458" TransSerbian = "j" Case "43A" TransSerbian = "k" 'Case "45C" ' TransSerbian = "k" & Chr(226) Case "43B" TransSerbian = "l" Case "459" TransSerbian = "lj" Case "43C" TransSerbian = "m" Case "43D" TransSerbian = "n" Case "45A" TransSerbian = "nj" Case "43E" TransSerbian = "o" Case "43F" TransSerbian = "p" Case "440" TransSerbian = "r" Case "441" TransSerbian = "s" Case "442" TransSerbian = "t" Case "45B" TransSerbian = "c" & Chr(226) Case "443" TransSerbian = "u" Case "444" TransSerbian = "f" Case "445" TransSerbian = "h" Case "446" TransSerbian = "c" Case "447" TransSerbian = "c" & Chr(233) Case "45F" TransSerbian = "dz" & Chr(233) Case "448" TransSerbian = "s" & Chr(233) 'Case "449" ' TransSerbian = "shch" 'Case "44A" ' TransSerbian = Chr(183) 'Case "44B" ' TransSerbian = "y" 'Case "44C" ' TransSerbian = Chr(167) 'Case "44D" ' TransSerbian = "e" & Chr(231) 'Case "44E" ' TransSerbian = "i" & Chr(235) & "u" & Chr(236) 'Case "44F" ' TransSerbian = "i" & Chr(235) & "a" & Chr(236) 'Case "451" ' TransSerbian = "e" & Chr(232) 'Case "456" ' TransSerbian = "i" & Chr(229) 'Case "463" ' TransSerbian = "i" & Chr(235) & "e" & Chr(235) 'Case "473" ' TransSerbian = "f" & Chr(231) 'Case "475" ' TransSerbian = "y" & Chr(231) Case Else TransSerbian = Chr(252) End Select End Function '################################################################################ Function TransUkranian (sHexcode As String) As String Select Case sHexcode Case "410" TransUkranian = "A" Case "411" TransUkranian = "B" Case "412" TransUkranian = "V" Case "413" TransUkranian = "H" Case "490" TransUkranian = "G" Case "414" TransUkranian = "D" Case "415" TransUkranian = "E" Case "404" TransUkranian = "I" & Chr(235) & "E" & Chr(236) Case "416" TransUkranian = "Z" & Chr(235) & "H" & Chr(236) Case "417" TransUkranian = "Z" Case "418" TransUkranian = "Y" Case "406" TransUkranian = "I" Case "407" TransUkranian = "I" & Chr(232) Case "419" TransUkranian = "I" & Chr(230) Case "41A" TransUkranian = "K" Case "41B" TransUkranian = "L" Case "41C" TransUkranian = "M" Case "41D" TransUkranian = "N" Case "41E" TransUkranian = "O" Case "41F" TransUkranian = "P" Case "420" TransUkranian = "R" Case "421" TransUkranian = "S" Case "422" TransUkranian = "T" Case "423" TransUkranian = "U" Case "424" TransUkranian = "F" Case "425" TransUkranian = "Kh" Case "426" TransUkranian = "T" & Chr(235) & "S" & Chr(236) Case "427" TransUkranian = "Ch" Case "428" TransUkranian = "Sh" Case "429" TransUkranian = "Shch" 'Case "42A" ' TransUkranian = Chr(183) 'Case "42B" ' TransUkranian = "Y" Case "42C" TransUkranian = Chr(167) 'Case "42D" ' TransUkranian = "E" & Chr(231) Case "42E" TransUkranian = "I" & Chr(235) & "U" & Chr(236) Case "42F" TransUkranian = "I" & Chr(235) & "A" & Chr(236) 'Case "401" ' TransUkranian = "E" & Chr(232) 'Case "406" ' TransUkranian = "I" & Chr(229) 'Case "462" ' TransUkranian = "I" & Chr(235) & "E" & Chr(236) 'Case "472" ' TransUkranian = "F" & Chr(231) 'Case "474" ' TransUkranian = "Y" & Chr(231) Case "430" TransUkranian = "a" Case "431" TransUkranian = "b" Case "432" TransUkranian = "v" Case "433" TransUkranian = "h" Case "491" TransUkranian = "g" Case "434" TransUkranian = "d" Case "435" TransUkranian = "e" Case "454" TransUkranian = "i" & Chr(235) & "e" & Chr(236) Case "436" TransUkranian = "z" & Chr(235) & "h" & Chr(236) Case "437" TransUkranian = "z" Case "438" TransUkranian = "y" Case "456" TransUkranian = "i" Case "457" TransUkranian = "i" & Chr(232) Case "439" TransUkranian = "i" & Chr(230) Case "43A" TransUkranian = "k" Case "43B" TransUkranian = "l" Case "43C" TransUkranian = "m" Case "43D" TransUkranian = "n" Case "43E" TransUkranian = "o" Case "43F" TransUkranian = "p" Case "440" TransUkranian = "r" Case "441" TransUkranian = "s" Case "442" TransUkranian = "t" Case "443" TransUkranian = "u" Case "444" TransUkranian = "f" Case "445" TransUkranian = "kh" Case "446" TransUkranian = "t" & Chr(235) & "s" & Chr(236) Case "447" TransUkranian = "ch" Case "448" TransUkranian = "sh" Case "449" TransUkranian = "shch" 'Case "44A" ' TransUkranian = Chr(183) 'Case "44B" ' TransUkranian = "y" Case "44C" TransUkranian = Chr(167) 'Case "44D" ' TransUkranian = "e" & Chr(231) Case "44E" TransUkranian = "i" & Chr(235) & "u" & Chr(236) Case "44F" TransUkranian = "i" & Chr(235) & "a" & Chr(236) 'Case "451" ' TransUkranian = "e" & Chr(232) 'Case "456" ' TransUkranian = "i" & Chr(229) 'Case "463" ' TransUkranian = "i" & Chr(235) & "e" & Chr(235) 'Case "473" ' TransUkranian = "f" & Chr(231) 'Case "475" ' TransUkranian = "y" & Chr(231) Case Else TransUkranian = Chr(252) End Select End Function '################################################################################ Function TransNonSlavic (sHexcode As String) As String Select Case sHexcode Case "410" TransNonSlavic = "A" Case "411" TransNonSlavic = "B" Case "412" TransNonSlavic = "V" Case "413" TransNonSlavic = "G" Case "414" TransNonSlavic = "D" Case "415" TransNonSlavic = "E" Case "416" TransNonSlavic = "Zh" Case "417" TransNonSlavic = "Z" Case "418" TransNonSlavic = "I" 'Case "406" ' TransNonSlavic = "I" & Chr(229) Case "419" TransNonSlavic = "I" & Chr(230) Case "41A" TransNonSlavic = "K" Case "41B" TransNonSlavic = "L" Case "41C" TransNonSlavic = "M" Case "41D" TransNonSlavic = "N" Case "41E" TransNonSlavic = "O" Case "41F" TransNonSlavic = "P" Case "420" TransNonSlavic = "R" Case "421" TransNonSlavic = "S" Case "422" TransNonSlavic = "T" Case "423" TransNonSlavic = "U" Case "424" TransNonSlavic = "F" Case "425" TransNonSlavic = "Kh" Case "426" TransNonSlavic = "T" & Chr(235) & "S" & Chr(236) Case "427" TransNonSlavic = "Ch" Case "428" TransNonSlavic = "Sh" Case "429" TransNonSlavic = "Shch" Case "42A" TransNonSlavic = Chr(183) Case "42B" TransNonSlavic = "Y" Case "42C" TransNonSlavic = Chr(167) Case "42D" TransNonSlavic = "E" & Chr(231) Case "42E" TransNonSlavic = "I" & Chr(235) & "U" & Chr(236) Case "42F" TransNonSlavic = "I" & Chr(235) & "A" & Chr(236) Case "401" TransNonSlavic = "E" & Chr(232) Case "462" TransNonSlavic = "I" & Chr(235) & "E" & Chr(236) Case "472" TransNonSlavic = "F" & Chr(231) Case "474" TransNonSlavic = "Y" & Chr(231) Case "430" TransNonSlavic = "a" Case "431" TransNonSlavic = "b" Case "432" TransNonSlavic = "v" Case "433" TransNonSlavic = "g" Case "434" TransNonSlavic = "d" Case "435" TransNonSlavic = "e" Case "436" TransNonSlavic = "zh" Case "437" TransNonSlavic = "z" Case "438" TransNonSlavic = "i" 'Case "456" ' TransNonSlavic = "i" & Chr(229) Case "439" TransNonSlavic = "i" & Chr(230) Case "43A" TransNonSlavic = "k" Case "43B" TransNonSlavic = "l" Case "43C" TransNonSlavic = "m" Case "43D" TransNonSlavic = "n" Case "43E" TransNonSlavic = "o" Case "43F" TransNonSlavic = "p" Case "440" TransNonSlavic = "r" Case "441" TransNonSlavic = "s" Case "442" TransNonSlavic = "t" Case "443" TransNonSlavic = "u" Case "444" TransNonSlavic = "f" Case "445" TransNonSlavic = "kh" Case "446" TransNonSlavic = "t" & Chr(235) & "s" & Chr(236) Case "447" TransNonSlavic = "ch" Case "448" TransNonSlavic = "sh" Case "449" TransNonSlavic = "shch" Case "44A" TransNonSlavic = Chr(183) Case "44B" TransNonSlavic = "y" Case "44C" TransNonSlavic = Chr(167) Case "44D" TransNonSlavic = "e" & Chr(231) Case "44E" TransNonSlavic = "i" & Chr(235) & "u" & Chr(236) Case "44F" TransNonSlavic = "i" & Chr(235) & "a" & Chr(236) Case "451" TransNonSlavic = "e" & Chr(232) Case "463" TransNonSlavic = "i" & Chr(235) & "e" & Chr(235) Case "473" TransNonSlavic = "f" & Chr(231) Case "475" TransNonSlavic = "y" & Chr(231) Case Else TransNonSlavic = Chr(252) End Select End Function '################################################################################