我有这个受密码保护的宏并显示一个表单。最近我添加了从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执行导入数据(数据>导入外部数据>导入数据),也会发生这种情况
答案 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)。一种方法是将数据保存到另一个工作簿,在那里查询,然后将结果复制回原始工作簿,但这有点麻烦。