整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

如何零基础学习VBA—HtmlDlgSafeHelp

如何零基础学习VBA—HtmlDlgSafeHelper对象

头条创作挑战赛# HtmlDlgSafeHelper对象是一种VBA中的辅助对象,用于在Excel中处理HTML对话框。它提供了一些方法和属性,可以帮助您在VBA代码中与HTML对话框进行交互。例如,您可以使用HtmlDlgSafeHelper对象的"document"属性来访问HTML对话框中的文档对象模型(DOM),并使用"submitForm"方法提交表单数据。

以下是6个代码实例,演示了HtmlDlgSafeHelper对象的使用:

1、获取HTML对话框中的文本框值:

Dim htmlDlg As Object
Dim htmlDoc As Object
Dim htmlHelper As Object

Set htmlDlg=CreateObject("htmlfile")
htmlDlg.body.innerHTML="<input type='text' id='myTextBox' value='Hello World!' />"

Set htmlHelper=CreateObject("MSHTML.HtmlDlgSafeHelper")
Set htmlDoc=htmlHelper.GetDocumentFromWindow(htmlDlg.parentWindow)

Dim textBoxValue As String
textBoxValue=htmlDoc.getElementById("myTextBox").value

MsgBox textBoxValue ' 显示 "Hello World!"

2、在HTML对话框中执行JavaScript:

Dim htmlDlg As Object
Dim htmlDoc As Object
Dim htmlHelper As Object

Set htmlDlg=CreateObject("htmlfile")
htmlDlg.body.innerHTML="<script>function sayHello() { alert('Hello!'); }</script><button onclick='sayHello()'>Say Hello</button>"

Set htmlHelper=CreateObject("MSHTML.HtmlDlgSafeHelper")
Set htmlDoc=htmlHelper.GetDocumentFromWindow(htmlDlg.parentWindow)

htmlDoc.parentWindow.execScript "sayHello();", "JavaScript"

3、在HTML对话框中设置下拉列表选项:

Dim htmlDlg As Object
Dim htmlDoc As Object
Dim htmlHelper As Object

Set htmlDlg=CreateObject("htmlfile")
htmlDlg.body.innerHTML="<select id='mySelect'><option value='1'>One</option><option value='2'>Two</option><option value='3'>Three</option></select>"

Set htmlHelper=CreateObject("MSHTML.HtmlDlgSafeHelper")
Set htmlDoc=htmlHelper.GetDocumentFromWindow(htmlDlg.parentWindow)

Dim selectElement As Object
Set selectElement=htmlDoc.getElementById("mySelect")

selectElement.selectedIndex=1 ' 选择第二个选项

4、在HTML对话框中提交表单数据:

Dim htmlDlg As Object
Dim htmlDoc As Object
Dim htmlHelper As Object

Set htmlDlg=CreateObject("htmlfile")
htmlDlg.body.innerHTML="<form id='myForm' action='http://www.example.com/submit' method='post'><input type='text' name='userName' value='John Doe' /><input type='submit' /></form>"

Set htmlHelper=CreateObject("MSHTML.HtmlDlgSafeHelper")
Set htmlDoc=htmlHelper.GetDocumentFromWindow(htmlDlg.parentWindow)

Dim formElement As Object
Set formElement=htmlDoc.getElementById("myForm")

htmlHelper.submitForm formElement, True ' 提交表单并显示结果页面

5、在HTML对话框中取消表单提交:

Dim htmlDlg As Object
Dim htmlDoc As Object
Dim htmlHelper As Object

Set htmlDlg=CreateObject("htmlfile")
htmlDlg.body.innerHTML="<form id='myForm' action='http://www.example.com/submit' method='post'><input type='text' name='userName' value='John Doe' /><input type='submit' /></form>"

Set htmlHelper=CreateObject("MSHTML.HtmlDlgSafeHelper")
Set htmlDoc=htmlHelper.GetDocumentFromWindow(htmlDlg.parentWindow)

Dim formElement As Object
Set formElement=htmlDoc.getElementById("myForm")

Dim eventObj As Object
Set eventObj=htmlDoc.createEventObject()
eventObj.returnValue=False

htmlHelper.submitForm formElement, False, eventObj ' 取消表单提交并阻止页面跳转

6、在HTML对话框中关闭窗口:

Dim htmlDlg As Object
Dim htmlDoc As Object
Dim htmlHelper As Object

Set htmlDlg=CreateObject("htmlfile")
htmlDlg.body.innerHTML="<button onclick='window.close();'>Close Window</button>"

Set htmlHelper=CreateObject("MSHTML.HtmlDlgSafeHelper")
Set htmlDoc=htmlHelper.GetDocumentFromWindow(htmlDlg.parentWindow)

