Excel VBA - запрос пароля после отображения формы и импорта данных - PullRequest
1 голос
/ 09 августа 2009

У меня есть этот макрос, который защищен паролем и показывает форму. Недавно я добавил код для импорта данных из 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 для запуска макроса, закрываю форму, а затем закрываю файл, в котором появляется запрос пароля. Я не могу понять, почему это происходит и как заставить это уйти.

Заранее спасибо !!

Примечание - для записи это также происходит, если я просто показываю форму и выполняю Импорт данных через пользовательский интерфейс (Данные> Импорт внешних данных> Импорт данных)

  • Обновление - похоже, что это происходит только тогда, когда я импортирую из того же файла, который я открыл.

Ответы [ 3 ]

0 голосов
/ 06 марта 2010
0 голосов
/ 23 августа 2010

У меня была такая же проблема, и она связана с запросами Excel / Jet из открытых рабочих книг Excel (включая текущую рабочую книгу). Следующая статья Microsoft kb описывает проблему.

Эта проблема, похоже, исправлена ​​в Excel 2010, хотя это не помогло мне (поскольку мои клиенты все еще используют Excel 2007). Один из способов сделать это - сохранить данные в другой книге, запросить их там и затем скопировать результат обратно в исходную книгу, но это немного громоздко.

0 голосов
/ 31 декабря 2009

Это похоже на проблему, описанную в статье базы знаний Майкрософт KB280454 http://support.microsoft.com/kb/280454

Я столкнулся с этой проблемой при работе с .NET и COM-взаимодействием. В статье сообщается, что ссылки на COM публикуются. Я не смог сделать это успешно в моем случае. Я попытался делегировать команды из Excel в рабочую книгу, не защищенную паролем VBA, что уменьшило вероятность возникновения и, наконец, настроило процесс для уничтожения моего приложения (с помощью Xtreme Prejudice, используя второй процесс). Ни один из них не кажется подходящим в случае этого вопроса, но может потребоваться подобный кладж.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...