找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 2364|回复: 10

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

[复制链接]
发表于 2007-11-30 17:49 | 显示全部楼层 |阅读模式
呵呵,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 编辑 ]

setpinyin.rar

1.86 KB, 下载次数: 491

评分

参与人数 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 | 显示全部楼层
噢乖 神人啊 * O$ `( t0 m% M" Z% X' u" w; [' a
顶了 不管啥中文伴侣
- b9 F9 A2 T9 h" c这样的帖子就该支持
 楼主| 发表于 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-3-31 09:17 , Processed in 0.304815 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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