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

时间:2017-01-09 21:07:41

标签: vba object reference solver

您好我尝试按照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>引用中的复选框。

是否有人对代码中的Opensolver之前自动标记该复选框的代码有任何建议?

1 个答案:

答案 0 :(得分: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

中所建议的那样

希望这仍然有助于那些面临同样问题的人。