VBA专题10-14:使用VBA操控Excel界面之在功能区中添加自定义库控件

2021-03-12 16:50:02 浏览数 (1)

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:9. Excel使用VBA操控Excel界面4. 自定义功能区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》,仅供学习研究。

注:如果你有兴趣,你可以到知识星球App的完美Excel社群下载这本书的完整中文版电子书。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

0 人点赞