表单对象的提交与反馈

交互设计

  【分享成果,随喜正能量】修学务早,及其精专,习与性成,不异自然也。值得我们用一生去学习的,就是学习什么该做,什么不该做,在自己心中画个圈,干了出圈的事情,伤害的是自己。。 《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。 教程共两册,八十四讲。今日的内容是专题八“VBA与HTML文档”:表单对象的提交与反馈 第七节 HTML DOM的对象事件及关联 HTML DOM 允许 JavaScript(脚本语言) 对 HTML 事件作出反应,当事件发生时,如当用户点击一个 HTML 元素时,可以执行 JavaScript。一般来讲这些事件包括: 用户点击鼠标时;网页已加载;图片已加载;鼠标移动到元素上;输入字段被改变;HTML 表单被提交;用户触发按键 在我的第五套教程《VBA中类的解读及应用》中我非常系统的讲解了事件的含义,事件主要是对象的响应,我们这节就几个实例给出几个对象的常用响应有的是事件本身,有的是相关的操作。 1 表单对象的提交与反馈 表单form对象,有一个方法比较重要,就是submit,这个方法提供了表单的提交的动作。如果我们捕捉页面的提交按钮非常困难时,有时候只要对表单,执行submit方法,表单也是可以提交的,不需去点击提交按钮。 表单控件,是文本输入类控件,最常用就是value的属性了,通过这个属性,可以往文本框里面添加文本。 单选框、复选框,常用的是checked属性,如果为true就是被选中了,或者直接使用click方法也行。 下拉列表,如果是单选列表框,可通过selectedIndex属性去设置选中项(下拉选项,从1开始编号,如2就是选择下拉列表的第二个选项),也可以通过value属性,直接把value指定为要选定的option的value即可,但多选列表框不可用这两个属性。另外,所有类别的列表框,都可以通过其内含对象集合options(),设置某个options(x)的selected属性为true,来设置选中项。 还是以百度首页为示例,我们用程序模拟键入查询数据“VBA代码解决方案”,然后提交查询,在网页中看看查询的结果: Sub MYNZB() '在百度首页,提交表单 Dim ie, dmt, fm Set ie = CreateObject("InternetExplorer.Application") '创建一个IE对象 With ie .Visible = True '显示它 .navigate "http://www.baidu.com" '加载某个页面 Do Until .ReadyState = 4 '等待页面加载完毕 DoEvents Loop Set dmt = .document '将IE浏览器加载的页面文档,赋予dmt变量 Set fm = dmt.forms("f") '用表单的名称f,捕捉表单对象 dmt.all("kw").Value = "VBA代码解决方案" '用搜索栏的id"kw"捕捉它,并键入VBA代码解决方案 dmt.all.tags("input")(3).Click '用"百度一下"按钮的input索引号捕捉它,并模拟按钮的点击 'fm.submit '模拟表单的提交,不一定要click End With End Sub 代码截图: 网页返回的结果: 2 Table 对象数据的获取 表格对象,也是我们提取网页数据,最常打交道的对象了。其内含rows对象集合,可以使我们访问表格内的每行,每个row对象还内含cells对象集合,使我们可以访问其每行的每个单元格,读取每个单元格的innertext属性即可获取我们所需每个单元格的文本。 另外,常用的属性还有length,这个类似我们VBA里面的count,都是返回某个对象的数量。 如下面代码是提取实时股票涨跌的代码: Sub MYNZC() Sheets("Sheet1").Select Cells.Clear Dim ie, dmt, tb, i&, j& Set ie = CreateObject("InternetExplorer.Application") '创建一个IE对象 With ie '.Visible = True '显示它 .navigate "http://vip.stock.finance.sina.com.cn/mkt/#hqIndex" '加载某个页面 Do Until .ReadyState = 4 '等待页面加载完毕 DoEvents Loop Set dmt = .document '将IE浏览器加载的页面文档,赋予dmt变量 Set tb = dmt.all.tags("table")(4) '通过索引号捕捉表格对象 For i = 0 To tb.Rows.Length - 1 '历遍其每个行 For j = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i + 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next End With End Sub 代码截图: 返回的结果: 4 图片images对象地址的获取 为了提取网页中的图片,我们需要这个图片的链接,我们看看下面的代码: Sub MYNZD() Dim ie, dmt Set ie = CreateObject("InternetExplorer.Application") '创建一个IE对象 With ie .Visible = True '显示它 .navigate "https://baijiahao.baidu.com/s?id=1633425158454774294" '加载某个页面 Do Until .ReadyState = 4 '等待页面加载完毕 DoEvents Loop Set dmt = .document '将IE浏览器加载的页面文档,赋予dmt变量 Debug.Print dmt.images(1).src '读取图片的URL End With End Sub 代码截图: 5 Anchor 对象 文档中 <a> 标签每出现一次,就会创建 Anchor 对象。这个就没啥好示例的了,href属性返回被链接的URL,click可以模拟超链接被点击了。 这节涉及到的内容较多,希望大家在 的基础上修正代码加以使用。 本节知识点回向: 如何提交表单?如何下载图片的地址?如何获得表的数据? 本节参考文件:008工作表.xlsm 我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序: 【分享成果,随喜正能量】在外的好脾气,是为人的圆滑,让你收获好人缘;在家的好脾气,是最贵的修养,让你你收获最好的幸福!。

标签: 交互设计