当前位置:文档之家› WordVBA---ActiveX控件在Word文档中的使用方法

WordVBA---ActiveX控件在Word文档中的使用方法

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 WithEnd Sub也可使用窗体的 Visual Basic Initialize 事件中的代码为窗体上的控件设置初始值。

在 Initialize 事件中设置控件初始值的好处在于,初始化代码将保留在窗体中。

可以将窗体复制到其他项目,并且当运行 Show 方法显示对话框时,将初始化控件。

Private Sub UserForm_Initialize()With UserForm1With .lstRegions.AddItem "North".AddItem "South".AddItem "East".AddItem "West"End With.txtSalesPersonID.Text = "00000"End WithEnd Sub4、控件和对话框事件在向对话框或文档中添加了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 variablesPublic strRegion As StringPublic intSalesPersonID As IntegerPublic blnCancelled As Boolean'Code in formPrivate Sub cmdCancel_Click()Module1.blnCancelled = TrueUnload MeEnd SubPrivate Sub cmdOK_Click()'Save dataintSalesPersonID = txtSalesPersonID.TextstrRegion = lstRegions.List(lstRegions.ListIndex)Module1.blnCancelled = FalseUnload MeEnd SubPrivate Sub UserForm_Initialize()Module1.blnCancelled = TrueEnd Sub'Code in module to display formSub LaunchSalesPersonForm()frmSalesPeople.ShowIf blnCancelled = True ThenMsgBox "Operation Cancelled!", vbExclamationElseMsgBox "The Salesperson's ID is: " & _intSalesPersonID & _"The Region is: " & strRegionEnd IfEnd 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 - 1End SubPrivate Sub SpinButton1_SpinUp()Me.TextBox1.Value = Me.TextBox1.Value + 1End Sub下面的 Click 事件过程可切换到页面视图,并将名为"cmdChangeView"的命令按钮所在文档的缩放比例设为 100%。

Private Sub cmdChangeView_Click()With Me.ActiveWindow.View.Type = wdPrintView.Zoom.Percentage = 100 End WithEnd Sub。

相关主题