这是我的第一篇博客,在平时的实践中会遇到很多问题,百度起来的知识总是特别零碎。建立这个博客的目的就是想总结自己解决各类问题时候遇到的困难,以及解决的办法,方便自己,也方便他人。
面向人群:
没有完整技术支持的中型单位管理者,需要快捷获取联系人信息。
主要功能:
1, 给联系人快速添加已有头像
2, 在联系人名下快速存入丰富信息
3, 跨平台跨终端快速同步
工具:
微软outlook组件,拥有邮箱账户同步功能的智能手机
步骤:
1, 将所需要的信息,按顺序存入到excel里,另存为csv格式
2, 打开outlook——文件——导入和导出——从另一程序或文件导入——下一步——逗号分隔的值(Windows)——下一步——浏览(选择文件)——下一步——导入
3, 点击alt+F11,进入宏编辑模式,输入代码
1 Public Sub UpdateContactPhoto() 2 3 Dim myOlApp As Outlook.Application 4 5 Dim myNamespace As Outlook.NameSpace 6 7 Dim myContacts As Outlook.Items 8 9 Dim myItems As Outlook.Items 10 11 Dim myItem As Object 12 13 Set myOlApp = CreateObject("Outlook.Application") 14 15 Set myNamespace = myOlApp.GetNamespace("MAPI") 16 17 Set myContacts = myNamespace.GetDefaultFolder(olFolderContacts).Items 18 19 20 21 Dim fs As Object 22 23 Set fs = CreateObject("Scripting.FileSystemObject") 24 25 For Each myItem In myContacts 26 27 If (myItem.Class = olContact) Then 28 29 Dim myContact As Outlook.ContactItem 30 31 Set myContact = myItem 32 33 34 35 Dim strPhoto As String 36 37 strPhoto = "C:\photos\" & myContact.Categories & ".jpg" 38 39 If fs.FileExists(strPhoto) Then 40 41 myContact.AddPicture strPhoto 42 43 myContact.Save 44 45 End If 46 47 End If 48 49 Next 50 51 End Sub
将上述代码中的红色部分改成你需要映射的照片名所对应的outlook属性字段,例如:你在csv中将和照片名字一样的那一列映射到了“公司”这一个属性上,那么你现在就应该将红色字体部分更改为CompanyName。最后点击F5就完成了照片的匹配。
4, 登陆outlook账户,ctrl+A选中所有本地联系人,粘贴到outlook账户的联系人中,根据网络情况等待五到十分钟,在手机本地“邮件“应用中登陆outlook账户,稍等片刻,手机中就会出现你已经同步好的联系人了。
注意事项:
1, csv是以逗号为分隔符的通讯录格式,可以方便地导入到outlook,并同步到邮箱账户里,每次保存时,会将所有文本格式的数据改为默认格式,因此每次修改保存之前必须将“学号”重新粘贴,否则结果会产生错误。并且保存时,会提示两到三次,均同意即可。
2, 在第一次打开outlook时,一定要选择第二种手动创建,不要登陆outlook网络账户,因为存在exchange协议问题。所有导入要在本地账户里进行,搞好以后,再登陆网络账户,全选,复制粘贴到网络账户。
3, 在导入csv时,最后一步要记得手动映射,将csv的各个项目映射到outlook的专有属性上,否则会出现因为名称不一致而导入失败的情况。
4, 注意上文代码中匹配的盘符地址,参照本代码,一定要将以学号(或其他可以对应的属性,如名字)命名的文件所在的文件夹命名为photos,保存在C盘根目录下。也可以有其他的地址或方法。
5, Outlook里的代码是VBA代码,具体使用方法请参考百度。
6, 手机端登陆邮箱账户后,iOS和WP均可自动完美同步所有信息,Android平台依具体厂商而定。
参考资料:
1,outlook如何导入csv_百度知道
2,教你outlook批量添加联系人图片! - HTC Radar论坛 Windows 10 Phone论坛|智机网|WP|WP10论坛
http://www.wpxap.com/thread-346913-1-1.html
3,Outlook 字段和等同属性
https://msdn.microsoft.com/zh-cn/library/ff868508.aspx
心得体会:
这次操作我在半年多前就有所准备,当时产生这个想法的原因,是我曾经使用word的邮件功能将所有人的照片和宿舍信息聚合在一起,整理出来了三百多个人的宿舍信息卡,这个东西做出来以后很炫酷,也让我第一次真正意义上感受到office套件的强大。而使用VBA解决问题,启发来源于综合测评时候使用的核对系统,确实减少了不少人力,伴随着专业知识的学习和编程能力的提高,我对于VBA的了解也更加深刻,现在再来看这些VBA编码,学习效率高了很多。
回归正题,通讯录导入手机的解决方案还是相对成熟和方便的,但是市面上缺少相关的应用软件可以一次性将照片和信息关联起来导入手机。解决这一问题,通过我不断地百度和自身的经验,outlook软件是一个重大的转折点。它是office套件中的一个主要用来管理联系人、收发邮件、处理日程等功能的软件,专业版支持强大的VBA编程,这是国产WPS类软件所不具备的,也是我钦佩微软这家真正在做研究的对人类文明发展做出巨大贡献的公司的原因之一。在我之前的认知范围以内,我并不了解横跨所有平台的邮件客户端所存在的意义,它所能带来的,不仅是*地收发邮件,还能同步邮箱中的联系人至手机通讯录中,将日程提醒添加到手机自带日历app里,它就是手机里面的一个账户(类似于小米云服务账户、flyme账户等),非常方便,我惊叹于这种非凡的设定。Outlook联系人同步至账户以后,任何平台的移动终端都可以方便地获取以上三种信息,iOS版本的邮件支持更加完整,有选择是否同步这三项内容。
半年多前的寻找解决方案的历程早已忘记,而这次实现的过程充满心酸。本来可以半小时搞定的东西,因为种种不熟悉硬是耗费了我接近两天一晚的时间。
首先是忘记了csv导入时不可以使用outlook在线账户,应该先导入本地账户,全选后再复制粘贴到在线账户中,这个问题直到第二天中午才发现。让我一度怀疑我的电脑出了问题,通过换电脑,换软件平台(使用qq同步助手等工具修改csv格式等),换字段等,当天夜里搞到一点多接近放弃。
其次是属性丢失,outlook本身自带很多属性,使用字段对照表,在VBA代码中很容易将各个属性对应到手机中各个栏目中,使得信息展现更加全面(例如学号,家庭住址等),然而各个平台的差异使得最后的表现结果不尽如人意,哪怕是outlook软件自身,有很多属性是无法直接显示的。魅族自己优化过的flyme我很想吐槽一下,属性的设置比wp和iOS麻烦就不说了,相比同是安卓的MIUI也少了很多项目,因此我只能一个一个地调试,使得所有信息都能完整直观地显示出来,这条路又走了半天。
最后是一些小问题,比如同步过程由于网络问题部分照片丢失,只能全部删除重新同步,删除也有延迟,新旧覆盖(flyme)困惑了我很久,一度以为又是属性的问题,后来发现iOS上的显示是两条,这才了解。最后再吐槽flyme的搜索联系人有点反人类,只能拨打第一条电话,不像其他(MIUI)搜索后可以很方便地搜索需要拨打的电话,这里的主要用途就是短号,解决办法就是将短号和联通电信号码存在“手机”属性,将移动长号存在“手机2”属性。
技术的实现,由于可参照的模板和技术文档的存在,变得相对需求而言更加容易一些。在不断地和自己的粗心大意、强迫症作斗争的过程中,我也收获了完成一个小工程应该具备的心态和方法。最后的结果是相对满意的。后期还需要改进的就是和其他软件或者flyme、MIUI的同步,以及安全性的问题。Outlook和VBA实在高深莫测,但是我有很大的兴趣去探索,加油!