Это интересная идея, но проблема в том, что я пытаюсь использовать Excel в соединении build it и логике сводных таблиц, а не использовать свою собственную. На самом деле у меня есть отдельная функция, которая делает что-то похожее на это, чтобы скрыть учетные данные, но это немного отличается от этой проблемы.
я есть файл 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
Должно работать правильно, закрыв файл и открыв его снова, вы больше не увидите пароль в строке подключения. Не должно быть "сохранено":
Неправильно, пароль все еще там ... Он был "сохранен". Не уверен, что эта функция должна делать. Может быть, есть ссылка на другой пароль? Итак, я попыталсяподход большой молотК сожалению, у него есть свои проблемы, и до сих пор я не получил эту работу.
Я не совсем уверен, как это сделать ... Почему это так небезопасно? Он сохраняет незашифрованные пароли каждого файла, который содержит строку подключения такого рода, легко читаемую любым, кто может получить к нему доступ.
Может быть, я мог бы сделать что-то вроде Regex, чтобы удалить только пароль из файла? Когда я делаю это в интерфейсе, мои кубы обновляются и запрашивают мои учетные данные, (интересно) произойдет ли это, если я сделаю это в VBA, даже если триггер находится после закрытия?
Нижняя линия: Каков наилучший способ предотвратить сохранение этих паролей в файле после его закрытия?