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
联系客服