摘要 对于一个网上销售商,如何获得客户的Email地址,是销售自己产品必不可少的途径。本文笔者通过程序实现了Email地址自动获得的方法,从而避免了枯燥无味的手工查找。
关键词 VB 转换控件 文本控件
1 引言
在当今竞争激烈的社会环境下,一个企业如想处于不败之地,尤其是对于从事销售方面的企业,如何快速地寻找符合自己产品的客户及联系的方式是非常必要的。本文就是根据某个销售商的要求,为了避免员工枯燥无味的手工查找对方Email地址,并且又费时又费力,提出了一种自动获得Email地址的想法,达到既省时又省力的效果,笔者根据该要求设计了一个软件达到了此目的。该软件是用Visual Basic编写的。
2 程序实现
在程序编写之前,员工必须知道符合自己产品的客户的具体网址,这一点有许多种方法可以做到,其中比较有名的是利用Google搜索引擎(88google88),这里假设要获得Email的网址是“88durham-duplex.co.uk/contact.html”。具体程序编写如下:
1)打开VB建立一个新工程(工程1)及一个新窗体(Form1),同时添加“Microsoft Internet Transfer Control 6.0”(Inet1)[利用该控件的OpenURL方法获取HTML源码]和“Microsoft Rich Textbox Control 6.0(SP4)”(RichTextBox1,RichTextBox2)[介绍该控件的文章很多,笔者使用RichTextBox1存放HTML源码,RichTextBox2存放获取的EMail结果。]两个VB自带部件。
2)窗体Form1上手工加入控件RichTextBox1,RichTextBox2,Inet1,Command1(CommandButton控件),Command2。
3)写EMAIL的截取方法,程序代码如下:
Private Sub EMail_Rich(Rich1 As RichTextBox, Rich2 As RichTextBox)
'以下是定义变量,整型变量因为考虑到Email长度会超出Integer型的65535界限,所以使用Long型
Dim EmailStr As String '存放取得的Email地址
Dim Str_Temp1 As String '存放取得的“@”前面的某个字符
Dim Str_Temp2 As String '存放取得的“@”后面的某个字符
Dim Where_Str As Long '存放“@”所在的位置
Dim Where_Str1 As Long '存放“@”前截取字符所在位置
Dim Where_Str2 As Long '存放“@”后截取字符所在位置
Dim Start_Number As Long '存放该EMAIL的长度
Dim Start_Number1 As Long '存放该EMAIL的“@”前的字符数
Dim Start_Number2 As Long '存放该EMAIL的“@”后的字符数
Dim Start_No As Long '存放开始查找“@”的起始位置
Dim Logic_1 As Boolean '存放判断“@”前面字符的条件准则
Dim Logic_2 As Boolean '存放判断“@”后面字符的条件准则
'给变量赋初值
EmailStr = ""
Str_Temp1 = ""
Str_Temp2 = ""
Where_Str = 0
Where_Str1 = 0
Where_Str2 = 0
Start_Number = 0
Start_Number1 = 0
Start_Number2 = 0
Start_No = 1 '一开始当然从第一位开始搜索
Logic_1 = False
Logic_2 = False
'控件初始化
Rich2.Text = "" '先清空控件Rich2中的Text值
'程序开始
Do While 1 = 1 '给一个永远真值的循环,该循环控制整个HTML页
Where_Str = Rich1.Find("@", Start_No) '开始查找第一个“@”位置
If Where_Str <= 0 Then '该值小于等于0代表没有找到
Exit Do '满足了以上条件,说明所有查找结束,退出循环
End If
Where_Str1 = Where_Str '把“@”的位置赋给Where_Str1
Where_Str2 = Where_Str '把“@”的位置赋给Where_Str2Do While 1 = 1 '给一个永远真值的循环,该循环控制一个EMAIL中“@”前面内容
Where_Str1 = Where_Str1 - 1 '逐个对“@”前内容进行比较,该变量控制位置
Rich1.SelStart = Where_Str1 '设置控件Rich1中选择字符串的起始位置
Rich1.SelLength = 1 '设置Rich1中选择字符串的长度,因为是单个比较,所以赋“1”
Str_Temp1 = Rich1.SelText '取得该字符
'根据ASCII码表设置EMAIL字符串的规则,从而取得EMAIL地址,因为太长,所以分断写
Logic_1 = (Asc(Str_Temp1) > 44 And Asc(Str_Temp1) < 47)
Logic_1 = Logic_1 Or (Asc(Str_Temp1) > 47 And Asc(Str_Temp1) < 57)
Logic_1 = Logic_1 Or (Asc(Str_Temp1) > 63 And Asc(Str_Temp1) < 91)
Logic_1 = Logic_1 Or (Asc(Str_Temp1) > 96 And Asc(Str_Temp1) < 123)
If Logic_1 = False Then '如果该字符不规则,说明已经不是Email地址的内容
Exit Do '满足了以上条件,退出循环
End If
Start_Number1 = Start_Number1 + 1 '说明符合规则,需要继续查看下一个字符
Loop
Do While 1 = 1 '该循环与前一个判断“@”前的字符意思相同,不再加入注释
Where_Str2 = Where_Str2 + 1
Rich1.SelStart = Where_Str2
Rich1.SelLength = 1
Str_Temp2 = Rich1.SelText
Logic_2 = (Asc(Str_Temp2) > 44 And Asc(Str_Temp2) < 47)
Logic_2 = Logic_2 Or (Asc(Str_Temp2) > 47 And Asc(Str_Temp2) < 57)
Logic_2 = Logic_2 Or (Asc(Str_Temp2) > 63 And Asc(Str_Temp2) < 91)
Logic_2 = Logic_2 Or (Asc(Str_Temp2) > 96 And Asc(Str_Temp2) < 123)
If Logic_2 = False Then
Exit Do
End If
Start_Number2 = Start_Number2 + 1
Loop
'EMAIL的总长度就是“@”前、后符合规则的字符的长度加上“@”的长度
Start_Number = Start_Number1 + Start_Number2 + 1
Rich1.SelStart = Where_Str1 + 1 '该EMAIL起始位置,正好是“@”前面字符最终位置
Rich1.SelLength = Start_Number '该EMAIL的总长度
EmailStr = Rich1.SelText
Rich2.Text = Rich2.Text & Chr(10) & EmailStr '获得该EMAIL
Start_No = Where_Str + Start_Number2 '继续定义下一重循环要查找“@”的起始位置
'重新初始化一些中间变量
EmailStr = ""
Str_Temp1 = ""
Str_Temp2 = ""
Start_Number = 0
Start_Number1 = 0
Start_Number2 = 0
Loop
End Sub4)再添加如下程序代码来控制程序执行:
Private Sub Command1_Click()
EMail_Rich RichTextBox1, RichTextBox2 '使用3中的方法
End Sub
Private Sub Command2_Click()
End '终止程序
End Sub
Private Sub Form_Load()
'初始化控件
Command1.Caption = "截取"
Command2.Caption = "退出"
'获取网页中的HTML代码,并放到RichTextBox1中
RichTextBox1.Text = Inet1.OpenURL("88durham-duplex.co.uk/contact.html";)
End Sub
3 结束语
以上程序已在VB6.0企业版中通过。通过上面的例子,笔者希望有“抛砖引玉”的功效,让读者在工作中遇到类似问题时得到一些启发。
参考文献
[1] Evangelos Petroutsos . Visual Basic 6 从入门到精通[M].电子工业出版社,1999
[3] 王颖等. ActiveX:从Visual Basic 6.0调用Matlab的实现方法[J].机电工程, 1999, (5)
: 172页
高中各年级课程推荐
|
||||
年级
|
学期
|
课程名称
|
课程试听
|
|
高一 |
高一(上)、(下)同步复习
|
语文 | ||
英语 | ||||
数学 | ||||
数学(期中串讲) | ||||
数学(期末串讲) | ||||
数学拔高 | ||||
物理 | ||||
化学 | ||||
生物(一) | ||||
地理 | ||||
历史 | ||||
政治 | ||||
高中专项突破课
|
语文写作 | |||
英语阅读理解 | ||||
英语写作 | ||||
英语完形填空 | ||||
物理功和能量 | ||||
高二 |
高二(上)、(下)同步复习
|
语文 | ||
英语 | ||||
数学(理) | ||||
数学拔高(理) | ||||
数学(文) | ||||
数学拔高(文) | ||||
物理 | ||||
数学(期中串讲) | ||||
数学(期末串讲)(理) | ||||
数学(期末串讲)(文) | ||||
化学 | ||||
生物(一) | ||||
生物(二) | ||||
生物(三) | ||||
地理 | ||||
历史 | ||||
政治 | ||||
高三 |
高考第一轮复习
|
语文 | ||
英语 | ||||
数学(理) | ||||
数学拔高(理) | ||||
数学(文) | ||||
数学拔高(文) | ||||
物理 | ||||
物理拔高 | ||||
化学 | ||||
生物 | ||||
地理 | ||||
政治 | ||||
历史(韩校版) | ||||
历史(李晓风版) | ||||
高考第二轮复习
|
数学(理) | |||
数学(文) | ||||
英语 | ||||
物理 | ||||
化学 | ||||
地理 | ||||
高考第三轮冲刺串讲
|
语数英串讲(理) | |||
语数英串讲(文) | ||||
物化生串讲 | ||||
史地政串讲 | ||||
高考试题精讲
|
数学(理) | |||
英语 | ||||
化学 | ||||
物理 | ||||
2021高考研究2021高考策略(理) | ||||
2021高考研究2021高考策略(文) | ||||
Copyright © 2005-2020 Ttshopping.Net. All Rights Reserved . |
云南省公安厅:53010303502006 滇ICP备16003680号-9
本网大部分资源来源于会员上传,除本网组织的资源外,版权归原作者所有,如有侵犯版权,请立刻和本网联系并提供证据,本网将在三个工作日内改正。