gpt4 book ai didi

excel - VB6/VBA 不允许加载 COM 加载项

转载 作者:行者123 更新时间:2023-12-02 22:16:52 26 4
gpt4 key购买 nike

我有一个 VB6/VBA 应用程序,可以连接到 Excel 并加载工作簿。多年来它一直运行良好。我们现已升级到 Excel 2010,但遇到了一些问题。故障排除后,如果我关闭 PowerPivot COM 加载项,该进程似乎能够像以前一样运行,没有任何问题。当我寻找确切原因时,我想看看是否可以仅为我的应用程序关闭该加载项。我像这样加载 Excel:

 Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False

在测试 Excel 工作簿上,我有此代码来列出加载项。但是,只有“Excel 加载项”被列出。 “COM 加载项”未列出。

Sub ListAddIns()
Dim CurrAddin As Excel.AddIn
Dim r As Long
Dim ws As Excel.Worksheet

Set ws = ActiveSheet
Cells.Select
Selection.ClearContents
Range("A1").Select

r = 1
For Each CurrAddin In Excel.Application.AddIns
ws.Cells(r, 1).Value = CurrAddin.FullName
ws.Cells(r, 2).Value = CurrAddin.Installed
ws.Cells(r, 3).Value = CurrAddin.Name
ws.Cells(r, 4).Value = CurrAddin.Path
ws.Cells(r, 5).Value = CurrAddin.progID
ws.Cells(r, 6).Value = CurrAddin.CLSID

r = r + 1
Next CurrAddin

MsgBox "Its done.", vbInformation
End Sub

找到引用 COM 加载项的方法后,我需要阻止它加载到我的应用程序的 Excel 对象中。欢迎任何帮助或建议。

谢谢

最佳答案

我不知道是否有一种“漂亮”的方法可以实现此目的,但一种“肮脏”的方法是在启动 Excel 之前更改加载项的注册表设置,这样就不会加载它。这可以通过将 HKCU\Software\Microsoft\Office\Excel\AddIns\\LoadBehavior 设置为 0(不自动加载)来完成。
但是,除非您确定用户接受,否则您可能不应该这样做,因此请务必询问用户是否同意此更改。

您的代码非常接近,要走的路是这样的:

Sub ListAddIns()
Dim CurrAddin As **Office.COMAddIn**
Dim r As Long
Dim ws As Excel.Worksheet

Set ws = ActiveSheet
Cells.Select
Selection.ClearContents
Range("A1").Select

r = 1
For Each CurrAddin In **Excel.Application.COMAddIns**
ws.Cells(r, 1).Value = CurrAddin.Description
ws.Cells(r, 2).Value = CurrAddin.Application
ws.Cells(r, 3).Value = CurrAddin.GUID
ws.Cells(r, 4).Value = CurrAddin.Connect
ws.Cells(r, 5).Value = CurrAddin.Creator
ws.Cells(r, 6).Value = CurrAddin.progID
r = r + 1
Next CurrAddin
MsgBox "Its done.", vbInformation
End Sub

您可以使用 Connect 属性加载和卸载 COM 插件。

关于excel - VB6/VBA 不允许加载 COM 加载项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7921188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com