127 播放Flash文件 如果需要在工作表中播放Flash文件,那么可以使用ShockwaveFlash控件。 步骤1,在工作表中单击菜单“视图”→“工具栏”→“控件工具箱”→“其他控件”,选择“ShocKwave Flash Object”后在工作表中拖动添加ShockwaveFlash控件。 如果“其他控件”中没有该控件,请参阅▲126 对其进行注册,ShockwaveFlash控件的文件名为Flash9d.OCX。 步骤2,在设计模式下右键单击ShockwaveFlash控件,选择“属性”,设置ShockwaveFlash控件的Base属性和Movie属性为Flash文件所在的路径,设置Embedmovie属性为True,使Flash文件嵌入到Excel中。 可以使用代码设置ShockwaveFlash控件的各项属性,如下面的代码所示。 Private Sub Workbook_Open() WithSheet1.ShockwaveFlash1 .Base = ThisWorkbook.Path & '\face.swf' .Movie = ThisWorkbook.Path &'\face.swf' .EmbedMovie = True EndWith End Sub 代码解析: 工作簿打开时将ShockwaveFlash控件的Base属性和Movie属性设置为同一目录中的“face.swf”文件,设置Embedmovie属性为True。 退出设计模式后,将在工作表中显示Flash动画。
▲128 在工作表中添加窗体控件 在工作表中添加窗体控件,除了使用手工添加外,还可以使用代码添加,方法如下: 128-1 使用AddFormControl方法 使用AddFormControl方法在工作表中添加窗体控件,如下面的代码所示。 Sub AddFormControls() DimmyShape As Shape On ErrorResume Next Sheet1.Shapes('myButton').Delete SetmyShape = Sheet1.Shapes.AddFormControl(0,108,72,108,27) WithmyShape .Name = 'myButton' With .TextFrame.Characters .Font.ColorIndex = 3 .Font.Size = 12 .Text = '新建的按钮' End With .OnAction = 'myButton' EndWith End Sub Sub myButton() MsgBox'这是使用AddFormControl方法新建的按钮!' End Sub 代码解析: AddFormControls过程使用AddFormControl方法在工作表中添加窗体控件。 第3、4行代码为了避免在工作表中重复添加按钮控件,先删除工作表中的“myButton”按钮。 第5行代码,使用AddFormControl方法在工作表中添加命令按钮控件并设置控件的坐标和大小。应用于Shapes对象的AddFormContl方法创建一个Microsoft Excel控件,返回一个Shape对象,该对象代表新建的控件,语法如下: expression.AddFormControl(Type,Left,Top,Width,Height) 参数expression是必需的,一个有效的对象。 参数Type是必需的,MicrosoftExcel控件类型,可以为表格所列XlFormControl 常量之一。 参数Left是必需的,新对象的初始坐标(以磅为单位)相对于工作表 A1 单元格的左上角或图表的左上角。 参数Top是必需的,新对象的初始坐标(以磅为单位)相对于工作表 A1 单元格的左上角或图表的左上角。 参数Width是必需的,以磅为单位的新对象的初始大小。 参数Height是必需的,以磅为单位的新对象的初始大小。 第7行代码将新添加的按钮名称设置为“myButton”。 第8行到第12行代码设置新添加的按钮文字设置为“新建的按钮”,并设置文字的大小和颜色。 第13行代码,指定新添加按钮所执行的宏名称。 myButton过程是单击新添加按钮所执行的过程,显示一个消息框。 运行AddFormControls过程将在工作表中添加一个命令按钮,单击按钮显示一个消息框。 128-2 使用Add方法 在工作表中添加窗体控件还可以使用Add方法,如下面的代码所示。 Sub AddChartObjects() DimmyButton As Button On ErrorResume Next Sheet1.Shapes('myButton').Delete SetmyButton = Sheet1.Buttons.Add(108,72,108,27) WithmyButton .Name = 'myButton' .Font.Size = 12 .Font.ColorIndex = 5 .Characters.Text = '新建的按钮' .OnAction = 'myButton' EndWith End Sub Sub myButton() MsgBox'这是使用Add方法新建的按钮!' End Sub 代码解析: AddChartObjects过程使用Add方法在工作表中添加窗体控件。 第3、4行代码为了避免在工作表中重复添加按钮控件,先删除工作表中的“myButton”按钮。 第5行代码,使用Add方法在工作表中添加命令按钮控件,Add方法适用于ChartObjects对象的语法如下: expression.Add(Left,Top,Width,Height) 参数expression是必需的,该表达式返回一个ChartObjects对象。 如果需要在工作表中添加其他窗体控件,可以将参数expression设置为表格所示的ChartObjects对象之一。 参数Left和Top是必需的,以磅为单位给出新对象的初始坐标,该坐标是相对于工作表上单元格 A1 的左上角或图表的左上角的坐标。 参数Width和参数Height是必需的,以磅为单位给出新对象的初始大小。 第7行代码将新添加的按钮的名称设置为“myButton”。 第8行到第10代码新添加的按钮的文字设置为“新建的按钮”并设置文字的大小和颜色。 第11行代码,指定新添加命令按钮所执行的宏名称。 myButton过程是单击新添加按钮所执行的过程,显示一个消息框。 运行AddChartObjects过程将在工作表中添加一个命令按钮,单击按钮显示一个消息框。
▲129 在工作表中添加ActiveX控件 ▲128 中使用代码在工作表中添加的是窗体控件,而本例中使用代码在工作表中添加的是ActiveX控件,两者是有区别的,在工作表中前者是使用窗体对话框添加,而后者是使用控件工具箱添加。 129-1 使用Add方法 使用Add方法在工作表中添加ActiveX控件,如下面的代码所示。 Sub AddObj() DimObj As New OLEObject On ErrorResume Next Sheet1.OLEObjects('MyButton').Delete SetObj = Sheet1.OLEObjects.Add(ClassType:='Forms.CommandButton.1',_ Left:=108,Top:=72,Width:=108,Height:=27) WithObj .Name = 'MyButton' .Object.Caption = '新建的按钮' .Object.Font.Size = 16 .Object.ForeColor = &HFF& EndWith WithActiveWorkbook.VBProject.VBComponents(Sheet1.CodeName).CodeModule If .Lines(1,1) <> 'Option Explicit' Then .InsertLines 1,'Option Explicit' End If If .Lines(2,1) = 'Private Sub MyButton_Click()' Then ExitSub .InsertLines 2,'Private Sub MyButton_Click()' .InsertLines 3,vbTab & 'MsgBox ““这是使用Add方法新建的按钮!”“' .InsertLines 4,'End Sub' EndWith End Sub 代码解析: AddOLEObject过程使用Add方法在向工作表中添加ActiveX控件中的命令按钮和相应的代码。 第3、4行代码为了避免在工作表中重复添加按钮控件,先删除工作表中的名称为“myButton”的按钮。 第5、6行代码,使用Add方法在向工作表中添加ActiveX控件中的命令按钮,Add方法应用于OLEObjects 对象的语法如下: expression.Add(ClassType,FileName,Link,DisplayAsIcon,IconFileName,IconIndex,IconLabel,Left,Top,Width,Height) 其中参数expression是必需的,返回一个 OLEObjects 对象。 参数ClassType是可选的,创建的对象的程序标识符。如果指定了 ClassType参数,则忽略FileName参数和Link参数。 在本例中指定添加控件的程序标识符为“Forms.CommandButton.1”,即命令按钮控件,关于对象的程序标识符请参阅▲119-3。 参数Left和参数Top是必需的,以磅为单位给出新对象的初始坐标,该坐标是相对于工作表上单元格 A1 的左上角或图表的左上角的坐标。 参数Width和参数Height是可选的,以磅为单位给出OLE对象的初始大小。 第8行代码,设置命令按钮的名称为“MyButton”。 第9行代码,设置命令按钮的文字为“新建的按钮” 第10行代码,设置命令按钮的文字的大小。 第11行代码,设置命令按钮的文字的颜色。 第13行到第21行代码,在工作表中写入新添加的命令按钮的单击事件代码。 ActiveX控件不能像窗体控件用OnAction属性来指定宏,需要使用CodeModule对象的InsertLines方法在工作表中插入代码。 应用于CodeModule对象的InsertLines方法的语法如下: object.InsertLines(line,code) 参数object是必需的,一个有效的对象。 参数line是必需的,用来指定要插入代码的位置。 参数code是必需的,要插入的代码。 第14行到第16行代码判断首行内容是否为要求变量声明,如不是则添加要求变量声明语句。 第17行到第20行代码判断是否已存在相同名称的过程,如不存在则使用InsertLines方法在工作表中插入代码。 运行AddOLEObject过程,将在工作表中添加一个命令按钮和相应的代码,单击按钮显示一个消息框。 129-2 使用AddOLEObject方法 在工作表中添加ActiveX控件,还可以使用AddOLEObject方法,如下面的代码所示。 Sub AddShapes() DimShpBut As Shape On ErrorResume Next Sheet1.OLEObjects('MyButton').Delete SetShpBut = Sheet1.Shapes.AddOLEObject(ClassType:='Forms.CommandButton.1',_ Left:=108,Top:=72,Width:=108,Height:=27) ShpBut.Name = 'MyButton' WithActiveWorkbook.VBProject.VBComponents(Sheet1.CodeName).CodeModule If .Lines(1,1) <> 'Option Explicit' Then .InsertLines 1,'Option Explicit' End If If .Lines(2,1) = 'Private Sub MyButton_Click()' Then ExitSub .InsertLines 2,'Private Sub MyButton_Click()' .InsertLines 3,vbTab & 'MsgBox ““这是使用AddOLEObject方法新建的按钮!”“' .InsertLines 4,'End Sub' EndWith End Sub 代码解析: AddShapes过程使用AddOLEObject方法在向工作表中添加ActiveX控件中的命令按钮和相应的代码。 第5、6行代码,使用AddOLEObject方法在向工作表中添加ActiveX控件中的命令按钮,AddOLEObject方法创建OLE对象,语法如下: expression.AddOLEObject(ClassType,FileName,Link,DisplayAsIcon,IconFileName,IconIndex,IconLabel,Left,Top,Width,Height) AddOLEObject方法参数与Add方法类似,请参阅▲129-1。 运行AddShapes过程,将在工作表中添加一个命令按钮和相应的代码,单击按钮显示一个消息框。
▲130 |
|