找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 2290|回复: 10

[软硬件讨论] 【吹友吧独创】【treo联系人救星】outlook自动增加拼音的代码

[复制链接]
发表于 2007-11-30 17:49 | 显示全部楼层 |阅读模式
呵呵,treo的联系人查找一直是我的心病,我那么多联系人难道要一个一个改拼音么!!最近对outlook的宏研究的比较多,所以,研究了1天做出了自动把firstname(名字) 的汉字自动转化为拼音加入到 lastname(姓氏)字段中去。 自己用了下,感觉还是比较好用的!当然这么好的东西,要与吹友吧的同仁一起分享了  哈哈哈哈9 ~/ E- B4 I( s) J$ z
# Z9 `9 O& r3 X0 U, h

0 R4 g* u$ ~# b5 @; _  B
4 ~6 w1 _- N& X+ l  g, a, D- i有些生字无法转化出来,显示为“%”号,但是个人感觉不多,自己稍微改动下就好了。其实由于代码比较简单,所以只能照顾到常用字。有高手也可以把代码修改下,把拼音转化的部分增强。$ |7 h% w. L, x

1 g9 k! e; T4 x7 D  F1 T" c1 F使用环境: outlook2007[支持vba]   其他没有试过 我觉得03应该没问题
) E  N1 {# w! N2 P                   修改vba运行权限: 工具》信任中心》宏安全性》不执行宏安全性检查  {用完后再改回系统默认}
) E* [$ Q3 o. f8 n. V1 Q, N9 T4 q4 q
使用方法: 先用treo和outlook同步& w. u' F" y" _* B
                  工具》宏》vb编辑器   》新建模块  拷入代码F5运行就好了  
" l, h1 A; ]1 F* `% u6 T8 ?$ w$ I
. t( H* W2 e! y! v
% p* }, M5 W- ~& n2 r代码
0 O  A) _+ ]/ F0 VOption Explicit
- W, y/ j9 l7 e1 K$ X' ~Sub setpinyin()
* x1 s+ B/ r7 Q( c8 z- K! x    Dim myolApp As New Outlook.Application
1 B  t/ T, D- U    Dim myNamespace As Outlook.NameSpace
8 [$ f: U; _; J    Dim myAddresslists As Outlook.folder
: u7 f6 g" ^: m: a0 ?; V    Dim AddressList As Outlook.AddressList
8 I' _; H; y! Z, ?- ^2 F( Y+ A    Dim item. N  z3 D# o/ W# k) n% o  z! C
    Dim temp1, temp2
0 q. q$ k9 F4 b' e   
, X- m" l# h2 X8 \* k" i    Set myNamespace = myolApp.GetNamespace("MAPI")
( D: Z$ M6 f5 }- U7 R6 Y    Set myAddresslists = myNamespace.GetDefaultFolder(olFolderContacts)
6 j9 [  ?( X: ~9 L) ?: d: z7 J5 b1 S   ' Set myolApp = myNamespace.GetDefaultFolder(olFolderInbox)
# Q' L- i! g$ f+ `- N, s    For Each item In myAddresslists.Items( Y! ?/ q; ^( {% ]
   'temp1 = item.LastName & " " & item.FirstName
% T& r" e0 W/ q, e; H" ^   
6 F. T2 p! s' U! I! ^! U   If item.LastName = "" Then- w- K- \  \4 N" e% C  m
            item.LastName = LCase(getpy(item.FirstName))
/ o1 f9 \/ m% V, b+ E            item.Save# Q5 z0 g3 Z0 d1 m- R
            Debug.Print item.LastName+ k1 [; `2 d3 Y, F$ S& G! H  _
            + N' a, ~& g( x9 ]# H! `# e- j+ K8 O( K
   'MsgBox item.LastName4 R9 _' A4 v- u
   
7 E- F8 R' T6 n# R# f   End If
1 i0 x$ g0 M9 H- A   4 U. m- k5 k8 E3 G3 Q
    Next2 H, f, Y# b0 m$ l5 e" F. ~$ Y% O
End Sub
7 f2 x, d/ N: W( g2 P# G5 p
2 f4 i  {+ f3 }Function getpychar(char) As String) a1 ?# j, `3 K; H) L
    On Error Resume Next: j+ ~6 H% y/ P9 E5 q
    Dim tmp As String, vs1 As String( Z4 f6 Q* L' g, P+ Q6 Q( J
   
7 A) D5 f) w9 ^    If Asc(char) >= 0 And Asc(char) <= 127 Then0 ~4 W4 e9 X3 b4 K, w
        If char >= "a" And char <= "z" Then
2 b/ J- f" ~0 l) M- _, W0 A            getpychar = Chr(Asc(char) - 32)
7 U0 u, t- O2 P6 y2 O        ElseIf char >= "A" And char <= "Z" Then1 @  ~! r7 ]" n' p* d4 k2 [
            getpychar = char
/ F# u! S- }& d' c" w        Else. a: x3 W' ~4 j* S$ m$ X: p6 M
            '如果是空格,排除
! u' P9 c" v0 G4 o5 Q4 c            If Asc(char) = 32 Then
5 A* n" Y* e3 R7 C               getpychar = ""2 q# C" T0 X# d4 r1 d# a
            Else/ ?" `3 T' k7 L2 L  I6 L' I  S+ e: G- Z
            '0 Q! `  M5 F( ^. c1 n* \7 s% @! q6 k
                getpychar = char
1 A% X. m$ |$ p: K            End If0 b" r- m# }6 h, F/ L. O) X. Z
        End If$ e3 F/ i# k. z; V' z( w6 S- E
    Else
) s. H/ `' h% s0 s        tmp = 65536 + Asc(char)7 n. I2 W: @/ J/ T# x3 v+ B$ K9 H
        Select Case tmp
2 [8 ~% T/ h" T4 \* U; u            Case 45217 To 45252: getpychar = "A"
9 W. g8 ?6 u, Q: c0 @6 y2 b            Case 45253 To 45760: getpychar = "B"
) ~4 O5 \# R+ J( Z" Q( c8 b+ a            Case 45761 To 46317: getpychar = "C"
5 a3 c7 s& T' V& i            Case 46318 To 46825: getpychar = "D"7 H5 r" w; d0 a- V3 h4 H# D* l
            Case 46826 To 47009: getpychar = "E"
+ i; q, y- V: R; X; p            Case 47010 To 47296: getpychar = "F": Y4 v0 D+ r+ N' s/ q% c" j
            Case 47297 To 47613: getpychar = "G"
- H9 H' f  T2 y( i1 C' ]            Case 47614 To 48118: getpychar = "H"
+ G7 o% q- s# Y            Case 48119 To 49061: getpychar = "J"- g' E" J4 @- G1 |
            Case 49062 To 49323: getpychar = "K"5 m7 n8 b& W; ~/ h2 ]
            Case 49324 To 49895: getpychar = "L"" m2 Z0 n2 b& }5 f
            Case 49896 To 50370: getpychar = "M"
9 v. L; _4 G: `4 h+ y! n7 D            Case 50371 To 50613: getpychar = "N"
; Y9 Z/ y4 b8 O            Case 50614 To 50621: getpychar = "O"
1 r& f3 P: }4 V) F+ G            Case 50622 To 50905: getpychar = "P"$ H; C  x* D  W3 ^5 w* t
            Case 50906 To 51386: getpychar = "Q"
2 M& e6 w" \8 r7 `. {" \& t2 w            Case 51387 To 51445: getpychar = "R"9 u6 n7 {+ ]4 V% B1 ^
            Case 51446 To 52217: getpychar = "S"; [$ T. I# v2 j% h$ t
            Case 52218 To 52697: getpychar = "T"7 W* }) ^/ t8 u- `' h; [/ r
            Case 52698 To 52979: getpychar = "W": x& k" S' n: @. {- N
            Case 52980 To 53640: getpychar = "X"
- `$ y' @! M; a) M- I/ z            Case 53689 To 54480: getpychar = "Y"
5 s( f8 |+ f6 m& h! Q3 R            Case 54481 To 55289: getpychar = "Z"; q0 w0 K, E. |7 S3 R4 i/ w  ?/ K
            Case Else: getpychar = "%". W  O8 U4 \! j5 k  |
        End Select
. |' @* A; L3 o7 C; M    End If, ^& @& A8 I6 Q# O
End Function
- H" j8 D/ Q9 qFunction getpy(str)$ T2 T3 O; F: ^/ s+ o
Dim i As Long
( u8 s. E0 s& t2 Y+ l5 _4 b# _    For i = 1 To Len(str). j, S, T" l; F" M
        getpy = getpy & getpychar(Mid(str, i, 1))+ G4 x5 k6 s' q! f9 l# r
    Next i: W% f) d7 t! T: K- A) H
End Function2 Q9 }- }& P% |9 Z& e2 U
1 z& I) R& H2 D
[ 本帖最后由 liangl923 于 2007-11-30 18:03 编辑 ]

setpinyin.rar

1.86 KB, 下载次数: 465

评分

参与人数 2威望 +20 收起 理由
ursace + 10 这个一定要支持啊!
twinway + 10 原创内容

查看全部评分

发表于 2007-11-30 19:08 | 显示全部楼层
以前也是加拼音的,不过有了中文伴侣后还是喜欢中文伴侣,打电话,发短信,加拨IP都很方便。
发表于 2007-11-30 21:06 | 显示全部楼层
楼主钻研精神值得敬佩。
发表于 2007-11-30 21:32 | 显示全部楼层
  这个要支持!
发表于 2007-12-1 08:40 | 显示全部楼层
中文伴侣也不错,不过很支持楼主的原创精神。
发表于 2007-12-1 15:25 | 显示全部楼层
支持楼主~顶了
发表于 2007-12-1 20:17 | 显示全部楼层
噢乖 神人啊
1 j! \9 s1 x$ R' A+ u顶了 不管啥中文伴侣5 ~/ {1 g# C# J$ R( p
这样的帖子就该支持
 楼主| 发表于 2007-12-1 23:07 | 显示全部楼层
haha 谢谢大家支持 我的第二个高亮贴 哈哈
发表于 2008-1-23 16:44 | 显示全部楼层
我已经试过了,很好用,但在outlook2003里面不行,貌似是有个函数未定义,在2007里面,需要把那个palm出的outlook2007的同步补丁打上,要不然能用手机同步到电脑,但从电脑无法同步到手机。
 楼主| 发表于 2009-3-30 10:00 | 显示全部楼层
又来了 ,准备再次使用一下 呵呵
回复 支持 反对

使用道具 举报

发表于 2009-3-30 21:12 | 显示全部楼层
可不可以再出个可以反过来的啊 。。。比如我要是用一段这种的拼音代码的 然后 不想要了再给批量消除啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

QQ|Archiver|手机版|小黑屋|吹友吧 ( 京ICP备05078561号 )

GMT+8, 2024-10-6 11:50 , Processed in 0.359058 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表