|
呵呵,treo的联系人查找一直是我的心病,我那么多联系人难道要一个一个改拼音么!!最近对outlook的宏研究的比较多,所以,研究了1天做出了自动把firstname(名字) 的汉字自动转化为拼音加入到 lastname(姓氏)字段中去。 自己用了下,感觉还是比较好用的!当然这么好的东西,要与吹友吧的同仁一起分享了 哈哈哈哈0 k& U5 n8 q: t; D. [3 m% U0 c
+ Q7 e" \+ }% G0 q! t9 |. o& P
7 \% I9 o$ e0 @ a/ U! s: Q% K N. e& A! |" I/ V
有些生字无法转化出来,显示为“%”号,但是个人感觉不多,自己稍微改动下就好了。其实由于代码比较简单,所以只能照顾到常用字。有高手也可以把代码修改下,把拼音转化的部分增强。
$ U+ s% [, i+ m- m" p9 \
* D. x3 Z u8 D; R7 H8 @使用环境: outlook2007[支持vba] 其他没有试过 我觉得03应该没问题- ]- P |* k n% s3 u
修改vba运行权限: 工具》信任中心》宏安全性》不执行宏安全性检查 {用完后再改回系统默认}; k5 X% }2 T* p4 w3 ]2 s! B5 e% j
4 _: @2 y. Z) ^ Z, Y
使用方法: 先用treo和outlook同步7 u& E g% Y5 W6 R7 U6 l
工具》宏》vb编辑器 》新建模块 拷入代码F5运行就好了
6 E1 L# x6 a" @
- D" T0 f! V; [; F* m$ L3 }& R! v5 c5 W: Z s5 X8 J9 c5 _
代码
/ a5 {+ y6 h! M* R6 s: G, _ L/ cOption Explicit8 H1 R. h: b1 R6 ?
Sub setpinyin()& B: b2 a3 z3 A1 [
Dim myolApp As New Outlook.Application0 }) U) ~/ q$ a1 X4 D m
Dim myNamespace As Outlook.NameSpace
" z6 s. S; B3 U3 z Dim myAddresslists As Outlook.folder
5 Q* L" b: k- l0 F3 Z7 F Dim AddressList As Outlook.AddressList; m7 D& J% D* z7 S
Dim item2 V: d# s' e! c5 O8 G
Dim temp1, temp2' H; c7 t C/ z9 s/ d# p
' B8 l. O9 V+ ?
Set myNamespace = myolApp.GetNamespace("MAPI")! N. \" d; }: P9 {7 @' _$ m
Set myAddresslists = myNamespace.GetDefaultFolder(olFolderContacts)! J/ e0 ]& p/ K; U9 M
' Set myolApp = myNamespace.GetDefaultFolder(olFolderInbox)
4 w; A: \% n% I4 X For Each item In myAddresslists.Items! |" H) U9 D% O. N8 w1 v
'temp1 = item.LastName & " " & item.FirstName* G/ B0 H1 T- Y5 h
3 W/ y5 Q1 o0 @" A* k1 y/ H B* W: x
If item.LastName = "" Then! R; s V* v2 Z- }- G/ C
item.LastName = LCase(getpy(item.FirstName))
) w! n0 r2 c: e& w3 l& Y& J' {" ]& R item.Save
' E0 [4 `: p: m2 |2 C+ n P# ~ Debug.Print item.LastName# p5 ~2 d `" d
( j( u) m( |4 d6 y! Z* q
'MsgBox item.LastName5 w! W' a: X: E4 K% B
* z( ~% ] F. ~
End If0 y. A3 t3 D" c; t
7 `( |. ]1 o8 A O; i
Next; r8 K# @9 G; p! i0 s2 E; D
End Sub
5 x- J" l8 O5 t; y( d H9 y8 T% o; O
Function getpychar(char) As String% p' k2 q6 {6 O- e8 W
On Error Resume Next
9 F- L, ~7 a9 Z7 H3 ? Dim tmp As String, vs1 As String; L' o( h5 G7 ]# M
/ \# {. ?# c R0 k( ]3 t
If Asc(char) >= 0 And Asc(char) <= 127 Then$ B% I/ x5 I5 C, H
If char >= "a" And char <= "z" Then* k" F* O# E7 ~. H$ Y( J8 i4 H
getpychar = Chr(Asc(char) - 32)* D) }6 C6 N$ R& t1 r
ElseIf char >= "A" And char <= "Z" Then' h2 i* a+ \0 g& m3 j) F- ?' [; h
getpychar = char' g1 t* S2 u( h
Else
( U1 j8 Y' E6 I4 Y- F3 z' H '如果是空格,排除
/ O4 h* P1 {" C2 u' x3 r If Asc(char) = 32 Then
- m5 K7 l* p _# M' b# v getpychar = ""
! x2 |( l* H: s5 M Else- M$ i+ c2 m8 ?9 @9 R
', E5 V% v3 E( l! J5 G8 t# A4 C% X$ ^
getpychar = char+ e4 |! n9 B4 m9 V
End If
" {: I6 e: A6 F5 Z( X7 H. C B* T End If8 b. a7 X0 L4 E9 X* Q
Else
+ J+ o! E* S' g& u, {+ R4 Y! z0 _9 {" X tmp = 65536 + Asc(char)" o0 J! h2 S8 K( y
Select Case tmp5 o* P8 r0 y3 A% O" Z4 g/ S1 k' | f+ ^
Case 45217 To 45252: getpychar = "A"4 p) D, l- X) N# v- V% A) ]9 |' I, q
Case 45253 To 45760: getpychar = "B"
" V; ]" t. j8 c) ~ Case 45761 To 46317: getpychar = "C"4 W' I: U0 S' d. X5 K$ h
Case 46318 To 46825: getpychar = "D"
# T/ k; I0 `' x' ?6 Y' ?/ S Case 46826 To 47009: getpychar = "E"6 ~' \6 ^' N7 M
Case 47010 To 47296: getpychar = "F"; C: _$ k5 P, ^6 h# i' f
Case 47297 To 47613: getpychar = "G"
3 t8 k' `( {* {% n" [2 l- x Case 47614 To 48118: getpychar = "H"6 [& ?) Z( S" ^: D
Case 48119 To 49061: getpychar = "J"
Y4 L. Q' |0 I7 ^ Case 49062 To 49323: getpychar = "K"' f/ X6 o. e) I F) u/ V
Case 49324 To 49895: getpychar = "L"+ h1 v& @9 ` \; u2 W& l
Case 49896 To 50370: getpychar = "M"
" n- ~2 ]0 a) l7 Z1 | Case 50371 To 50613: getpychar = "N"; H* B+ ^: Y+ M3 c5 q* m
Case 50614 To 50621: getpychar = "O"6 b! q" L1 e2 c) x# X5 w; c
Case 50622 To 50905: getpychar = "P"9 a# ^' R/ ^7 }2 j
Case 50906 To 51386: getpychar = "Q"0 d! Y- ?$ x* R7 G# [& Z% h
Case 51387 To 51445: getpychar = "R"
; K5 m. A" I( K. h# R: a0 U/ c Case 51446 To 52217: getpychar = "S"
6 w% L8 H, R' k0 Z. V" u9 ] k8 a Case 52218 To 52697: getpychar = "T") G( ]! Y( ^, t6 l. U2 B
Case 52698 To 52979: getpychar = "W". h& z4 h5 e+ }& U
Case 52980 To 53640: getpychar = "X"+ D, {% I$ x7 @8 M1 |+ K
Case 53689 To 54480: getpychar = "Y"
z, R7 ]3 ~2 Y, K Case 54481 To 55289: getpychar = "Z"
6 v. Z Y. Z% @# ?$ B2 H: t Case Else: getpychar = "%"% A2 v5 r% B8 g7 n7 K
End Select. ?+ T' x& ^. B& o7 J5 ~5 t
End If/ { v! g. s2 f1 i1 P
End Function
6 q3 ~6 d4 b% U8 P8 ~6 jFunction getpy(str)
4 Z0 v% s# { N/ M0 ^5 O: hDim i As Long
) G* a3 O% V* }0 ^ For i = 1 To Len(str)
d5 w* I8 O: j getpy = getpy & getpychar(Mid(str, i, 1))) K8 \" Y9 Q- A" N5 L0 b. t
Next i
0 R9 y" q) w. q9 QEnd Function
. e. ?( r9 v) u% p& I
# v4 ?" t$ q( O8 ^[ 本帖最后由 liangl923 于 2007-11-30 18:03 编辑 ] |
评分
-
查看全部评分
|