学习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函数的图片版:
|
|