Function GetPY(as_InputString) Dim lc_FirstLetter Dim ls_ch Dim ls_SecondSecTable Dim ls_ReturnStr Dim li_SecPosValue Dim li_SectorCode Dim li_PositionCode Dim li_SecPosCode Dim li_offset Dim i Dim j as_InputString = Replace(as_InputString, " ", "") li_SecPosValue = Array(1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787, 3106, 3212, 3472, 3635, 3722, 3730, 3858, 4027, 4086, 4390, 4558, 4684, 4925, 5249) lc_FirstLetter = Array("A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "W", "X", "Y", "Z") ls_SecondSecTable = "" ls_SecondSecTable = ls_SecondSecTable + "cjwgnspgcenegypbtwxzdxykygtpjnmjqmbsgzscyjsyyfpggbzgydywjkgaljswkbjqhyjwpdzlsgmrybywwccgznkydg" ls_SecondSecTable = ls_SecondSecTable + "ttngjeyekzydcjnmcylqlypyqbqrpzslwbdgkjfyxjwcltbncxjjjjcxdtqsqzycdxxhgckbphffsspybgmxjbbyglbhls" ls_SecondSecTable = ls_SecondSecTable + "smzmpjhsojnghdzcdklgjhsgqzhxqgkezzwymcscjnyetxadzpmdssmzjjqjyzcjjfwqjbdzbjgdnzcbwhgxhqkmwfbpbq" ls_SecondSecTable = ls_SecondSecTable + "dtjjzkqhylcgxfptyjyyzpsjlfchmqshgmmxsxjpkdcmbbqbefsjwhwwgckpylqbgldlcctnmaeddksjngkcsgxlhzaybd" ls_SecondSecTable = ls_SecondSecTable + "btsdkdylhgymylcxpycjndqjwxqxfyyfjlejbzrwccqhqcsbzkymgplbmcrqcflnymyqmsqtrbcjthztqfrxchxmcjcjlx" ls_SecondSecTable = ls_SecondSecTable + "qgjmshzkbswxemdlckfsydsglycjjssjnqbjctyhbftdcyjdgwyghqfrxwckqkxebpdjpxjqsrmebwgjlbjslyysmdxlcl" ls_SecondSecTable = ls_SecondSecTable + "qkxlhtjrjjmbjhxhwywcbhtrxxglhjhfbmgykldyxzpplggpmtcbbajjzyljtyanjgbjflqgdzyqcaxbkclecjsznslyzh" ls_SecondSecTable = ls_SecondSecTable + "lxlzcghbxzhznytdsbcjkdlzayffydlabbgqszkggldndnyskjshdlxxbcghxyggdjmmzngmmccgwzszxsjbznmlzdthcq" ls_SecondSecTable = ls_SecondSecTable + "ydbdllscddnlkjyhjsycjlkohqasdhnhcsgaehdaashtcplcpqybsdmpjlpcjaqlcdhjjasprchngjnlhlyyqyhwzpnccg" ls_SecondSecTable = ls_SecondSecTable + "wwmzffjqqqqxxaclbhkdjxdgmmydjxzllsygxgkjrywzwyclzmcsjzldbndcfcxyhlschycjqppqagmnyxpfrkssbjlyxy" ls_SecondSecTable = ls_SecondSecTable + "jjglnscmhcwwmnzjjlhmhchsyppttxrycsxbyhcsmxjsxnbwgpxxtaybgajcxlypdccwqocwkccsbnhcpdyznbcyytycks" ls_SecondSecTable = ls_SecondSecTable + "kybsqkkytqqxfcwchcwkelcqbsqyjqcclmthsywhmktlkjlychwheqjhtjhppqpqscfymmcmgbmhglgsllysdllljpchmj" ls_SecondSecTable = ls_SecondSecTable + "hwljcyhzjxhdxjlhxrswlwzjcbxmhzqxsdzpmgfcsglsdymjshxpjxomyqknmyblrthbcftpmgyxlchlhlzylxgssssccl" ls_SecondSecTable = ls_SecondSecTable + "sldclepbhshxyyfhbmgdfycnjqwlqhjjcywjztejjdhfblqxtqkwhdchqxagtlxljxmsljhdzkzjecxjcjnmbbjcsfywkb" ls_SecondSecTable = ls_SecondSecTable + "jzghysdcpqyrsljpclpwxsdwejbjcbcnaytmgmbapclyqbclzxcbnmsggfnzjjbzsfqyndxhpcqkzczwalsbccjxpozgwk" ls_SecondSecTable = ls_SecondSecTable + "ybsgxfcfcdkhjbstlqfsgdslqwzkxtmhsbgzhjcrglyjbpmljsxlcjqqhzmjczydjwbmjklddpmjegxyhylxhlqyqhkycw" ls_SecondSecTable = ls_SecondSecTable + "cjmyhxnatjhyccxzpcqlbzwwwtwbqcmlbmynjcccxbbsnzzljpljxyztzlgcldcklyrzzgqtgjhhgjljaxfgfjzslcfdqz" ls_SecondSecTable = ls_SecondSecTable + "lclgjdjcsnclljpjqdcclcjxmyzftsxgcgsbrzxjqqcczhgyjdjqqlzxjyldlbcyamcstylbdjbyregklzdzhldszchznw" ls_SecondSecTable = ls_SecondSecTable + "czcllwjqjjjkdgjcolbbzppglghtgzcygezmycnqcycyhbhgxkamtxyxnbskyzzgjzlqjdfcjxdygjqjjpmgwgjjjpkjsb" ls_SecondSecTable = ls_SecondSecTable + "gbmmcjssclpqpdxcdyykypcjddyygywchjrtgcnyqldkljczzgzccjgdyksgpzmdlcphnjafyzdjcnmwescsglbtzcgmsd" ls_SecondSecTable = ls_SecondSecTable + "llyxqsxsbljsbbsgghfjlwpmzjnlyywdqshzxtyywhmcyhywdbxbtlmswyyfsbjcbdxxlhjhfpsxzqhfzmqcztqcxzxrdk" ls_SecondSecTable = ls_SecondSecTable + "djhnnyzqqfnqdmmgnydxmjgdhcdycbffallztdltfkmxqzdngeqdbdczjdxbzgsqqddjcmbkxffxmkdmcsychzcmljdjyn" ls_SecondSecTable = ls_SecondSecTable + "hprsjmkmpcklgdbqtfzswtfgglyplljzhgjjgypzltcsmcnbtjbhfkdhbyzgkpbbymtdlsxsbnpdkleycjnycdykzddhqg" ls_SecondSecTable = ls_SecondSecTable + "sdzsctarlltkzlgecllkjljjaqnbdggghfjtzqjsecshalqfmmgjnlyjbbtmlycxdcjpldlpcqdhsycbzsckbzmsljflhr" ls_SecondSecTable = ls_SecondSecTable + "bjsnbrgjhxpdgdjybzgdlgcsezgxlblgyxtwmabchecmwyjyzlljjshlgndjlslygkdzpzxjyyzlpcxszfgwyydlyhcljs" ls_SecondSecTable = ls_SecondSecTable + "cmbjhblyjlycblydpdqysxktbytdkdxjypcnrjmfdjgklccjbctbjddbblblcdqrppxjcglzcshltoljnmdddlngkaqakg" ls_SecondSecTable = ls_SecondSecTable + "jgyhheznmshrphqqjchgmfprxcjgdychghlyrzqlcngjnzsqdkqjymszswlcfqjqxgbggxmdjwlmcrnfkkfsyyljbmqamm" ls_SecondSecTable = ls_SecondSecTable + "mycctbshcptxxzzsmphfshmclmldjfyqxsdyjdjjzzhqpdszglssjbckbxyqzjsgpsxjzqznqtbdkwxjkhhgflbcsmdldg" ls_SecondSecTable = ls_SecondSecTable + "dzdblzkycqnncsybzbfglzzxswmsccmqnjqsbdqsjtxxmbldxcclzshzcxrqjgjylxzfjphymzqqydfqjjlcznzjcdgzyg" ls_SecondSecTable = ls_SecondSecTable + "cdxmzysctlkphtxhtlbjxjlxscdqccbbqjfqzfsltjbtkqbsxjjljchczdbzjdczjccprnlqcgpfczlclcxzdmxmphgsgz" ls_SecondSecTable = ls_SecondSecTable + "gszzqjxlwtjpfsyaslcjbtckwcwmytcsjjljcqlwzmalbxyfbpnlschtgjwejjxxglljstgshjqlzfkcgnndszfdeqfhbs" ls_SecondSecTable = ls_SecondSecTable + "aqdgylbxmmygszldydjmjjrgbjgkgdhgkblgkbdmbylxwcxyttybkmrjjzxqjbhlmhmjjzmqasldcyxyqdlqcafywyxqhz" ls_ReturnStr = "" ls_ch = Mid(as_InputString, 1, 1) If Asc(ls_ch) < 128 And Asc(ls_ch) > 0 Then If Asc(ls_ch) < 123 And Asc(ls_ch) > 64 Then ls_ReturnStr = ls_ReturnStr + ls_ch End If Else li_SectorCode = Int("&H" + Left(Hex(Asc(ls_ch)), 2)) - 160 li_PositionCode = Int("&H" + Right(Hex(Asc(ls_ch)), 2)) - 160 li_SecPosCode = li_SectorCode * 100 + li_PositionCode If li_SectorCode > 15 And li_SectorCode < 56 Then For j = 23 To 1 Step -1 If li_SecPosCode >= li_SecPosValue(j - 1) Then ls_ReturnStr = ls_ReturnStr + lc_FirstLetter(j - 1) Exit For End If Next Else li_offset = (li_SectorCode - 56) * 94 + li_PositionCode If li_offset >= 1 And li_offset <= 3008 Then ls_ReturnStr = ls_ReturnStr + Mid(ls_SecondSecTable, li_offset, 1) End If End If End If GetPY = UCase(ls_ReturnStr) End Function