Я использую Excel 2010. У меня есть макрос с поддержкой макроса Excel, который имеет подключение к текстовому файлу, которое настроено на автоматическое обновление при создании нового документа с помощью этого шаблона.
Следующий макрос находится в объекте "ThisWorkbook" для удаления подключения к данным перед сохранением нового документа:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Do While ActiveWorkbook.Connections.Count > 0
ActiveWorkbook.Connections.Item(ActiveWorkbook.Connections.Count).Delete
Loop
End Sub
Когда пользователь нажимает значок сохранения/хиты ctrl + S, вводит имя файла, а затем нажимает кнопку "Сохранить", чтобы сохранить его как книгу без макросов Excel (как и значение по умолчанию и требуемый тип файла), им будет предложено сообщение с сообщением:
Следующие функции не могут быть сохранены в книгах без макросъемки:
• Проект VB
Чтобы сохранить файл с этими функциями, нажмите "Нет", а затем выберите тип файла с поддержкой макроса в списке "Тип файла".
Чтобы продолжить сохранение в виде книги без макросов, нажмите "Да".
Возможно ли предотвратить появление этого сообщения и заставить Excel предположить, что пользователь хочет продолжить работу с книгой без макросов?
Я искал все и понимаю, что я могу добавить код к объекту книги, который удаляет себя, чтобы у Excel не было проекта VB, чтобы вызвать это сообщение, но для этого потребуется, чтобы каждый пользователь менял настройки центра доверия (доверять доступу к Объектная модель проекта VBA), которую я хочу избежать.
Я также видел предложения по использованию:
Application.DisplayAlerts = False
но не может заставить это работать. Кажется, что каждый пример этого использования находится внутри суб, который также обрабатывает сохранение документа, тогда как в моей ситуации SubSave заканчивается до того, как документ будет сохранен в стандартном, не-vba способе, который, возможно, почему он не работает?
Сбрасывает ли это свойство значение по умолчанию True после того, как sub закончил/до того, как на самом деле произойдет сохранение?
Извиняюсь за любую бессмыслицу, которую я, возможно, отказался, мой опыт работы с VBA очень ограничен.