编辑:我将为此提供300个代表: - )
我已经没有想法了。我有一个非常简单的宏添加引用。
看起来我遇到与此http://www.eggheadcafe.com/software/aspnet/35651964/excel-prompts-for-vba-pas.aspx
相同的问题Sub testAddSolver()
Call AddSolver()
End Sub
Sub AddSolver()
Dim strSolverPath As String
Dim wbSolver As Workbook
Dim objRef As Object
Dim oWB As Object ' NOT as workbook
Dim ad As AddIn
On Error GoTo errH
Set oWB = ActiveWorkbook
With Application.AddIns("Solver Add-In")
strSolverPath = .FullName
On Error Resume Next
Set wbSolver = Workbooks(.name)
On Error GoTo errH
If wbSolver Is Nothing Then
.Installed = True
End If
End With
On Error Resume Next
Set objRef = oWB.VBProject.References("SOLVER")
On Error GoTo errH
If objRef Is Nothing Then
Call MsgBox(strSolverPath)
oWB.VBProject.References.AddFromFile strSolverPath
End If
Call MsgBox("Compleetd")
Exit Sub
errH:
MsgBox Err.Description, , "Error in AddSolver"
End Sub
这个添加引用工作正常,直到我在VBA周围输入密码,此时它会提示我输入密码。
我已经尝试过绝对的一切
答案 0 :(得分:3)
您的密码保护您的VBA项目。因此,对该项目的任何更改都需要打开它,因此您将获得密码提示。
您可以尝试创建加载项来解决此问题。它可能有效,因为您正在从VBA代码创建DLL / XLA,因此您应该能够添加引用。
将包含代码的工作簿另存为“Microsoft Office Excel加载项(.xla)”
要创建加载项,您需要Office XP Developer。 Microsoft声明较新版本的Office不支持此工具,但这些版本都使用VBA / VBE v6.x.我在Office 2003中从未遇到过这些工具的任何问题。
注意,如果您希望ActiveWorkbok指向您的代码,那么在使用加载项工作时您将不得不调整这些语句。
答案 1 :(得分:0)
如果取消选中“锁定项目以供查看”复选框,则在代码尝试设置引用时,您将不会收到提示。但后来我不确定保护的重点是什么。
可悲的是,我认为你已经沉没了。如果要以编程方式添加引用,则需要访问代码。答案 2 :(得分:0)
项目引用在运行时以编程方式成功添加到受保护的VBA项目中。无论如何它会抛出密码提示。即使您单击取消按钮,也会成功添加项目引用。