【问题标题】:Getting error looking for add in on workbook open在工作簿打开时查找添加时出错
【发布时间】:2017-10-25 23:09:24
【问题描述】:

我有一个工作簿,打开时会扫描特定的插件,如果它已经打开,它不会重新打开它,但如果不是,它会打开它。首先,它将扫描 application.vbe.vbprojects 以查找未注册的插件。如果我自己打开工作簿它工作正常,如果我先打开一个空白工作簿然后我打开将打开插件的工作簿,我收到一个错误:

Private Sub Workbook_Open()
Dim vbproj As Object
Dim theName As String
Dim flag as Boolean

For Each vbproj In Application.VBE.VBProjects
    theName = GetFilenameFromPath(vbproj.filename) <<--- Run-time error '76'" Path not found
    If theName = "AddIn.xlam" Then
        Flag = True
        Exit For
    End If
Next vbproj

    If Flag = False Then
    Workbooks.Open ("C:\AddIn.xlam"), , True
    Workbooks("AddIn.xlam").IsAddin = True
    End If

End Sub

Function GetFilenameFromPath(ByVal strPath As String) As String    
        If Right$(strPath, 1) <> "\" And Len(strPath) > 0 Then
            GetFilenameFromPath = GetFilenameFromPath(Left$(strPath, Len(strPath) - 1)) + Right$(strPath, 1)
        End If
End Function

【问题讨论】:

  • 调试您的代码以查看vbproj.filename 是否返回一个可以使用的值。 Debug.Print vbproj.filename
  • 它没有返回任何东西,这是错误的原因之一,但为什么呢?
  • 那么Application.VBE.VBProjects中没有对象。所以你可以在没有对象的情况下添加一个错误处理程序,然后设置flag = True
  • 我只是好奇为什么打开空白工作簿后打开时会没有vbproject,而不是单独打开它。
  • 尝试使用vbproj.name 而不是vbproj.filename

标签: vba


【解决方案1】:

Application.AddIns2 集合可用于 Office 2010 及更高版本:

Dim isInstalled As Boolean, a As AddIn

For Each a In Application.AddIns2                              ' not sure if .IsOpen should be checked 
    If a.Name = "AddIn.xlam" Then isInstalled = a.Installed And a.IsOpen: Exit For 
Next

If Not isInstalled Then Workbooks.Open("AddIn.xlam", , True).IsAddin = True

AFAIK,.xla(m) 文件始终使用.IsAddin = True 打开,所以我认为只有 .xlsb 格式的插件才需要。

【讨论】:

  • 该插件在技术上没有安装,它应该是在工作簿打开时才打开的,所以如果你运行上面的代码,它不会找到它。
  • 我得到的对象不支持方法或属性
  • 哦该死,是的,我忘了我在 2007 年测试,我会在 2016 年检查
  • @pokemon_Man 2010 之前的版本与您的类似,但使用 On Error Resume Next 忽略您收到的错误,但 Microsoft 不再支持 Office 2007 support.microsoft.com/en-us/help/3198497/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 2018-02-22
  • 1970-01-01
  • 2021-07-10
相关资源
最近更新 更多