找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 2298|回复: 10

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

[复制链接]
发表于 2007-11-30 17:49 | 显示全部楼层 |阅读模式
呵呵,treo的联系人查找一直是我的心病,我那么多联系人难道要一个一个改拼音么!!最近对outlook的宏研究的比较多,所以,研究了1天做出了自动把firstname(名字) 的汉字自动转化为拼音加入到 lastname(姓氏)字段中去。 自己用了下,感觉还是比较好用的!当然这么好的东西,要与吹友吧的同仁一起分享了  哈哈哈哈
! }% ?7 Q# Q' L$ M4 e& g& f; B- v" G5 D& C- b

7 }( |5 q) C8 c& N$ ]# M
( ]; a1 t: H2 z0 D0 L有些生字无法转化出来,显示为“%”号,但是个人感觉不多,自己稍微改动下就好了。其实由于代码比较简单,所以只能照顾到常用字。有高手也可以把代码修改下,把拼音转化的部分增强。
1 ]- W- ^- C; V6 l
: @, V6 y5 h* B使用环境: outlook2007[支持vba]   其他没有试过 我觉得03应该没问题4 t) P9 a0 P4 k7 L' r0 c# f: c
                   修改vba运行权限: 工具》信任中心》宏安全性》不执行宏安全性检查  {用完后再改回系统默认}
