您的位置:首页 > 编程语言 > VB

动态生成多个VBE按钮控件并操作它们的属性

2011-12-23 14:39 471 查看
实现环境:Visual Studio 2010,Excel 2010, VSTO 4.0

Imports Microsoft.Office.Tools.Ribbon
Imports VBE = Microsoft.Vbe.Interop
Imports Forms = Microsoft.Vbe.Interop.Forms

Public Class Ribbon1

Private Sub Ribbon1_Load(ByVal sender As System.Object, ByVal e As  _
RibbonUIEventArgs) Handles MyBase.Load

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As  _
Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles Button1.Click
Dim objApplication As Excel.Application = Globals.ThisAddIn.Application
Dim objWorkbook As Excel.Workbook = objApplication.ActiveWorkbook
Dim objWorksheet As Excel.Worksheet = objWorkbook.ActiveSheet
Dim iButtonNumber As Integer = CInt(EditBox1.Text)
Dim iHeight As Integer = 25
Dim iWeight As Integer = 125
Dim iTop As Integer = 0
Dim iLeft As Integer = 0
Dim objShape As Excel.Shape
Dim objOLEObject As Excel.OLEObject
Dim objCommandButtonControls As CommandButtonControls
For i As Integer = 1 To iButtonNumber Step 1
objShape = objWorksheet.Shapes.AddOLEObject _
("Forms.CommandButton.1", Left:=iLeft, _
Top:=iTop + iHeight * (i - 1), Height:=iHeight, Width:=iWeight)
objShape.Name = "btn" & CStr(i)
objOLEObject = objWorksheet.OLEObjects("btn" & CStr(i))
objCommandButtonControls = New CommandButtonControls _
(objShape.Name, "This is button" & objShape.Name)
objCommandButtonControls.objCommandButton = TryCast _
(objOLEObject.Object, Forms.CommandButton)
objCommandButtonControls.Init()
Next i
End Sub

End Class

Public Class CommandButtonControls
Public WithEvents objCommandButton As Forms.CommandButton
Public Name As String
Public Caption As String

Public Sub New(ByVal Name As String, ByVal Caption As String)
Me.Name = Name
Me.Caption = Caption
End Sub

Public Sub Init()
objCommandButton.Caption = Caption
End Sub

Private Sub objCommandButton_Click() Handles objCommandButton.DblClick
MsgBox(Name & Chr(13) & Caption)
If Name.Equals("btn3") Then
objCommandButton.Font.Bold = True
End If
End Sub
End Class


这似乎是唯一行得通的方法了,因为在Worksheet中我们是没办法操作控件属性的。

相关资源:http://download.csdn.net/detail/tx_officedev/3961969
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: