如何以编程方式将 .xlam 插件(作为对象)添加到 vba?

Posted

技术标签:

【中文标题】如何以编程方式将 .xlam 插件(作为对象)添加到 vba?【英文标题】:How to programmatically add .xlam addin (as object) to vba? 【发布时间】:2017-01-09 21:07:40 【问题描述】:

您好,我正在尝试以编程方式添加参考:How to Add/Remove reference programmatically?

但是,我希望以编程方式添加的参考是 opensolver.org 的 .xlam 文件。

所以用下面的代码:

    Sub AddWS()
  'Create a reference to Windows Script Host, '
  'where you will find FileSystemObject '
  'Reference name: "IWshRuntimeLibrary" '
  'Reference Name in references list: "Windows Script Host Object Model" '
  ReferenceFromFile "C:\Users\path\OpenSolver2.8.5_LinearWin\OpenSolver.xlam"
  End Sub

和功能:

Function ReferenceFromFile(strFileName As String) As Boolean
Dim ref As Object
MsgBox (strFileName)

         'On Error GoTo Error_ReferenceFromFile
         'References.AddFromFile (ref)
         'ref = strFileName
         'vbProj.References.AddFromFile strFileName
         References.AddFromFile (strFileName)
         MsgBox (strFileName)
         ReferenceFromFile = True

Exit_ReferenceFromFile:
         Exit Function

Error_ReferenceFromFile:
         ReferenceFromFile = False
         Resume Exit_ReferenceFromFile
End Function

但我得到对象错误 424:“需要对象”就行了:

         References.AddFromFile (strFileName)

因为我也不知道怎么做:

一个。将 .xlam 文件设置为对象 湾。将 .xlam 文件转换为 .ocx 文件,以便读取并添加到引用中。

是否有人对如何以编程方式将 OpenSolver.xlam 从任意随机位置自动添加到 Microsoft Excel 有任何建议?*

*对我来说,如果我将包含 .xlam 的文件夹粘贴到:

C:\Program Files (x86)\Microsoft Office\root\Office16\Library

然后手动打开它,但我需要我的代码的用户也能够从 mac 运行它,而不需要他们在我从另一个模块调用它之前手动添加 opensolver 作为参考。

如下所述,成功的代码确实将OpenSolver.xlam 添加到引用中,但我似乎无法以编程方式标记 vba>tools>references 中的复选框。

是否有人对在引用中自动标记Opensolver 之前的复选框的代码有任何建议,一旦它已经添加?

【问题讨论】:

您不添加 .xlam 文件作为参考 - 您需要将它们添加为 Excel 加载项。 谢谢,我现在就去读。 【参考方案1】:

@Comintern 你是我今天的英雄!我花了至少 4 个小时尝试不同的代码,解决出现的问题,并根据您对问题的简单建议,我在两分钟内找到了我需要的有效且准确的解决方案!非常感谢:)

有效的代码是:

Private Sub Workbook_Open()

On Error Resume Next
Application.AddIns("OpenSolver").Installed = False
On Error GoTo 0

With Application
    .AddIns.Add "C:\Users\random path\OpenSolver2.8.5_LinearWin\OpenSolver.xlam", False
    .AddIns("OpenSolver").Installed = True
End With

'ThisWorkbook.Close False

End Sub

如建议:Programatically Install Add-In VBA

希望这仍然可以帮助那些面临相同问题的人。

【讨论】:

以上是关于如何以编程方式将 .xlam 插件(作为对象)添加到 vba?的主要内容,如果未能解决你的问题,请参考以下文章

尽管已安装证书,但签名的 Excel VBA 插件 (*.xlam) 无法正常运行

以编程方式添加工作灯适配器

如何以编程方式将文本添加到 UIView

作为管理员,如何使用 Grails Spring Security 以编程方式更改用户密码?

将占位符添加到 UITextField,如何以编程方式快速设置占位符文本?

Eclipse RCP - 以编程方式更改 plugin.xml?重新加载?