在 Excel 至 VBA 中启用 COM 插件
Enable COM addins in Excel through VBA
我需要通过 VBA 启用 COM 插件。加载项已存在于 COM 加载项下,但在 Excel 崩溃时未选中。
Sub hyp()
Dim objAddIn As Object
For i = 1 To Application.COMAddIns.Count
Set objAddIn = Application.COMAddIns.Item(i)
On Error Resume Next
If Application.COMAddIns.Item(i).Description = "Oracle Smart View for Office" Then
'MsgBox Application.COMAddIns.Item(i).Description
'NEED TO ENABLE THE COM ADDIN
Else
End If
Next i
End Sub
Public Sub Connect_COM_AddIn(Name As String)
Dim ndx As Integer
For ndx = 1 To Application.COMAddIns.Count
If Application.COMAddIns(ndx).Description = Name Then
Application.COMAddIns(ndx).Connect = True
Exit For
End If
Next
End Sub
注意:请参阅下面 BigBen 的评论 - 这种方法可能并不总是有效,因为索引器并不总是与描述一致。如果您需要按描述搜索,那么 Excel 开发人员的回答可能适用(尽管我没有亲自尝试过或需要它)。
为我工作的 Excel 开发人员的答案的一个更简单的替代方法是直接通过其字符串名称索引 com 插件,而不是使用整数索引循环遍历 com 插件并与描述。特别是,这段代码对我有用(我已经包含了一个连接和断开版本):
Public Sub Connect_COM_AddIn(Name As String)
Application.COMAddIns(Name).Connect = True
End Sub
Public Sub Disconnect_COM_AddIn(Name As String)
Application.COMAddIns(Name).Connect = False
End Sub
我有前面提到的相同系统块,其中系统权限不允许我使用 Application.COMAddIns(Name).Connect = True。这是一种解决方法,但要弹出 COM 添加框,您可以使用 SendKeys 将其拉出。请记住,SendKeys 仅在 2010 年 Excel 之后的 运行 结束时执行,因此要使其正常工作,您首先需要检查用户是否已连接到加载项。如果是这样,请呼叫另一个子;如果不使用 SendKeys 打开对话框并结束子。这些是对我有用的击键,可能需要根据菜单中的选项数量进行一些修改。
Sub test()
'Checks if COM is installed and active
comFound = False
comRibbon = True
For i = 1 To Application.COMAddIns.Count
If Application.COMAddIns(i).Description = "NAME" Then
comFound = True
If Application.COMAddIns(i).Connect = False Then
comRibbon = False
End If
Exit For
End If
Next i
'Exits sub if not installed
If comFound = False Then
MsgBox ("You do not have NAME installed.")
Exit Sub
End If
'Directs user to rest of code if active, otherwise opens dialog
If comRibbon = True Then
Call test2
Else
MsgBox ("Please select NAME in the following dialog before rerunning.")
End If
SendKeys "%FT{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{TAB}{TAB}{TAB}{DOWN}{DOWN}{TAB}~", True
End Sub
Sub test2()
'Rest of code
End Sub
我需要通过 VBA 启用 COM 插件。加载项已存在于 COM 加载项下,但在 Excel 崩溃时未选中。
Sub hyp()
Dim objAddIn As Object
For i = 1 To Application.COMAddIns.Count
Set objAddIn = Application.COMAddIns.Item(i)
On Error Resume Next
If Application.COMAddIns.Item(i).Description = "Oracle Smart View for Office" Then
'MsgBox Application.COMAddIns.Item(i).Description
'NEED TO ENABLE THE COM ADDIN
Else
End If
Next i
End Sub
Public Sub Connect_COM_AddIn(Name As String)
Dim ndx As Integer
For ndx = 1 To Application.COMAddIns.Count
If Application.COMAddIns(ndx).Description = Name Then
Application.COMAddIns(ndx).Connect = True
Exit For
End If
Next
End Sub
注意:请参阅下面 BigBen 的评论 - 这种方法可能并不总是有效,因为索引器并不总是与描述一致。如果您需要按描述搜索,那么 Excel 开发人员的回答可能适用(尽管我没有亲自尝试过或需要它)。
为我工作的 Excel 开发人员的答案的一个更简单的替代方法是直接通过其字符串名称索引 com 插件,而不是使用整数索引循环遍历 com 插件并与描述。特别是,这段代码对我有用(我已经包含了一个连接和断开版本):
Public Sub Connect_COM_AddIn(Name As String)
Application.COMAddIns(Name).Connect = True
End Sub
Public Sub Disconnect_COM_AddIn(Name As String)
Application.COMAddIns(Name).Connect = False
End Sub
我有前面提到的相同系统块,其中系统权限不允许我使用 Application.COMAddIns(Name).Connect = True。这是一种解决方法,但要弹出 COM 添加框,您可以使用 SendKeys 将其拉出。请记住,SendKeys 仅在 2010 年 Excel 之后的 运行 结束时执行,因此要使其正常工作,您首先需要检查用户是否已连接到加载项。如果是这样,请呼叫另一个子;如果不使用 SendKeys 打开对话框并结束子。这些是对我有用的击键,可能需要根据菜单中的选项数量进行一些修改。
Sub test()
'Checks if COM is installed and active
comFound = False
comRibbon = True
For i = 1 To Application.COMAddIns.Count
If Application.COMAddIns(i).Description = "NAME" Then
comFound = True
If Application.COMAddIns(i).Connect = False Then
comRibbon = False
End If
Exit For
End If
Next i
'Exits sub if not installed
If comFound = False Then
MsgBox ("You do not have NAME installed.")
Exit Sub
End If
'Directs user to rest of code if active, otherwise opens dialog
If comRibbon = True Then
Call test2
Else
MsgBox ("Please select NAME in the following dialog before rerunning.")
End If
SendKeys "%FT{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{TAB}{TAB}{TAB}{DOWN}{DOWN}{TAB}~", True
End Sub
Sub test2()
'Rest of code
End Sub