我公司里面有一项小任务.任务非常简单,但却非常令人困惑.许多年前,我们有人为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文件,并且可能不希望每个用户都这样,因此您可能必须为每个用户配置单独的“启动”文件夹,它可能会让很多用户和一个加载项更加繁琐,因此它更像是一种解决方法.
同样,这可能无法解决您的问题,但它可能对其他人有用.