VBA专题10-14:使用VBA操控Excel界面之在功能区中添加自定义库控件
excelperfect
在自定义功能区时,我们可以插入图像到自定义库中,图像文件的类型可以是ico、bmp、png、jpg和tif。
要给自定义功能区选项卡添加库控件,执行下列步骤:
1. 创建一个新工作簿,并将其保存为启用宏的工作簿。
2. 关闭该工作簿,然后在Custom UI Editor中打开该工作簿。
3. 在Custom UI Editor中,选择Insert | Office 2007 Custom UI Part。
如果选择Office 2010 Custom UI Part,只需使用下列代码替换xmlns属性的命名空间:
<customUI xmlns='http://schemas.microsoft.com/office/2009/07/customui'>
4. 选择Insert | Icons,显示“Insert Custom Icons”对话框。
5. 查找并选择你想要的图像文件,并单击打开。
该图像文件的副本被插入,删除原始文件不影响插入的文件。
注意:在图像文件的文件名中避免使用空字符,否则不能正确地引用文件。
6. 如果需要,可右击在Custom UI Editor中插入的图像来改变其ID。如图1所示。
图1
7. 复制并粘贴下列XML代码:
在item元素中:
image属性的值是插入的图像的ID,如上面的图1所示。
id属性的值不必与插入的图像的ID相同,可以是任意独立的唯一文本字符串。
8. 单击工具栏中的Validation按钮检查是否XML代码有错误。
9. 单击工具栏中的Generate Callbacks按钮。
onAction回调属性生成一个回调过程,下面是该回调的签名:
'Callback for gallery1 onAction
Sub SelectedColor(control As IRibbonControl, id As String, index As Integer)
End Sub
复制该回调,稍后粘贴到工作簿的标准VBA模块中。
10. 保存并关闭文件。
11. 在Excel中打开该文件。
12. 按Alt+F11键激活VBE。
13. 插入一个标准的VBA模块,并粘贴在步骤9中复制的回调代码。
14. 在过程中添加一个MsgBox语句来测试控件。
'Callback for gallery1 onAction
Sub SelectedColor(control As IRibbonControl, id As String, index As Integer)
MsgBox '你选择的是' & id
End Sub
下图2展示了在Custom选项卡中出现在库控件中的项:
图2
代替上述第4步和第5步中手工插入图像,可以通过使用VBA过程使用相同的图像填充库。通过赋VBA过程的名称到loadImage回调属性来实现。下面列出了XML代码和VBA代码:
当打开该工作簿时,执行LoadImage过程。
VBA过程如下:
'Callback for customUI.loadImage
Sub LoadImage(imageID As String, ByRef returnedVal)
Set returnedVal = LoadPicture('I:\09. Excel\使用VBA操控Excel界面\04. 自定义功能区\13\' & imageID)
'msgbox ImageName
End Sub
该过程遍历XML代码中的每个item元素,查找图像的文件名并获取图像装载到库控件。可以包括MsgBox语句来看看该过程是如何遍历每个元素项的。
(注意,我试着使用png图像但没有成功。)
'Callback for gallery1 onAction
Sub SelectedColor(control As IRibbonControl, id As String, index As Integer)
MsgBox '你选择的是' & id
End Sub
说明:本专题系列大部分内容学习整理自《Dissect and Learn Excel VBA in 24 Hours:Changing workbook appearance》,仅供学习研究。