找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 2370|回复: 10

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

[复制链接]
发表于 2007-11-30 17:49 | 显示全部楼层 |阅读模式
呵呵,treo的联系人查找一直是我的心病,我那么多联系人难道要一个一个改拼音么!!最近对outlook的宏研究的比较多,所以,研究了1天做出了自动把firstname(名字) 的汉字自动转化为拼音加入到 lastname(姓氏)字段中去。 自己用了下,感觉还是比较好用的!当然这么好的东西,要与吹友吧的同仁一起分享了  哈哈哈哈
) [0 {- b+ H+ [+ _
( `) C" T1 A5 C4 O7 m
( v$ O1 u2 {( I2 s2 J  M: M8 T0 X# W' I: d6 m
有些生字无法转化出来,显示为“%”号,但是个人感觉不多,自己稍微改动下就好了。其实由于代码比较简单,所以只能照顾到常用字。有高手也可以把代码修改下,把拼音转化的部分增强。( ^( b4 @4 \+ N1 n$ Q! E: o
$ f/ H' E- t( o- o% J
使用环境: outlook2007[支持vba]   其他没有试过 我觉得03应该没问题  t- b. t2 R/ f
                   修改vba运行权限: 工具》信任中心》宏安全性》不执行宏安全性检查  {用完后再改回系统默认}. w2 g( x# _6 x* ^/ f6 ]) o
; p" @; @, h. b7 |7 a3 y
使用方法: 先用treo和outlook同步
# T0 s+ D9 m" y6 p" a, v                  工具》宏》vb编辑器   》新建模块  拷入代码F5运行就好了  7 s: X4 j$ R4 O; K' b1 D/ j
# p: J0 `/ Y/ E  w8 a# C2 A( O  e3 D
- s# R8 g; h# T  s8 _
代码9 L+ R0 H' U) r/ T! ~
Option Explicit0 F/ m( h  M5 r
Sub setpinyin()
! @* M9 Q% o. F    Dim myolApp As New Outlook.Application- A' y$ W# D. @6 M0 g1 b' X
    Dim myNamespace As Outlook.NameSpace
1 J) ?: I3 |4 ^  J- F/ C9 g    Dim myAddresslists As Outlook.folder
( M: o5 n- F3 U$ N0 ^6 }    Dim AddressList As Outlook.AddressList
* }% A$ k1 \( y- Q+ _    Dim item
& l- t/ z9 t* @' Y5 {/ J# p+ O    Dim temp1, temp25 O8 K+ T4 f( K. _9 G
   
- G( n8 h$ G8 \" Z    Set myNamespace = myolApp.GetNamespace("MAPI")
; b8 v" x1 ^6 Y- r1 K: C& [  b    Set myAddresslists = myNamespace.GetDefaultFolder(olFolderContacts)
$ z0 h8 k  W0 U$ n* j   ' Set myolApp = myNamespace.GetDefaultFolder(olFolderInbox)0 M# B* _- n" J8 M( `0 Y* G
    For Each item In myAddresslists.Items
' g2 j" k- y7 p* w, [+ J   'temp1 = item.LastName & " " & item.FirstName4 \$ K& Y" h( S- K- o6 ]9 \
   : |  k7 ]' z9 B) X" x
   If item.LastName = "" Then. c/ K, R+ D0 J5 ~5 N& I  X% i
            item.LastName = LCase(getpy(item.FirstName))% g0 `, n. k+ m! j
            item.Save
" ^  J$ R0 ~8 K0 }) Z% H8 V            Debug.Print item.LastName; L* ]0 M% o! ]7 s" j( I4 L
            
$ r. Z8 {: w& c6 G# b5 c; r   'MsgBox item.LastName  z1 S' u( F5 [
   
( A4 b1 _# U( |   End If: Y5 Y2 P  Q4 H: Y5 h
   0 n% }6 b/ u2 {- p9 I
    Next/ b# C6 G6 k; U$ }
End Sub6 D" _$ S, ^; q& P$ i7 J. t

1 j0 h$ x: A) T% I5 NFunction getpychar(char) As String
" p* X' I1 P4 P( V; b    On Error Resume Next0 w; t! D( X+ Z+ a- N
    Dim tmp As String, vs1 As String
& @; Y' A1 V' X1 q1 @  x. n    . I, s  w+ T7 W. m
    If Asc(char) >= 0 And Asc(char) <= 127 Then$ _0 X' J% `9 A) V6 Q! \  |( M, K# d
        If char >= "a" And char <= "z" Then
( O2 ~2 i$ z' k. N5 T            getpychar = Chr(Asc(char) - 32)- p( H8 q9 S9 k& s" M7 ~
        ElseIf char >= "A" And char <= "Z" Then
3 V, R5 O  _3 Z% d            getpychar = char- m( o* y# G: |9 h+ ]% \
        Else
7 C, W4 V/ J9 t9 I2 ^            '如果是空格,排除
& T. H+ U- n/ e( h+ T0 j: V! p            If Asc(char) = 32 Then* c- v( u8 D9 f) k$ i: t
               getpychar = ""
: ]# r1 U( S! s% ^9 S            Else, X1 j. ]: a- y
            '! _) b% z4 d/ f2 }( \
                getpychar = char
  c* D4 g/ E$ |1 o# G            End If
  j0 T. X: X/ W  Z2 A7 V9 k        End If
! c! G2 @9 ~' j    Else8 R& D3 n0 e3 g# K; z
        tmp = 65536 + Asc(char)
8 W; M! p' _$ }0 ]; ~        Select Case tmp! X9 d! n0 I( V/ X' Y6 k" l2 m1 I
            Case 45217 To 45252: getpychar = "A"
1 @  ^5 Z0 I# m# w; Y  ]            Case 45253 To 45760: getpychar = "B"8 a8 G6 `( h- Z; ^5 V: f
            Case 45761 To 46317: getpychar = "C"' u5 h1 m! Z* J9 R7 h
            Case 46318 To 46825: getpychar = "D"
& C. H6 e6 a. B# R, L! @            Case 46826 To 47009: getpychar = "E"( b: _5 M# W' \, M2 n
            Case 47010 To 47296: getpychar = "F"5 s- v: g0 Y: a$ F0 V0 J5 J
            Case 47297 To 47613: getpychar = "G"7 x, k. m) ]% ?. S
            Case 47614 To 48118: getpychar = "H"
) Y4 C* ?8 y1 T5 }( z" ~2 }6 X            Case 48119 To 49061: getpychar = "J"4 |# I' l8 b4 m  f5 b2 H6 W
            Case 49062 To 49323: getpychar = "K"
( c( G" a0 y) J$ H5 g* [5 c3 L& X            Case 49324 To 49895: getpychar = "L") d. i& f: A' X( N- N' I
            Case 49896 To 50370: getpychar = "M"
' A: M$ V9 m9 i) U            Case 50371 To 50613: getpychar = "N"- d; L7 W! @/ b8 U% s
            Case 50614 To 50621: getpychar = "O"
7 b" }3 N+ L. j+ I- q. r( s0 t            Case 50622 To 50905: getpychar = "P"8 n4 @  L( w& p8 t8 H* b
            Case 50906 To 51386: getpychar = "Q"# G4 n* Z4 A( J2 e6 c$ I2 D
            Case 51387 To 51445: getpychar = "R"
2 [$ {& \  J7 t4 D: K( N$ B3 p4 H            Case 51446 To 52217: getpychar = "S"
. s$ P. T0 ]6 V( h  J; n            Case 52218 To 52697: getpychar = "T"
: d) M8 f$ D% ^- I7 z. @# K# Z0 l            Case 52698 To 52979: getpychar = "W"
0 F5 s4 B9 ]7 z7 @) d! _            Case 52980 To 53640: getpychar = "X"
, h7 u+ J5 R: b3 J1 K- _# M            Case 53689 To 54480: getpychar = "Y"
' H$ \: l3 M" g9 g9 I            Case 54481 To 55289: getpychar = "Z"
+ {% M$ o7 E  u) O* c! J6 K+ D            Case Else: getpychar = "%"
  a" n. V2 a+ C( H) z. F* w        End Select3 n& i9 ]& k% h: }
    End If
. r& x. w% \5 k9 W1 a4 UEnd Function$ W; v+ W  r/ o. |
Function getpy(str)  [( S- o/ @" A* g5 N' i
Dim i As Long) s" m' K; ~; u
    For i = 1 To Len(str)
# i( |, |( A, m$ Z# L1 D* F        getpy = getpy & getpychar(Mid(str, i, 1))
# P: s. s) l2 K    Next i
; Y: }# M  F, U. w. ZEnd Function
  c  U4 t: u! {3 @
; h" e2 F- H2 @9 o0 `0 T[ 本帖最后由 liangl923 于 2007-11-30 18:03 编辑 ]

setpinyin.rar

1.86 KB, 下载次数: 494

评分

参与人数 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 | 显示全部楼层
噢乖 神人啊 ; {' C$ y6 l# q) F9 T: q
顶了 不管啥中文伴侣
7 \5 u, s, G4 v5 ^' S( q9 U# ]这样的帖子就该支持
 楼主| 发表于 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, 2025-4-22 01:41 , Processed in 0.332865 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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