前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA实用小程序48: 确保工作簿已装载必需的外部加载宏

VBA实用小程序48: 确保工作簿已装载必需的外部加载宏

作者头像
fanjy
发布2019-07-19 14:28:49
7850
发布2019-07-19 14:28:49
举报
文章被收录于专栏:完美Excel

学习Excel技术,关注微信公众号:

excelperfect

如果你的Excel应用程序依赖于外部加载项(例如分析工具库或规划求解加载项),那么必须确保在运行应用程序之前加载了该加载项。

Rob Bovey提供了一个通用函数,该函数将确定当前是否加载了指定的加载项。如果还没有加载该加载项,则尝试加载它。如果成功加载该加载项,则函数返回True,否则,如果加载不成功,则返回False。这样,允许你优雅地处理用户计算机上未安装所需加载项的情况。

下面是这个通用函数的代码:

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

''' 说明: 检查是否装载了指定的加载项

''' 如果没有,则试图装载该加载项

'''

''' 参数: szAddInWorkbook 加载项工作簿名.例如,对于Excel 2007或

''' 更高版本,规划求解加载项是SOLVER.XLAM.

''' szAddInName 出现在加载项对话框列表中的加载项名.

''' 例如,规划求解加载项

'''

''' 返回值:Boolean 如果该加载项已装载或者通过本程序已装载

''' 则返回True.

''' 如果该加载项没有被装载,则返回False.

'''

''' 作者: Rob Bovey

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Public Function bLoadAddIn(ByRef szAddInWorkbook As String, _

ByRef szAddInName AsString) As Boolean

Dim wkbAddIn As Excel.Workbook

''' 看加载项是否已安装.

Set wkbAddIn = Nothing

On Error Resume Next

Set wkbAddIn =Application.Workbooks(szAddInWorkbook)

On Error GoTo 0

If wkbAddIn Is Nothing Then

''' 如果加载项没有安装,试图安装它.

On Error Resume Next

''' 如果已在加载项列表中选择了需要加载的加载项(如规划求解加载项),

''' 除非切换了Installed属性,否则不会打开其工作簿.

Application.AddIns(szAddInName).Installed = False

Application.AddIns(szAddInName).Installed = True

Set wkbAddIn =Application.Workbooks(szAddInWorkbook)

On Error GoTo 0

''' 如果此时未装载该加载项,失败并退出.

If wkbAddIn Is Nothing Then

bLoadAddIn = False

Else

bLoadAddIn = True

End If

Else

''' 该加载项已安装并加载.

bLoadAddIn = True

End If

End Function

下面是测试程序:

Public Sub DemoLoadAddIn()

Dim szAddInWorkbook As String

If Application.Version < 12 Then

szAddInWorkbook ="SOLVER.XLA"

Else

szAddInWorkbook ="SOLVER.XLAM"

End If

''' 试图安装规划求解加载项.

IfbLoadAddIn(szAddInWorkbook, "规划求解加载项") Then

MsgBox "规划求解加载项已装载.", vbInformation, "装载加载项演示"

Else

''' 在真实开发的应用程序中应通过错误处理发送下面的消息.

MsgBox "规划求解加载项没有装载.", vbCritical, "装载加载项演示"

End If

End Sub

如果工作簿已经安装了“规划求解加载项”,如下图1所示:

图1

运行测试程序DemoLoadAddIn过程,会弹出下图2所示的消息框。

图2

下面是bLoadAddIn函数的图片版:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档