htmlDoc.parentWindow.close()

在使用HtmlDlgSafeHelper对象时,需要注意以下几点:

1、要使用HtmlDlgSafeHelper对象,必须首先创建一个htmlfile对象,并将HTML代码分配给其body.innerHTML属性。

2、要访问HTML对话框中的文档对象模型(DOM),可以使用HtmlDlgSafeHelper对象的GetDocumentFromWindow方法。

3、在访问HTML对话框中的元素时,需要使用文档对象模型(DOM)的相关方法和属性。

4、如果要执行JavaScript代码,可以使用文档对象模型(DOM)的parentWindow.execScript方法。

5、如果要提交表单数据,可以使用HtmlDlgSafeHelper对象的submitForm方法。

6、HtmlDlgSafeHelper对象只能用于与HTML对话框交互,不能用于与Web页面交互。

7、HtmlDlgSafeHelper对象只能在Windows操作系统上使用。

据类型Object

Object是JavaScript的一种 数据类型 。它用于存储各种键值集合和更复杂的实体,Objects 可以通过Object()构造函数或者使用对象字面量的方式创建。

Object的属性:

Object.prototype.constructor,创建实例对象的Object构造函数的引用。

Object的方法:

Object.assign(),方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。

Object.defineProperties(),方法直接在一个对象上定义新的属性或修改现有属性,并返回该对象。

Object.defineProperty(),方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。

Object.keys(),方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致 。

Object.entries(),方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用for...in循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的属性)。

Object.freeze(),方法可以冻结一个对象。

官方地址:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object

代码案例

bject是英语中的一个单词,基本意思是“物体,实物;目的,目标;宾语;(引发某种情感或行为的)对象;客体;(计算机)对象”,因此在程序员的概念里,Object就是对象的含义,但是这个对象在后端开发语言、前端开发语言都有不同的特性和用途。

Object之所以会在前后端语言的广泛的应用,关键还是面向对象的编程思想的普及,现阶段的程序员编程基本都是采用面向对象的思想,而Object就是计算机体系中采用的对象的英语单词。

Java是面向对象的编程语言

面向对象编程思想

面向对象的编程思想是在计算机编程语言发展历史上的一次革命性的创新,是对面向过程的编程思想的升级,推动了编程向逻辑更加复杂、代码数量更加庞大的系统软件的工程化、模块化,推动了编程应用的领域更加的广泛和普及。

面向过程更注重于编程的一次性的逻辑,简单明了;面向对象的思想中每一个对象更像是一个人,由多个对象相互协助,共同地完成一个系统的任务,而不是单一的逻辑任务。就像是一个创业团队,做什么不重要,重要的是团队形成之后,做什么都可以成功。

面向对象的思想是对现实世界的理解和抽象的一种方式,是计算机发展到一定阶段的产物,而且已经远远超过了计算机编程本身,而是在很多其他领域也有很大影响和应用。

面向对象有四大特性,一是唯一性,每一个对象都具有唯一的标识;二是封装性,隐藏对象的属性和方法,对外提供统一的接口访问方式,修改内部逻辑不影响对外的访问方式,可复用,高安全;三是继承,子类可以继承父类的属性和方法,并且可以继续扩展属性和方法;四是多态,父类的方法,通过子类的重写可以改变执行的逻辑和结果。

Object在Java语言中的应用

Object类是Java类层次结构的根类。每个类都有Object作为超类。所有对象,包括数组,都实现了这个类的方法。Object类提供了一些最基本的属性和方法,下面介绍最核心的几个方法:

public final native Class<?> getClass();
public native int hashCode();
public boolean equals(Object obj) {return (this==obj);}
protected native Object clone() throws CloneNotSupportedException;
public String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());}
public final native void notify();
public final native void notifyAll();
public final native void wait(long timeout) throws InterruptedException;
protected void finalize() throws Throwable { }

其中native表示是此方法并非Java语言实现的,而是由C语言等,提供Java语言调用的方法。

Object在JavaScript语言中的应用

JavaScript语言是前端页面的脚本语言,也采用了面向对象的思想,而Object是JavaScript语言的一个对象类型,几乎所有的JavaScript对象都是Object类型的。

语法格式:

new Object([value])

举例:

var student=new Object();
student.grade=1;
student.name="xiaolin";
student.age=7;

总结

Object首先是一个英文单词,有其具体的含义,而面向对象的思想选择其为对象的含义,是面向对象思想的主要承载的单词。伴随着面向对象思想的发展、普及,应用在不同的编程语言,应用于不同的领域,Object单词也随着面向对象思想的推广而在不同的领域去使用,而使用的场景和特性也有所不同。