У меня есть файл Excel, который содержит серию соединений OLEDB, использующих несколько сводных таблиц. Я хотел бы создать функцию VBA, которая удаляет все пароли из нескольких строк подключения при закрытии файла (чтобы пароль пользователя не сохранялся). Сначала я подумал, что все, что мне нужно сделать, это установить для свойства «Сохранить пароль» значение false, что-то вроде этого:
Public Sub RemovePasswordByNamePrefix()
Dim cn As Object
Dim oledbCn As OLEDBConnection
For Each cn In ThisWorkbook.connections
Set oledbCn = cn.OLEDBConnection
oledbCn.SavePassword = False
Next
End Sub
Должно работать правильно, закрыв файл и открыв его снова, вы больше не увидите пароль в строке подключения. Не должно быть "сохранено":
Неправильно, пароль все еще там ... Он был "сохранен". Не уверен, что эта функция должна делать. Может быть, есть ссылка на другой пароль? Итак, я попытался использовать метод большого молотка , к сожалению, у него есть свои проблемы, и до сих пор я не справился с этим.
Я не совсем уверен, как это сделать ... Почему это так небезопасно? Он сохраняет незашифрованные пароли каждого файла, который содержит строку подключения такого рода, легко читаемую любым, кто может получить доступ к этому файлу.
Может быть, я мог бы создать какое-то регулярное выражение, чтобы удалить только пароль из файла? Когда я делаю это в интерфейсе, мои кубы обновляются и запрашивают мои учетные данные, (интересно) произойдет ли это, если я сделаю это в VBA, даже если триггер будет после закрытия?
Итог: Каков наилучший способ предотвратить сохранение этих паролей в файле после его закрытия?