添加来自VBA的引用导致出现密码提示

时间:2010-03-23 14:26:49

标签: excel vba

编辑:我将为此提供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周围输入密码,此时它会提示我输入密码。

我已经尝试过绝对的一切

3 个答案:

答案 0 :(得分:3)

您的密码保护您的VBA项目。因此,对该项目的任何更改都需要打开它,因此您将获得密码提示。

您可以尝试创建加载项来解决此问题。它可能有效,因为您正在从VBA代码创建DLL / XLA,因此您应该能够添加引用。

XLA

将包含代码的工作簿另存为“Microsoft Office Excel加载项(.xla)”

DLL

要创建加载项,您需要Office XP Developer。 Microsoft声明较新版本的Office不支持此工具,但这些版本都使用VBA / VBE v6.x.我在Office 2003中从未遇到过这些工具的任何问题。

注意,如果您希望ActiveWorkbok指向您的代码,那么在使用加载项工作时您将不得不调整这些语句。

答案 1 :(得分:0)

如果取消选中“锁定项目以供查看”复选框,则在代码尝试设置引用时,您将不会收到提示。但后来我不确定保护的重点是什么。

可悲的是,我认为你已经沉没了。如果要以编程方式添加引用,则需要访问代码。

答案 2 :(得分:0)

项目引用在运行时以编程方式成功添加到受保护的VBA项目中。无论如何它会抛出密码提示。即使您单击取消按钮,也会成功添加项目引用。