0 V9 n- r% b* k) n% [0 e; x( V& b9 k: G3 f6 H' @
使用方法: 先用treo和outlook同步; e6 ?/ x: P! [$ k2 @: p
                  工具》宏》vb编辑器   》新建模块  拷入代码F5运行就好了  
9 O1 S2 i# {; j$ |
/ B% a2 p: h+ ^' [7 Z0 [
8 ~# a1 B) K  ?代码
3 A8 S+ K3 G6 Q* z4 }Option Explicit& B" \6 B, t) T: G
Sub setpinyin()
3 o5 c! M! M0 ]( `    Dim myolApp As New Outlook.Application
/ w, R' `% L2 }% B# Y/ j0 n" P    Dim myNamespace As Outlook.NameSpace
9 [; Y1 r1 o) q* G' f7 V- ~    Dim myAddresslists As Outlook.folder3 O. h6 N& M' U* P0 S7 c! Y
    Dim AddressList As Outlook.AddressList6 z; e$ V* H3 b/ f( i# }+ u; H
    Dim item
+ z: Y; `! Q& [    Dim temp1, temp23 Z/ N, [' q, x  J1 H; X' Y3 o
      ?2 |( d  o- R" V+ U
    Set myNamespace = myolApp.GetNamespace("MAPI")# V: l( D! @$ Y9 p1 k
    Set myAddresslists = myNamespace.GetDefaultFolder(olFolderContacts)
2 R/ m- d9 Z# h. q9 W0 `   ' Set myolApp = myNamespace.GetDefaultFolder(olFolderInbox)
' ]. C9 a8 o& q/ f    For Each item In myAddresslists.Items0 g. i/ }% R) `  u( v: [2 W  ~, n
   'temp1 = item.LastName & " " & item.FirstName
! a: L* e5 |8 d* b7 l0 n   
$ B8 Z$ j' o+ M2 Y5 l+ g7 C   If item.LastName = "" Then  D8 q: h1 v; v: Y5 o
            item.LastName = LCase(getpy(item.FirstName)): _8 s& A3 U; K$ j& p& i
            item.Save
- N0 z8 h) }/ E9 J6 w            Debug.Print item.LastName6 c1 Q' h8 @8 A! Q3 V* S2 J- y1 o6 ]
            
  O) ~* B! B9 }8 Q5 `   'MsgBox item.LastName0 y: x  P$ g4 ~# [8 r
   ! L) o3 ?# \* v8 G* {. a; b8 K' {
   End If
# o7 o1 L$ c- ^9 j$ J  N. k0 w   
5 \- ]- _! B) O3 z    Next
  H0 r4 h9 t& U0 F' {( h9 h/ CEnd Sub& M+ M: G0 k+ |" X# Q

! L3 h* F5 x6 i% NFunction getpychar(char) As String
0 ~: Y0 z5 J" Q: V    On Error Resume Next
8 V+ g, F$ \+ X- E1 L2 N2 p7 \& E    Dim tmp As String, vs1 As String( _+ |$ H4 N* n, g2 c6 w
   
% {0 l+ q, w+ {8 ~    If Asc(char) >= 0 And Asc(char) <= 127 Then4 ~. `& m& [7 u0 d( O8 ^- s& \
        If char >= "a" And char <= "z" Then
9 {( ?8 M% s/ _7 C. H* {" \            getpychar = Chr(Asc(char) - 32)
0 y( I" x8 D+ U) {( ?6 F        ElseIf char >= "A" And char <= "Z" Then& ]  Z0 Y  N$ l4 `3 N+ B
            getpychar = char; S6 {2 g) _' m% J+ O7 ]
        Else6 ]6 s$ V/ R- g0 C* ^9 t1 T$ N5 s
            '如果是空格,排除
- J. s4 W9 e: Q            If Asc(char) = 32 Then
0 g/ _. I& }8 i  a: T* P               getpychar = ""6 s, j! I% d# g; [% Q1 e
            Else% z/ u  E4 g. d
            '
2 s+ Y' y/ ?. u+ S# T' P: Y2 x/ G                getpychar = char
/ T3 k& `0 {& e3 Z2 B9 a. H6 b            End If
! x1 Q" z" |# P1 u5 J3 J+ \        End If
4 i4 s: r: `! q; R( `    Else$ r" ^8 j8 O9 E8 L) l
        tmp = 65536 + Asc(char)/ I/ W1 l8 v% r7 e
        Select Case tmp: c& l( f$ q+ t8 V" a6 y8 u
            Case 45217 To 45252: getpychar = "A". ]4 T- v; ]3 s8 _7 I$ B
            Case 45253 To 45760: getpychar = "B"7 t' C) Z3 z; W5 j. \" z
            Case 45761 To 46317: getpychar = "C"& l7 s; ?- J& k) w
            Case 46318 To 46825: getpychar = "D"  O0 o3 O+ C7 \7 K- k# b
            Case 46826 To 47009: getpychar = "E"$ {* I! n5 a& c
            Case 47010 To 47296: getpychar = "F"$ a5 t. k, v& }; T
            Case 47297 To 47613: getpychar = "G"
: C2 @( M. M0 {; H            Case 47614 To 48118: getpychar = "H"% G" z- K+ ^: H6 W: a( e
            Case 48119 To 49061: getpychar = "J"
" M% n& f/ j# o6 d: q$ M            Case 49062 To 49323: getpychar = "K"0 Q$ n4 K6 m5 h+ E' E9 ?
            Case 49324 To 49895: getpychar = "L", m) H) V5 g4 V9 L* M* \$ k. X
            Case 49896 To 50370: getpychar = "M"7 y+ k, V1 ]1 j' m* H+ H
            Case 50371 To 50613: getpychar = "N") I9 \  E1 C% Y  y! ]
            Case 50614 To 50621: getpychar = "O"( {0 C+ V6 G# \5 e! ~! I
            Case 50622 To 50905: getpychar = "P"# L: M" I9 B/ |8 W0 H
            Case 50906 To 51386: getpychar = "Q"
3 a. B$ y! Q  |* c. u            Case 51387 To 51445: getpychar = "R"
. G: R- _, f6 ]; Y% b8 i% @            Case 51446 To 52217: getpychar = "S"" K! _/ h% W; ?! ]" w
            Case 52218 To 52697: getpychar = "T"
$ \& J7 y  U( ?# s            Case 52698 To 52979: getpychar = "W"
* ^/ i& \' e# U  s) X5 q7 m            Case 52980 To 53640: getpychar = "X"# T$ ?9 e) l( h# R8 e' q
            Case 53689 To 54480: getpychar = "Y"
. u( C) e; d8 r4 q9 N            Case 54481 To 55289: getpychar = "Z"- I$ H- i6 w5 o
            Case Else: getpychar = "%"
; y% |( Z$ G+ E        End Select
$ e: ]' Y8 L. V" `" X0 s$ H* M    End If5 [. h. s6 C$ ~
End Function2 L* v  b- v  {  D% g! `5 k
Function getpy(str)% n  \- ~1 ~( d, m1 L1 G5 F, I  j
Dim i As Long
  Y6 I7 i7 ~2 G    For i = 1 To Len(str)
4 G1 J8 z$ a7 ]' y1 {* x2 F- ]        getpy = getpy & getpychar(Mid(str, i, 1))) D/ _. R) D' z* L) S( V
    Next i
6 }' f0 @6 u3 V  z0 L5 L7 e$ tEnd Function
  }1 L2 f; `5 k, J* a1 A  c# B
3 |7 ?4 i$ n1 B0 s) N0 b( ?( X[ 本帖最后由 liangl923 于 2007-11-30 18:03 编辑 ]

setpinyin.rar

1.86 KB, 下载次数: 470

评分

参与人数 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 | 显示全部楼层
噢乖 神人啊   X0 F7 i+ z4 w, C# h
顶了 不管啥中文伴侣$ f9 [% x( d) n9 o7 {; ^- j
这样的帖子就该支持
 楼主| 发表于 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-2-19 06:29 , Processed in 0.341809 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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