Excel VBA - 表单显示和导入数据后的密码提示

时间:2009-08-09 17:56:00

标签: excel vba forms import passwords

我有这个受密码保护的宏并显示一个表单。最近我添加了从excel导入数据的代码,每次我关闭它都要求我输入密码 - 我可以通过它取消但我想让它消失,我认为没有合理的理由它会来。

我已经分离出导致此问题的几行

Sub a()    

UserForm1.Show
strConnString = "Provider=Microsoft.Jet.OLEDB.4.0" & _
    ";Data Source=" & "C:\Book1.xls" & _
    ";Extended Properties='Excel 8.0; IMEX=1'" & _
    ";Persist Security Info=False"
Set objRSGlobal = CreateObject("ADODB.Recordset")
objRSGlobal.Open "select * from [Sheet1$]", strConnString
objRSGlobal.Close
Set objRSGlobal = Nothing
End Sub

这将进入Module1。我有一个名为UserForm1的空白表单。我使用密码锁定代码(也用于查看)并将所有内容保存在Book1.xls中。

现在我打开文件,执行Alt + F8运行宏,关闭表单,然后关闭文件,出现密码提示。我无法理解它为什么会出现以及如何让它消失。

提前致谢!!

注意 - 对于记录,如果我只显示表单并通过UI执行导入数据(数据>导入外部数据>导入数据),也会发生这种情况

  • 更新 - 只有当我从我打开的同一个文件导入时,它才会发生。

3 个答案:

答案 0 :(得分:0)

这看起来像Microsoft知识库文章KB280454中描述的问题 http://support.microsoft.com/kb/280454

我在使用.NET和COM互操作时遇到了这个问题。本文建议确保发布COM引用。在我的案例中,我无法成功地做到这一点。我尝试将命令从Excel委派给非VBA密码保护的工作簿,这减少了事件的发生,最后设置了一个程序来杀死我的应用程序(使用Xtreme Prejudice,使用第二个进程)。在这个问题的情况下,这些似乎都不合适,但可能需要类似的kludge。

答案 1 :(得分:0)

答案 2 :(得分:0)

我遇到了同样的问题,它与打开的Excel工作簿(包括当前工作簿)中的Excel / Jet查询有关。以下Microsoft kb article描述了此问题。

这个问题似乎在Excel 2010中得到修复,虽然这对我没有帮助(因为我的客户仍在使用Excel 2007)。一种方法是将数据保存到另一个工作簿,在那里查询,然后将结果复制回原始工作簿,但这有点麻烦。