ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

EH搜索     
EH云课堂-专业的职场技能充电站 Excel转在线管理系统,怎么做看这里 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 EH云课堂直播课程免费学 打造核心竞争力的职场宝典
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 5642|回复: 10

[分享] EXCEL通讯录 导入手机联系人

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-5-22 21:55 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:模板和开源系统
自用多年的很实用的代码,稍微整理一下开起来更加简洁

作用生成VCF 文件 两种格式 1种是用于 360手机助手的(其他的手机助手也许通用,没测试过)
1种是 存入手机TF卡中,用手机的文件浏览器找到点击自动导入的
格式支持4个电话 一个邮箱,一个地址,一个分组信息,对于大多数人来说足够用了

贴个代码放这,注视中也有一些说明
  1. Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByVal lpDefaultChar As Long, ByVal lpUsedDefaultChar As Long) As Long
  2. Function VbStrToMultiByte(VbStr As String) As Byte()
  3.     Dim bufSize As Long
  4.     Dim arr() As Byte
  5.     bufSize = WideCharToMultiByte(65001, 0&, StrPtr(VbStr), Len(VbStr), 0, 0, 0, 0)
  6.     ReDim arr(bufSize - 1)
  7.     WideCharToMultiByte 65001, 0&, StrPtr(VbStr), Len(VbStr), arr(0), bufSize, 0, 0
  8.     VbStrToMultiByte = arr
  9.     '这几行代码以及上述API所起到的作用就是 手工另存为 UTF-8格式
  10. End Function

  11. Sub toANSI()                           '360助手 安卓系统 ANSI格式通过手机助手导入
  12.     Dim s As String, b() As Byte, b1() As Byte, s1 As String

  13.        For i = 2 To 6 '从第二行开始到第六行,根据实际情况修改

  14.         s1 = s1 & "BEGIN:VCARD" & vbCrLf & "VERSION:3.0" & vbCrLf
  15.         s1 = s1 & "CATEGORIES:" & Cells(i, 8) & vbCrLf
  16.         s1 = s1 & "N:" & Cells(i, 1) & vbCrLf
  17.         s1 = s1 & "TEL;TYPE=CELL:" & Cells(i, 2) & vbCrLf
  18.         s1 = s1 & "TEL;TYPE=CELL:" & Cells(i, 3) & vbCrLf
  19.         s1 = s1 & "TEL;TYPE=WORK:" & Cells(i, 4) & vbCrLf
  20.         s1 = s1 & "TEL;TYPE=HOME:" & Cells(i, 5) & vbCrLf
  21.         s1 = s1 & "EMAIL;TYPE=PREF:" & Cells(i, 6) & vbCrLf
  22.         s1 = s1 & "ADR;TYPE=WORK:" & Cells(i, 7) & vbCrLf
  23.         s1 = s1 & "END:VCARD" & vbCrLf
  24.     Next
  25.     b1 = StrConv(s1, 128)
  26.     s = "c:\360手机助手导入.vcf"
  27.     If Dir(s) <> "" Then Kill s
  28.     Open s For Binary As 1
  29.     Put 1, , b1
  30.     Close
  31. MsgBox s

  32. End Sub
  33. Sub toUTH8()   '' 安卓系统 Utf-8格式,直接存在手机卡中导入
  34.     Dim s As String, b() As Byte, b1() As Byte, s1 As String
  35.     For i = 2 To 6 '从第二行开始到第六行,根据实际情况修改

  36.         s1 = s1 & "BEGIN:VCARD" & vbCrLf & "VERSION:3.0" & vbCrLf
  37.         s1 = s1 & "CATEGORIES:" & Cells(i, 8) & vbCrLf '分组信息,某些机型会忽略此项,如果重要最好用手机助手导入
  38.         s1 = s1 & "N:" & Cells(i, 1) & vbCrLf
  39.         s1 = s1 & "TEL;TYPE=CELL:" & Cells(i, 2) & vbCrLf
  40.         s1 = s1 & "TEL;TYPE=CELL:" & Cells(i, 3) & vbCrLf
  41.         s1 = s1 & "TEL;TYPE=WORK:" & Cells(i, 4) & vbCrLf
  42.         s1 = s1 & "TEL;TYPE=HOME:" & Cells(i, 5) & vbCrLf
  43.         s1 = s1 & "EMAIL;TYPE=PREF:" & Cells(i, 6) & vbCrLf
  44.         s1 = s1 & "ADR;TYPE=WORK:" & Cells(i, 7) & vbCrLf
  45.         s1 = s1 & "END:VCARD" & vbCrLf
  46.     Next
  47.     b1 = VbStrToMultiByte(s1)  '
  48.     '所有语句都相同,只是在这里进行格式转换 ,相当于手工另存为UTF-8格式

  49.     s = "c:\直接存在手机卡中导入.vcf"
  50.     If Dir(s) <> "" Then Kill s
  51.     Open s For Binary As 1
  52.     Put 1, , b1
  53.     Close
  54. MsgBox s

  55. End Sub
复制代码




手机联系人.rar (9.79 KB, 下载次数: 529)

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-5-22 21:58 | 显示全部楼层
忘了说,这个代码是基于 安卓系统的,其他系统的没试过,有实验成功其他系统的请说一下

TA的精华主题

TA的得分主题

发表于 2013-6-24 21:26 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-7-24 16:53 | 显示全部楼层
留名,我也做了一个类似的。正想发呢。修整下再发来。。

TA的精华主题

TA的得分主题

发表于 2013-10-10 20:39 | 显示全部楼层
你好,我用了这个代码,用你的文档测试没问题,但是我复制代码到其他文档会发现无法控制控制名片输出我指定的那个表,我不希望他输出sheet1这个表,请问在哪里可以自定义这个表,谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-10 22:11 | 显示全部楼层
llfccc 发表于 2013-10-10 20:39
你好,我用了这个代码,用你的文档测试没问题,但是我复制代码到其他文档会发现无法控制控制名片输出我指定 ...

你把全部代码复制到你希望要的表的代码窗口中就行了

TA的精华主题

TA的得分主题

发表于 2013-10-10 22:13 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-10-15 16:39 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-10-15 17:16 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-1-27 23:59 | 显示全部楼层
ldy 发表于 2013-10-10 22:11
你把全部代码复制到你希望要的表的代码窗口中就行了

版主,能帮忙看一下我这个如何能实现http://club.excelhome.net/thread-1091513-1-1.html
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

关注官方微信,高效办公专列,每天发车

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2019-10-17 04:08 , Processed in 0.065550 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2020 Wooffice Inc.

   

沪公网安备 31011702000001号 沪ICP备11019229号

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:徐怀玉律师 李志群律师

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