信息时代,手机已经成为人们最方便、快捷、常用的沟通渠道。登记的准客户信息中有时就只有手机号码,这个号码填写正确吗?客户的工作单位和常住地在哪里?手机号码可以透露很多信息,手机号码所在地在哪里?需要输入电话号码还是上网逐个查询?不用,Excel功能强大,用几行VBA代码,就可以在Excel工作表中直接获取手机号码所在地及运营商类型。
操作思路:
1、获取Excel工作表单元格中的电话号码,判断电话号码长度是否为11位,如果不是11位,则电话号码错误(我认为手机号码都是11位,如有错误,请自行修改判断条件);
2、判断电话号码是否全为数字,如果不是,则手机号错误(此操作只判断手机号,座机号不在查询范围内,如果需要查询座机号,请自行修改判断条件);
3、选择查询手机号所在地的网站,一定要选择不需要填写验证码的网站,否则查询失败(本次选择的网站只能查询手机号,不能查询座机号);
4、向网站发送包含电话号码的消息,并接收网站返回的信息。向网站发送电话号码后返回的信息如下(摘录):
5、将返回的信息拆分打包成数组,选取手机号运营商类型和所在地对应的数组,将数组信息放入手机号对应的D、E两个case中。
6.如果手机号错误或者其他原因导致无法查询到位置和运营商类型,则返回信息对应的数组是英文和符号的字符串。编写方法判断指定数组中是否有汉字,如果没有汉字则表示没有查询到相关信息。手机号对应的示例D和E分别输入为“未查询到运营商类型”和“未查询到电话号码位置,请核实输入的电话号码是否正确”。
“电话信息”工作表标题的屏幕截图:
代码如下:
Public Function StrLen(str As String) As Integer '判断输入的电话号码的长度
StrLen = Len(str)
结束函数
Public Function CheckNumber(StrNumb As String) As Boolean '检查输入的电话号码是否为数字
检查号码 = IsNumeric(字符串号码)
结束函数
Function WrongTh(str) As Integer '判断是否是汉字
Ifstr Like "*[一-龥]*" Then
错误= 1
别的
错误= 0
万一
结束函数
Public Function getIE() '互联网查询方法
Dimurl 作为字符串
Dimi 作为替身
Dimj 作为整数
Dimstr,str1 作为字符串
DimAlength 为 Long
DimstrReturn 作为字符串
DimArr() 作为字符串
DimPhoneNumb 作为字符串
DimCRowscount 作为整数
OnError 继续下一步
CRowscount= [C1].End(xlDown).Row '计算 C 列的行数
Sheets("手机信息").Cells(1,4) = "运营商类型"
Sheets("电话信息").Cells(1,5) = "电话号码位置"
Fori = 2 至 CRowscount
PhoneNumb = Sheets("电话信息").Cells(i, 3).Value '获取指定单元格的电话号码
如果StrLen(PhoneNumb)= 11并且CheckNumber(PhoneNumb)= True则
url= "" & PhoneNumb & "__shouji/" '打开网页,可以选择相应网页查询电话号码所在地
WithCreateObject(“WinHttp.WinHttpRequest.5.1”)
.Open"GET", url, False
。发送
strReturn = .responseText
结尾
ReDimArr(Len(strReturn))
Arr = Split(strReturn) '将返回值拆分成数组
Alength = UBound(Arr()) - LBound(Arr()) + 1
IfWrongTh(Arr(41)) * WrongTh(Arr(42)) * WrongTh(Arr(43)) = 1 Then '经计算,数组第41、42、43位分别为运营商类型(移动、联通、电信)、所在省份和城市。
Sheets("电话信息").Cells(i,4) = Arr(41)
Sheets("电话信息").Cells(i,5) = Arr(42) & Arr(43)
别的
Sheets("电话信息").Cells(i,4) = "未找到运营商类型"
Sheets("电话信息").Cells(i,5) = "未找到电话号码所在地。请验证输入的电话号码是否正确。"
万一
万一
下一个
结束函数
代码截图:
运行效果截图: