2017-01-09 9 views
0

Привет Я пытаюсь добавить ссылку programnatically в соответствии с: How to Add/Remove reference programmatically?Как программно добавить .xlam addin (as object) в vba?

Однако ссылка, которую я хочу программно добавить это .xlam файл opensolver.org.

Так со следующим кодом:

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) 

It потому что я не знаю, как это сделать:

a. Установите файл .xlam как объект b. преобразуйте файл .xlam в файл .ocx, чтобы он был прочитан и добавлен в ссылку.

Кто-нибудь есть какие-либо предложения о том, как автоматически программно добавить OpenSolver.xlam в Microsoft Excel из любого случайного места *

* Для меня это работает отлично, если я вставить папку, содержащую .xlam в:

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

, а затем открыть его вручную, но мне нужно пользователи моего кода, чтобы быть в состоянии запустить его из макинтоша, не требуя от них, чтобы вручную добавить opensolver в качестве ссылки, прежде чем я называю это из другого модуля.

Как указано ниже, код succesfull действительно добавляет OpenSolver.xlam к ссылкам, но я не могу программно пометить флажок в vba> tools> reference.

У кого-нибудь есть предложения по поводу кода, который автоматически отмечает этот флажок перед Opensolver в ссылках, как только он уже добавлен?

+1

Вы не добавляете файлы .xlam в качестве ссылок - вам нужно добавить их в качестве надстроек Excel. – Comintern

+0

Спасибо, сейчас я буду читать. –

ответ

0

@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

Надеется, что это все еще помогает тем, облицовочное одинаковые вопросам.