|
呵呵,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 编辑 ] |
评分
-
查看全部评分
|