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