2010-11-26 38 views
0

J'ai deux fichiers Excel (un xlam et l'autre xlsm). Le xlsm référence le xlam.Excel se bloque en raison de manquant référencé xlam

Si j'ouvre le xlsm avant d'ouvrir le xlam, Excel se bloque. De xslm (en utilisant n'importe quelle méthode programmatique) est-il un moyen de vérifier si xlam est ouvert et sinon, soit le charger dynamiquement ou montrer un avertissement que le xlam doit être ouvert avant de quitter .

Je Crafted un code qui est appelé à partir du sous Workbook_Open dans le xlsm

Public Function checkReferences() As Boolean 
On Error Resume Next 

Dim retVal As Boolean 
retVal = False 

Dim i As Integer 

For i = 1 To ThisWorkbook.VBProject.References.Count 
    With ThisWorkbook.VBProject.References(i) 
     If StrComp(.name, "PreTradeServices") = 0 Then 
      retVal = True 
      Exit For 
     End If 
    End With 

Next i 

checkReferences = retVal 
End Function 

Malheureusement Excel se bloque avant que Workbook_Open est atteint

Répondre

1

Quelque chose comme ça?

'/** 
    ' 
    ' VBA Function to check whether required addin is installed... 
    ' @version 1.0 
    ' @author Ilyas Kazi http://ilyaskazi.com 
    ' 
    ' @param string str_filename (to parse file name to lookup for the addin) 
    ' 
    ' @return boolean (true/false) 
    ' 
    '**/ 
Function IsAddin_Installed(str_filename As String) As Boolean 
    Dim aiwb As AddIn  'addin workbook 

    For Each aiwb In Application.AddIns  'Loop through each addin workbook 
     If UCase(aiwb.Name) = UCase(str_filename) Then 
      IsAddin_Installed = True  'found 
      Exit Function 
     Else 
      IsAddin_Installed = False 
     End If 
    Next 

End Function 
+0

ne fonctionne pas, je le crains, le xlam ne figure pas dans les Application.Addins – Pram

0

Qu'en est-il de l'ajout de la référence XLAM en tant que référence VBA? Y a-t-il un moyen de garder le XLAM dans un endroit centralisé?

+0

Le XLAM est déjà une référence VBA – Pram