添加后,我的Excel加载项会一直消失

我公司里面有一项小任务.任务非常简单,但却非常令人困惑.许多年前,我们有人为Excel创建一个小的VBA代码.当时的格式是Excel 97-2003今天我们使用的是Office 365.现在就是这样,加载项图标在启动时从Excel中消失,还有其他图标不会消失,而且它们是“邻居”我们的图标.我可以添加它,下次我启动Excel它就在那里,但下次我启动Excel时它不可用.它仍然在Excel加载项中选中,但它不会出现.我已经搜索谷歌的解决方案,但解决方法不是我想要的.一些解决方法是将文件保存在受信任的位置,我这样做了,但这是结果.事实上,该文件现在位于受信任的位置.所以我认为这是造成问题的实际代码.以下代码是原始的.我没有做任何事情.

Option Base 1

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Dim cb As CommandBars
    Dim name As Variant
    Dim j As Integer
    Dim i As Integer

    On Error Resume Next

    Set cb = Application.CommandBars

    For j = cb.Count To 1 Step -1
        If cb(j).name = "iSeries Access" Or cb(j).name = "Client Access" Then
            cb(j).Visible = False
            name = cb(j).name
            With cb(name)
                For i = .Controls.Count To 1 Step -1
                    If .Controls(i).Caption = "Format BPCS Bill Of Material..." Then
                        .Controls(i).Delete
                        GoTo nn
                    End If
                    If .Controls(i).Caption = "Custom" Then
                        .Controls(i).Enabled = True
                        .Controls(i).Visible = True
                    End If
                    If .Controls(i).Caption = "&Dialog" Then
                        .Controls(i).Enabled = True
                        .Controls(i).Visible = True
                    End If
    nn:
                Next
            End With
            cb(j).Visible = True
            j = 1
        End If
    Next

    With cb("Data").Controls.Item("Transfer &Data To iSeries...")
        .Enabled = True
        .Visible = True
    End With

    With cb("Data").Controls.Item("T&ransfer Data From iSeries...")
        .Enabled = True
        .Visible = True
    End With

    Set cb = Nothing

End Sub

Private Sub Workbook_Open()

    Dim ad As AddIns
    Dim found As Boolean
    Dim CBar As CommandBars
    Dim Mbar As CommandBar
    Dim CMbar As CommandBarControl
    Dim i As Integer
    Dim warn As Dialog
    Dim j As Integer

    Set CBar = Application.CommandBars

    'On Error Resume Next

    Set ad = Application.AddIns


    'Application.DisplayAlerts = True

    'found = False
    found = True
    Application.DisplayAlerts = True

    'For i = ad.Count To 1 Step -1
    '    If ad(i).name = "cwbtfcai.dll" Then
    '        found = True
    '        If ad(i).Installed = False Then
    '            ad(i).Installed = True
    '        End If
    '        Exit For
    '    End If
    'Next

    'Set ad = Nothing

    If found = False Then
        warn = MsgBox("Couldn't find 'iSeries...' or 'Client Access Data Transfer' addin!", vbCritical + vbOKOnly)
        Application.AddIns("Simple_Excel_iSeries").Installed = False
        Workbooks("Simple_Excel_iSeries.xla").Close
     Else
        For i = CBar.Count To 1 Step -1
            If CBar(i).name = "IBM i Access" Or CBar(i).name = "iSeries  Access" Then
                Do
                    If CBar(i).Visible = True Then
                        Exit Do
                    End If
                Loop
                'CBar(i).Visible = False
                For j = 1 To CBar(i).Controls.Count
                    With CBar(i).Controls(j)
                    '    .Enabled = False
                    End With
                Next
                With CBar(i).Controls.Add(Type:=msoControlButton, before:=1)
                    .Caption = "Format BPCS Bill Of Material..."
                    .OnAction = "Format_BPCS_Excel"
                    .FaceId = 173
                    .Visible = True
                    .Enabled = True
                End With
                CBar(i).Visible = True
            End If
        Next
    End If

    'With CBar("Data").Controls.Item("Transfer &Data To iSeries...")
    '    .Enabled = False
    'End With

    'With CBar("Data").Controls.Item("T&ransfer Data From iSeries...")
    '    .Enabled = False
    'End With
    Set CBar = Nothing
    Application.DisplayAlerts = False

End Sub

最佳答案 我使用加载项并且在过去遇到同样的问题 – 在加载项列表中选择加载项但在Excel打开时不加载加载项.下面的方法可能无法解决您的特定问题,但可能会对遇到类似问题的其他人有所帮助.我试图用Workbook_Open代码来加载加载项,但它并没有为我解决问题.

症状:共享驱动器上有一个Excel加载项(.xlam,.xla).您将它添加到Excel中的加载项列表.第一次这样做,它加载没有问题.重新启动Excel后,虽然加载项显示在加载项列表中,但加载项仍未加载.

假设:您正在使用Windows,.xlam,.xla文件位于共享驱动器上的文件夹中,每个用户都将访问该文件夹.

选项1(必须在用户机器上完成):

>复制文件夹路径并将其粘贴到Excel中的“受信任位置”.您需要选中“在我的网络上允许受信任位置”框. (这在File-> Options-> Trusted Center-> Trust Center Settings-> Trusted Locations下)
>接下来,您还必须将此位置添加为Intranet上的受信任位置.要执行此操作,您必须打开Internet Explorer,转到设置 – >互联网选项 – >安全性 – >本地内联网 – > Sites->高级.在那里,您应该粘贴加载项的文件夹路径,添加和保存. IE的这一部分对我来说相当令人惊讶,并且花了两天的时间才发现了大量的谷歌搜索.
>将您的加载项添加到Excel中的列表中.如果您承诺将文件复制到个人文件夹中,请选择NO.如果所有加载项的用户都应使用共享驱动器中相同版本的加载项,请确保加载项的用户始终选择“否”.如果已选择加载项,则可能值得检查Excel是否实际使用了预期的副本而不是“个人文件夹”副本.

选项2(必须在用户机器上完成):

>这是一种解决方法 – 您可以为Excel提供一个Startup文件夹.在选项 – >下高级 – >一般情况下,您可以添加文件夹路径,Excel将打开该文件夹中的所有文件.您可以只提供带有加载项的文件夹,但请记住,Excel将打开指定文件夹中的所有Excel文件,并且可能不希望每个用户都这样,因此您可能必须为每个用户配置单独的“启动”文件夹,它可能会让很多用户和一个加载项更加繁琐,因此它更像是一种解决方法.

同样,这可能无法解决您的问题,但它可能对其他人有用.

点赞