WordVBA---ActiveX控件在Word文档中的使用方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WordVBA---ActiveX控件在Word文档中的使用方法
当您想要提供一种完善的方式让用户与宏直接进行交互、而不受对话框干扰的时候,可以向文档直接添加ActiveX控件,这如同可以向自定义对话框添加 ActiveX 控件一样。
使用以下过程可以将 ActiveX 控件添加到您的文档。
1、向文档中添加控件
您可以向文档的图形层或文本图层添加ActiveX 控件。
★向图形层添加控件:单击控件工具箱上的控件。
拖动控件的调整控点,直到控件的轮
廓大小和形状符合要求。
★向文本层添加控件:请在按住 SHIFT 键的同时单击控件工具箱上的控件。
该控件将
自动添加到文档中的插入点。
注释:
将一个控件(或一组控件)从窗体拖回"控件工具箱",即可创建一个可重复使用的该控件的模板。
这是一个非常有用的功能,能为用户实现标准的应用程序界面。
2、设置控件属性
在设计阶段(宏运行之前)可以设置一些 ActiveX 控件的属性。
在设计模式中,右键
单击一个控件并单击右键菜单中的"属性"以显示"属性"窗口。
属性名称显示在窗口的左
栏,而属性值显示在右栏。
可在属性名称的右边输入新值来设置该属性的值。
3、初始化控件属性
您可以通过在宏中使用 Visual Basic 代码在运行时初始化ActiveX 控件。
例如,您
可在其中填充列表框中,设置文本值或设置选项按钮。
以下示例使用 Visual Basic 的 AddItem 方法将数据添至名为 lstRegions 的列表框,然后设置文本框的值并显示窗体。
Private Sub GetUserName()
With UserForm1
.lstRegions.AddItem "North"
.lstRegions.AddItem "South"
.lstRegions.AddItem "East"
.lstRegions.AddItem "West"
.txtSalesPersonID.Text = "00000"
.Show
' ...
End With
End Sub
也可使用窗体的 Visual Basic Initialize 事件中的代码为窗体上的控件设置初始值。
在 Initialize 事件中设置控件初始值的好处在于,初始化代码将保留在窗体中。
可以将窗体复制到其他项目,并且当运行 Show 方法显示对话框时,将初始化控件。
Private Sub UserForm_Initialize()
With UserForm1
With .lstRegions
.AddItem "North"
.AddItem "South"
.AddItem "East"
.AddItem "West"
End With
.txtSalesPersonID.Text = "00000"
End With
End Sub
4、控件和对话框事件
在向对话框或文档中添加了ActiveX 控件后,应添加事件过程以决定控件如何响应用户操作。
用户窗体和控件有一系列预定义的事件。
例如,命令按钮具有 Click 事件,在用户单击命令按钮时,该事件发生,用户窗体具有 Initialize 事件,在加载窗体时,该事件运行。
要编写控件或窗体的事件过程,可双击窗体或控件打开一个模块,然后从"过程"下拉列表框中选择事件。
事件过程包含控件名称。
例如,名为 Command1 的命令按钮的 Click 事件过程名称为Command1_Click。
如果为事件过程添加代码后更改该控件的名称,这些代码仍保留使用原名称的过程中。
例如,假定您为 Commmand1 的 Click 事件添加代码,然后将该控件重命名为 Command2。
在双击 Command2 时,将不会在 Click 事件过程中看到任何代码。
您需要将代码从Command1_Click 移动至 Command2_Click。
为了简化开发过程,最好在编写代码之前命名控件。
5、运行代码时使用控件值
当运行 Visual Basic 代码时,您可以为ActiveX 控件设置并返回某些属性。
下面的示例设置文本框中的Text属性为"Hello"。
TextBox1.Text = "Hello"
关闭窗体时,用户输入窗体中的数据将会丢失。
如果卸载窗体后返回窗体上控件的值,则获得控件的初始值而不是用户输入的值。
若要保存输入窗体中的数据,可在窗体运行时将信息保存到模块级的变量中。
以下示例显示一个窗体,并在卸载窗体前用公共变量保存窗体数据。
'Code in module to declare public variables
Public strRegion As String
Public intSalesPersonID As Integer
Public blnCancelled As Boolean
'Code in form
Private Sub cmdCancel_Click()
Module1.blnCancelled = True
Unload Me
End Sub
Private Sub cmdOK_Click()
'Save data
intSalesPersonID = txtSalesPersonID.Text
strRegion = lstRegions.List(lstRegions.ListIndex)
Module1.blnCancelled = False
Unload Me
End Sub
Private Sub UserForm_Initialize()
Module1.blnCancelled = True
End Sub
'Code in module to display form
Sub LaunchSalesPersonForm()
frmSalesPeople.Show
If blnCancelled = True Then
MsgBox "Operation Cancelled!", vbExclamation
Else
MsgBox "The Salesperson's ID is: " & _
intSalesPersonID & _
"The Region is: " & strRegion
End If
End Sub
当控件被添加到文档之后就能创建可交互的文档,例如联机窗体。
在文档中使用控件时需要注意以下几点:
•可以对文本图层或文档的图形层添加 ActiveX 控件。
若要向图形层添加控件,请单击控件工具箱上的控件。
若要向文本层添加控件,请在按住 SHIFT 键的同时单击控件工具箱上的控件。
•向文本层添加控件是一个InlineShape对象,可以通过InlineShapes集合以编程方式访问的。
向图形层添加控件是一个Shape对象,可以通过Shapes集合以编程方式访问的。
•文本层中的控件被视为字符,可以像字符那样置于文本的某一行中。
•在设计模式下,绘图层中的 ActiveX 控件只能在页面视图或 Web 版式视图中显示。
•如果希望用户能够使用 ActiveX 控件但又不改变文档的版式,可通过单击"窗体"工具栏上的"保护窗体"按钮来保护文档。
•Microsoft Word 实施文档中ActiveX 控件的LostFocus和GotFocus事件。
在过程下拉列表框中列出的其他事件都记录在 Microsoft 窗体帮助。
•若要向文档添加窗体域而非 ActiveX 控件,以创建联机窗体,请使用"窗体"工具栏。
•文档中 ActiveX 控件的事件过程中的 Me 关键字引用的是文档而不是控件。
编写文档控件的事件代码与编写窗体控件的事件代码很相似。
下面的 SpinUp 和SpinDown 事件过程改变了包含名为"SpinButton1"的旋转按钮控件的文档中名为"TextBox1"的文本框控件的值。
当用户单击下面或左侧的旋转按钮箭头时,文本框控件的值将减 1;当用户单击上面或右侧的旋转按钮箭头时,该值将加 1。
Private Sub SpinButton1_SpinDown()
Me.TextBox1.Value = Me.TextBox1.Value - 1
End Sub
Private Sub SpinButton1_SpinUp()
Me.TextBox1.Value = Me.TextBox1.Value + 1
End Sub
下面的 Click 事件过程可切换到页面视图,并将名为"cmdChangeView"的命令按钮所在文档的缩放比例设为 100%。
Private Sub cmdChangeView_Click()
With Me.ActiveWindow.View
.Type = wdPrintView
.Zoom.Percentage = 100 End With
End Sub。