Отображаемые оповещения Excel, что это такое

Обновлено: 25.06.2024

Привет,
Я пишу программу автоматизации Excel, используя C++ и MFC. Я
устанавливаю несколько свойств для класса Application, и большинство
работает. Однако свойство DisplayAlerts выдает ошибку.

Если я прохожу через отладчик, все работает нормально. Но когда я запускаю его, я
получаю сообщение "Невозможно установить свойство Display Alerts класса
Application".

Вот фрагмент кода:

//Затем получаем приложение рабочего листа.
приложение = wb.GetApplication();
app.SetDisplayFormulaBar(FALSE); // Работает нормально
app.SetDisplayAlerts(FALSE); //Выдает сообщение об ошибке

Большое спасибо!!
Дженнифер

(Распродажа 40% скоро заканчивается)

Курс Excel VBA — от новичка до эксперта

200+ видеоуроков 50+ часов обучения 200+ руководств Excel

С помощью этого онлайн-курса станьте мастером VBA и макросов в Excel и узнайте, как автоматизировать все свои задачи в Excel. (Опыт работы с VBA не требуется.)

(Скидка 40% скоро закончится!)

Похожие темы

Отключить все виды сообщений/предупреждений/предупреждений в Excel? - Excel

Привет,
Мне нужно отключить все виды сообщений, которые могут появляться перед пользователем, когда он открывает книгу. Я уже использую DisplayAlerts=False и продолжить при ошибке дальше? Можем ли мы также сделать это с помощью самого приложения Excel, а не с помощью VBA?

Маска пароля с полем ввода *** - Excel

Я нашел похожие сообщения на форуме, но без использования пользовательской формы.

У меня есть следующий код:

Это работает, но я хочу скрыть вводимый текст.
Можно ли указать это как свойство? то есть inputbox.text.property = . или что-то?? Я попробовал то, что кажется интуитивно понятным, но ничего не работает.

"Ссылка недействительна" при открытии файла - Excel

Каждый раз, когда я открываю электронную таблицу, я получаю сообщение об ошибке "Ссылка недействительна". Я получаю это сообщение три раза, и как только я нажимаю «ОК» на всех трех из них, моя электронная таблица работает нормально. Проблема в том, что я должен отправить его нескольким людям.

Кто-нибудь знает, в чем может быть проблема?

Командная кнопка Activeex не нажимается — Excel

У меня возникла проблема с рабочей книгой с несколькими командными кнопками ActiveX. Я использовал кнопки управления формой для запуска макросов, но босс хотел, чтобы каждая кнопка имела свой собственный цвет. Поэтому я удалил кнопки управления формой и создал новые командные кнопки ActiveX. Я зашел в свойства кнопки и установил цвета фона. Я добавил код _Click для запуска макросов, когда пользователь нажимал кнопки.

Все кнопки работали нормально. Затем я сохранил и закрыл книгу и пошел на обед. Теперь, когда я открываю книгу, кнопки не работают! Когда я нажимаю на них, ничего не происходит. Они кажутся замороженными. Кажется, они даже не щелкают. Нет сообщения об ошибке. Ничего.

Если я щелкну кнопку правой кнопкой мыши в режиме разработки и выберу "Свойства", я получу свойства листа, а не свойства кнопки. Я больше не могу найти свойства командной кнопки. Я все еще вижу имя кнопки "cmdButtonGetInfo" и "= EMBED("Forms.CommandButton.1","") в поле имени и строке формул. Странно то, что если я создаю новую кнопку, она работает нормально, пока я не сохраню и закрыть файл. Когда я снова открываю файл, ни одна из кнопок не работает.

Как будто кнопки отключаются, когда я закрываю или открываю файл. Есть предложения?

Обновление подключений к данным через Vba — работает, только если макрос «проходит через» отладчик — Excel

Я использую XL2007, и у меня есть макрос, который обновляет соединения запросов Microsoft. Проблема в том, что обновления происходят только в том случае, если вы выполняете макрос с помощью отладчика. Когда вы запускаете макрос в обычном режиме, все остальное работает правильно, но данные не обновляются.

Любая помощь приветствуется. Вот фрагмент кода:


Рабочие книги.Откройте имя файла:="C:\Profile.xls"
Листы("ВЫБОР").Выберите
Диапазон("F3").Значение = SNR

' ЭТА ЧАСТЬ РАБОТАЕТ, ТОЛЬКО ЕСЛИ ВЫ ВЫПОЛНЯЕТЕ МАКРОС С ИСПОЛЬЗОВАНИЕМ ОТЛАДЧИКА. ЕСЛИ МАКРОС ЗАПУСКАЕТСЯ ОБЫЧНО, СОЕДИНЕНИЯ НЕ ОБНОВЛЯЮТСЯ
ActiveWorkbook.Connections("Connection").Refresh
ActiveWorkbook.Connections("Connection14").Refresh
ActiveWorkbook.Connections("Query from C_Profile ").Обновить
ActiveWorkbook.Connections("Запрос из C_Profile1").Обновить

Отключить уведомление, когда пользователь щелкает заблокированную ячейку — Excel

у меня следующая проблема:

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

Когда пользователь дважды щелкает строку, он запускает код через событие Workbook_SheetBeforeDoubleClick.
После выполнения кода Excel показывает сообщение о том, что выбранная ячейка защищена и т. д. и т. д.

Как предотвратить появление этого сообщения?

Я уже пробовал
Код:

но это не сработало

Как удалить все запятые из электронной таблицы? - Excel

У меня есть большая электронная таблица в Excel 2007. Я преобразовываю ее в файл .csv для импорта в другую программу. Мне нужно удалить все запятые из всех данных.

Когда я пытаюсь заменить все запятые (пустыми или другим символом), я получаю сообщение об ошибке "Введенная вами формула содержит ошибку".

Я пробовал разные форматы (текстовые, общие и т. д.) и разные типы файлов (.xls, .xlsx, .csv) и все равно получаю ту же ошибку.

Vba для перезаписи существующего файла — Excel

Я написал некоторый код VBA, который создает выходной файл из шаблона.
Теперь, если я хочу запустить вывод более одного раза, я получаю сообщение с вопросом, хочу ли я перезаписать существующий файл (что я всегда и делаю).

Я пытался отключить displayalerts, но это не работает.
Есть ли способ отключить это сообщение?

Макрос работает на одном компьютере, но не работает на другом - Excel

Я долго просматривал ваши страницы, чтобы узнать, был ли ответ на этот вопрос раньше, но, просмотрев около 50 страниц тем, я ничего не увидел, но если я повторяю предыдущую информацию, я прошу прощения.

Я написал относительно простой макрос. Он просто берет некоторую информацию в одном формате, перестраивает ее, добавляет форматирование и выполняет некоторые вычисления. Ничего сверхъестественного, но на моем компьютере работает отлично.

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

Похоже, что макрос прошел небольшой путь, но затем остановился без каких-либо сообщений об ошибках или каких-либо признаков того, что он не был выполнен должным образом.

Я проверил уровень безопасности макросов, и он такой же, как у меня, Инструменты - Надстройки такие же, В Visual Basic Инструменты - Ссылки такие же, как у меня. Это та же операционная система и та же версия Excel.

Я даже зашел на компьютер этого человека под своим именем (это сеть большой компании) и попытался запустить макрос, и он работает нормально, так что с оборудованием все в порядке.

Я гуглил, искал и пробовал все, что мог придумать, но я не приблизился к решению этой проблемы, поэтому, если кто-то прочитал эту стену текста и может найти возможное решение, это было бы очень спасибо, что спас меня от вырывания на себе ВСЕХ волос!

Microsoft Excel Logo Primary Resized2

Может ли Excel отправлять оповещения? Да, но с некоторыми ограничениями. Excel не может автоматически отправить вам предупреждение по электронной почте, если вы не напишете макрос в редакторе Visual Basic (VBA) для выполнения этой функции. И оповещение о напоминании работает только в том случае, если открыто программное обеспечение Excel. Не совсем удобный метод, на который вы рассчитывали, верно?

Еще один вариант, хотя и сложный и ограниченный (в настоящее время) только форматами электронных таблиц XLS, заключается в настройке электронной таблицы как календаря Outlook, а затем импорте данных из одного в другой. Но и этот метод не дает действительно удовлетворительного результата. Итак, пока Microsoft не решит предоставить работающее решение, нам придется довольствоваться обходными путями, используя макросы и небольшое ручное вмешательство для электронной почты.

Мы создали две таблицы для примера, которые вы можете использовать при выполнении следующих задач:

Пример электронной таблицы полностью, включая макросы:

Используйте эту таблицу, чтобы попрактиковаться в создании оповещений Excel и написании для них макросов. Примечание. Эта таблица включает макросы. Джей Ди Сартейн

Пример электронной таблицы без макросов на случай, если вы не сможете загрузить таблицу с макросами.

Используйте эту таблицу, чтобы попрактиковаться в создании оповещений Excel и написании для них макросов. Примечание. Эта таблица НЕ включает макросы. Джей Ди Сартейн

Создайте электронную таблицу и введите формулы

Вы можете настроить электронную таблицу таким образом, чтобы она уведомляла вас о приближении крайнего срока или о сроке оплаты счета с помощью функции условного форматирования. Затем он может отправить электронное письмо с напоминанием о том, что счет подлежит оплате.

<р>1. Загрузите приведенную выше электронную таблицу оповещений Excel (без макросов) или создайте или используйте свою собственную.

<р>2. В ячейке A1 введите функцию: =СЕГОДНЯ().

<р>4. Выделите оба столбца C и D, затем выберите Главная > Объединить и центрировать > Объединить и центрировать (в группе Выравнивание). Отцентрируйте оставшиеся имена полей в столбцах A, B, E и F.

<р>5. Заполните базу данных/электронную таблицу некоторыми данными, которые соответствуют заголовкам полей/столбцов.

Поскольку мы не хотим создавать отдельную таблицу для каждого месяца года, мы можем использовать функции Excel для сопоставления дней месяца с функцией =СЕГОДНЯ(), которая вводит текущую дату в ячейку A1 для каждого месяца. один день, 365 дней в году. Но, к сожалению, 10-й день (или 10-й день месяца) не совпадает с текущей датой; Например; 27 февраля 2019 года не = 27 или 27 числа. Итак, мы будем использовать функции, чтобы сделать их совместимыми.

<р>6. Введите функцию =ДЕНЬ(1) в ячейку C5; =ДЕНЬ(2) в C6; =ДЕНЬ(3) в C7; и так далее до С34 (на 30 дней). (Вы можете ввести 31 день, если хотите, но большинство счетов не должны быть выплачены 31-го числа, потому что этот день выпадает не каждый месяц.)

<р>7. Затем в ячейку A2 введите функцию =ДЕНЬ(A1).

<р>8. Если вы предпочитаете порядковые числительные (1-й, 2-й, 3-й и т. д.), вы можете ввести количественные числительные (1, 2, 3, 4, 5) в ячейку C5:C34, а затем добавить эту формулу в ячейку D5: = ДЕНЬ(C5)&ЕСЛИ(ИЛИ(ДЕНЬ(C5)=),ВЫБЕРИТЕ(1*ПРАВИЛЬНО(ДЕНЬ(C5),1),"st","nd","rd"),th").

<р>9. Скопируйте формулу с D5 вниз по D34 (D5:D34).

<р>10. Добавьте эту же формулу в ячейку B2 (просто скопируйте ее из ячейки D5 в ячейку B2, и Excel изменит формулу, чтобы компенсировать новое местоположение).

Функция ДЕНЬ() преобразует дату =СЕГОДНЯ() в число (например, 1, 2, 3), которое соответствует одному из 30 дней любого месяца. Таким образом, независимо от того, какой месяц показывает функция СЕГОДНЯ(), A2 отображает только день.

<р>11. Теперь нам нужны формулы предупреждений для столбцов E и F. Введите эту формулу в ячейку E5: = ЕСЛИ (C5 = $ A $ 2, «DUE NOW», 0). Используйте функциональную клавишу F4, чтобы добавить знак $ (доллар), который делает A2 абсолютной ссылкой на ячейку (то есть, когда мы копируем эту формулу, столбец C изменяется по мере копирования вниз, но ячейка A2 остается прежней).

<р>12. Скопируйте формулу из E5 вниз от E6 до E34.

<р>13. Если вы предпочитаете порядковые номера, скопируйте эту формулу в ячейку F5: =IF(D5=$B$2,"DUE NOW", 0), затем скопируйте формулу из F5 вниз от F6 до F34.

01 создать заполнить электронную таблицу, затем ввести формулы

JD Sartain / IDG Worldwide

Создайте и заполните электронную таблицу, затем введите формулы.

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

Использование условного форматирования для создания оповещений Excel

<р>1. Выделите E5:E34, затем выберите HOME > Условное форматирование > Новое правило.

<р>2. В диалоговом окне Новое правило форматирования в разделе Выбор типа правила выберите второй параметр в списке: Форматировать только те ячейки, которые содержат. <р>3. В поле Редактировать описание правила в разделе Форматировать только ячейки с помощью выберите Определенный текст в раскрывающемся списке первого поля, Содержит из раскрывающегося списка второго поля, а затем введите слова DUE NOW заглавными буквами в поле третьего поля.

<р>4. Затем нажмите кнопку Формат рядом с полем Предварительный просмотр.

<р>5. Откроется диалоговое окно Формат ячеек. В поле Подчеркнуть выберите Нет из раскрывающегося списка.

<р>6. В разделе «Эффекты» убедитесь, что ни один из флажков не отмечен или затемнен.

<р>7. Нажмите стрелку рядом с полем Автоматически и выберите цвет из палитры (например, красный). Обратите внимание, что имя окна поля изменилось с Автоматически на Цвет.

<р>8. В поле Стиль шрифта над полем Автоматический/Цвет выберите Полужирный, затем нажмите ОК, и все готово. !

02 использовать условное форматирование для создания предупреждений

JD Sartain / IDG Worldwide

Используйте условное форматирование для создания оповещений

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

Это дополнение к электронной таблице невероятно простое. В ячейке A1 у вас есть формула =СЕГОДНЯ(), и Excel возвращает сегодняшнюю дату. Нажмите функциональную клавишу F2, чтобы отредактировать ячейку A1 и добавить +4 в конец формулы; то есть: =СЕГОДНЯ()+4.

Обратите внимание, что Excel ЗНАЕТ, что 27 февраля плюс 4 равно 3 марта, хотя мы работаем только с номерами дней, а не с днями месяца. В противном случае 27 + 4 равнялось бы 31. Довольно умная программа, да? Итак, теперь у вас есть уведомление за четыре дня до фактической оплаты счетов DUE NOW.

03 изменить одну формулу для 4-дневного уведомления об оплате счетов

JD Sartain / IDG Worldwide

Изменить одну формулу для четырехдневного уведомления об оплате счетов.

Подготовьте таблицу и отправьте ее по электронной почте

Как я упоминал ранее, это не происходит автоматически. Для этого можно написать макрос, но для запуска макроса все равно придется открывать Excel.

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

ПРИМЕЧАНИЕ. Прежде чем приступить к макросу, решите, хотите ли вы использовать столбец E Cardinal Numbers или столбец F Ordinal Numbers. Удалите столбец, который вы решили не использовать. Обратите внимание, что нажатия клавиш выделены полужирным шрифтом, а комментарии заключены в скобки.

Включить запись макросов

<р>1. Перейдите на вкладку Разработчик, затем нажмите кнопку Записать макрос

. <р>2. В разделе Имя макроса введите Оповещения.

<р>3. В разделе Сочетание клавиш введите Shift-M. Excel добавит клавишу Ctrl, поэтому действительными сочетаниями клавиш для макросов являются Ctrl+Shift-M.

ПРИМЕЧАНИЕ. Это одновременное нажатие клавиши. Это означает, что вы нажимаете и удерживаете клавишу Ctrl, затем нажимаете и удерживаете клавишу Shift, затем нажимаете букву M и одновременно отпускаете все три клавиши.

<р>4. В разделе Сохранить макрос в выберите Эта книга (из списка).

<р>5. В разделе Описание введите следующий текст: Располагает счет "СРОКИ СЕЙЧАС" и перемещает кредитора и причитающуюся сумму в верхнюю часть электронной таблицы.

Подготовьте таблицу

Начните запись следующих нажатий клавиш (осторожно):

<р>1. Нажмите Ctrl+Главная

<р>2. Вправо, Вправо, Вправо, Вправо (чтобы удалить столбец E)

<р>3. Вправо, Вправо, Вправо, Вправо, Вправо (чтобы удалить столбец F)

ПРИМЕЧАНИЕ. Не удаляйте оба столбца E и F, а только один или другой.

<р>4. Перейдите на вкладку Главная.

<р>5. Нажмите Удалить (в группе Ячейки).

<р>6. Нажмите Удалить столбец листа (из раскрывающегося списка).

<р>7. Ctrl+Главная

<р>8. Ctrl+F (Курсор по умолчанию автоматически устанавливается в поле Найти. Введите в это поле искомое слово.)

<р>9. Введите: СРОЧНО СЕЙЧАС (заглавными буквами).

<р>10. Нажмите кнопку Параметры.

<р>11. Нажмите на поле Искать и выберите из списка Значения.

<р>12. Нажмите кнопку Найти далее.

<р>13. Нажмите кнопку Закрыть.

<р>14. Влево, Влево, Влево, Влево

<р>15. Удерживая нажатой клавишу Shift, нажмите Вправо (один раз).

<р>16. Ctrl+С

<р>17. Ctrl+Home, Вправо (один раз).

<р>18. Ctrl+V

<р>19. Перейдите на вкладку Главная и выберите группу Шрифт.

<р>20. Нажмите «Цвет шрифта» Красный, затем нажмите Полужирный.

21. Ctrl+Главная

Теперь A1 отображает сегодняшнюю дату (плюс 4), B1 отображает кредитора, а C1 отображает сумму, которую вы должны. Это не кажется большим преимуществом, если у вас есть только 30 или около того записей/строк, отображаемых на одном экране, но если у вас есть 500 записей/строк, приятно иметь счет, который должен появиться в верхней части экрана. таблица в строке 1.

ПРИМЕЧАНИЕ. Если у вас нет кнопки "Электронная почта" в меню ленты, нажмите Файл > Параметры > Настроить ленту и добавьте кнопку «Отправить по электронной почте» на вкладку «Вид». Прочтите мою статью о настройке меню ленты Word для получения дополнительной информации (оно работает в Excel так же, как и в Word). Не останавливайтесь в середине макроса, чтобы выполнить описанную выше процедуру. Сначала добавьте кнопку, затем вернитесь и запишите макрос.

Отправить сообщение по электронной почте с таблицей DUE NOW

Следующие инструкции являются частью вышеуказанного макроса; однако макрос приостанавливается, пока вы находитесь в Outlook.

22. Перейдите на вкладку Вид.

23. Нажмите кнопку Электронная почта.

Excel открывает Microsoft Outlook с новым сообщением электронной почты, отображаемым на экране.

24. Курсор находится в поле Кому; введите здесь адрес электронной почты получателя.

25. Введите дополнительные адреса электронной почты в поле «Копия:» для всех, кто должен получить копию этого электронного письма.

Обратите внимание, что таблица "Оповещения" уже прикреплена, а ее имя, Alerts.xlsx, указано в строке темы.

26. Поместите курсор в тело письма и введите следующее:

Счет за электричество: 2500 долл. США до 3 марта

ПРИМЕЧАНИЕ. Не копируйте ячейки A1:C1, чтобы их можно было вставить в Outlook. Это не сработает. Как только вы входите в Outlook, макрос приостанавливается. Все, что вы делаете в Outlook, должно каждый раз вводиться заново. И вы не сможете вернуться в Excel, пока открытое электронное письмо не будет отправлено или отменено.

27. Нажмите кнопку Отправить письмо.

Outlook закрывается и возвращает вас и ваш курсор в Excel.

28. Перейдите на вкладку Разработчик > кнопку Остановить макрос.

Запишите макрос и отправьте электронную таблицу по электронной почте.

Проверьте свой макрос

<р>1.Нажмите Ctrl+Shift-M. (Нажмите и удерживайте клавишу Ctrl, нажмите и удерживайте клавишу Shift, нажмите букву M, а затем отпустите все три клавиши одновременно.)

<р>2. Макрос запускается через секунду, а затем открывает Outlook, чтобы вы могли ввести данные электронной почты.

<р>3. И снова, после того как вы нажмете Отправить, вы вернетесь к открытой электронной таблице Excel.


Участник форума Дата регистрации 15 марта 2016 г. Расположение Ванкувер, Канада MS-Off Ver w 10, сообщения Excel 2016 105

Application.DisplayAlerts = False не установлено

Кто-нибудь знает какой-нибудь параметр, в котором Application.DisplayAlerts нельзя было бы установить? Я использовал это много раз раньше без проблем. но в текущем модуле у меня

Если я наведу курсор непосредственно перед выполнением этой строки - это True. Если я наведу на него курсор сразу ПОСЛЕ выполнения этой строки (без ошибок) - это все еще True.

Forum Expert Дата регистрации 02.10.2014 Местоположение США MS-Off Ver 2016 Сообщений 1,222

Помимо зависания, что указывает на то, что он на самом деле не выключен? Показывается ли конкретное оповещение?

Есть ли у вас несколько подпрограмм, которые выполняются как часть последовательности макросов? Возможно, где-то в этой подпрограмме другая подпрограмма заменяет эту и возвращает ей значение true?

Способы получить помощь: опубликуйте четкие вопросы, объясните свою общую цель, предоставьте как можно больше информации, ответьте на вопросы, заданные вам теми, кто пытается помочь, и опубликуйте примеры файлов.

"Я здесь, чтобы помогать, а не делать это для людей" - я

Гуру форума Дата регистрации 27 июня 2016 г. Местоположение Лондон MS-Off Ver Windows: 2010; Mac: 16,13 (O365) сообщений 7085


Участник форума Дата регистрации 15 марта 2016 г. Расположение Ванкувер, Канада MS-Off Ver w 10, сообщения Excel 2016 105

Я не знал, что DisplayAlerts не отключается при пошаговом выполнении кода. У меня есть процедура ниже, которая закрывает вещи. проблема в том, что он по-прежнему показывает окно предупреждения «Сохранить файл» при закрытии файлов (4-я строка ниже DisplayAlerts = False)

Гуру форума Дата регистрации 27 июня 2016 г. Местоположение Лондон MS-Off Ver Windows: 2010; Mac: 16,13 (O365) сообщений 7085

Эксперт по форуму Регистрация 23.05.2014 Местоположение '_- Германия >Вне здания. В основном MS-Off Ver Office 2003 2007 2010 ПК, но не Mac. В основном XP и Vista, иногда Win 7 Сообщений 3618

Здравствуйте, Эндрю ( а также Дон и Zer0Cool )
Я заметил, что Screenupdating=False не отключает это для меня в режиме отладки F8, но DisplayAlerts=False, кажется, отключает предупреждения дисплея в режиме отладки F8 для меня.. ???


В любом случае..
Возможно, всплывающее окно не является предупреждением об отображении?
Возможно то, что всплывает, вызвано
________ SaveChanges:= True
Возможно, если ваш файл был изменен, а затем вы говорите ему сохранить любые изменения, то, как правило, тогда захочется сохраните, как только вы внесли изменения, и поэтому в этом случае появится всплывающее окно с вопросом, где сохранить. Он запрашивает информацию, чтобы сделать то, что вы просили. Это не предупреждение вам.
Не знаю, правильно ли это. Это всего лишь мое предположение.

Но что-то вроде этого, похоже, работает для меня, ..здесь я сохраняю перед закрытием, чтобы потом не нужно было закрывать с опцией SaveChanges:= True

В этом коде я не получаю никаких предупреждений с Application.DisplayAlerts = False или Application.DisplayAlerts = True
Мне не о чем предупреждать


Редактировать: Доброе утро, Дон, я не видел вашего последнего поста, так как писал

Гуру форума Дата регистрации 27 июня 2016 г. Местоположение Лондон MS-Off Ver Windows: 2010; Mac: 16,13 (O365) сообщений 7085

Первоначальное сообщение от Doc.Aelstein

Я заметил, что Screenupdating=False не отключает это для меня в режиме отладки F8, но DisplayAlerts=False, похоже, отключает оповещения на дисплее.. ??

возвращает False, но при наведении курсора на него возвращается True, а просмотр свойства в окне Locals также показывает True. Однако, что более важно, он действительно подавляет оповещения для меня!

Но что-то вроде этого, похоже, работает для меня, ..здесь я сохраняю перед закрытием, чтобы потом не нужно было закрывать с опцией SaveChanges:= True

Они функционально эквивалентны.

Эксперт по форуму Регистрация 23.05.2014 Местоположение '_- Германия >Вне здания. В основном MS-Off Ver Office 2003 2007 2010 ПК, но не Mac. В основном XP и Vista, иногда Win 7 Сообщений 3618

Я просто должен отметить, что он «подавляет» их… возможно, есть какая-то тонкая разница между выключенным и подавленным.
(Я также получаю те же результаты в непосредственном окне при обычном запуске F5 или в режиме отладки F8)

Таким образом, это просто наведение курсора на что-то, что кажется мне немного странным, то есть отображение True, когда я ожидаю False, когда я наводил курсор на него.
Возможно, это очередная поломка
Неважно

Эксперт по форуму Регистрация 23.05.2014 Местоположение '_- Германия >Вне здания. В основном MS-Off Ver Office 2003 2007 2010 ПК, но не Mac. В основном XP и Vista, иногда Win 7 Сообщений 3618

( Я также отмечаю, что он всегда начинает говорить мне, что это True везде, даже если я оставил его в False в последнем коде. Странно. Он говорит мне, что также для Application.ScreenUpdating --- но я знайте, что на практике, если я оставлю значение False, мой экран обычно не работает.
_.. так что, похоже, вы не можете полностью полагаться на все эти вещи. Всегда лучше экспериментировать.. )

Гуру форума Дата регистрации 27 июня 2016 г. Местоположение Лондон MS-Off Ver Windows: 2010; Mac: 16,13 (O365) сообщений 7085

Первоначальное сообщение от Doc.Aelstein

DisplayAlerts просто применяет параметр по умолчанию в любом диалоговом окне.

Я думаю, что окно просмотра ближе к Debug.Print, чем к окну Locals (окно просмотра может фактически повлиять на ваш код).

Эксперт по форуму Регистрация 23.05.2014 Местоположение '_- Германия >Вне здания. В основном MS-Off Ver Office 2003 2007 2010 ПК, но не Mac. В основном XP и Vista, иногда Win 7 Сообщений 3618

Прикладные логические блокировки Блокировки .Boo. Конечно много Булокса Правда это или нет - Wot

Ах, рад, что ты вернулся. Я на самом деле перепутал местных жителей и смотровое окно. ..

Поэтому я взглянул на локальное окно, чтобы завершить набор.

Я никогда раньше не использовал локальное окно, поэтому, возможно, я не смотрю на Application.DisplayAlerts так, как должен и могу. Возможно, мой Boolox — это куча Bolox.

Гуру форума Дата регистрации 27 июня 2016 г. Местоположение Лондон MS-Off Ver Windows: 2010; Mac: 16,13 (O365) сообщений 7085

Интересно. Я просто присвоил объект Application переменной, а затем просмотрел его свойства в окне Locals.

Эксперт по форуму Регистрация 23.05.2014 Местоположение '_- Германия >Вне здания. В основном MS-Off Ver Office 2003 2007 2010 ПК, но не Mac. В основном XP и Vista, иногда Win 7 Сообщений 3618


Кто-то, кто, казалось, знал, о чем они говорили в то время, однажды сказал мне что-то о том, что вещи, связанные с _ приложением , связываются по-разному, эффективно поздно или рано ... но я действительно не знаю, что я я говорю, и, вероятно, здесь нет никакого отношения…
( Я знаю о позднем и раннем связывании, но я просто делаю дикое необоснованное предположение, что может быть какое-то отношение к расхождениям здесь. . .. может быть, мое использование моего BooLox сделало кое-что позже, чем просмотр в окне материалов локального приложения, или что-то в этом роде… но я просто болтаю чепуху… )

Гуру форума Дата регистрации 27 июня 2016 г. Местоположение Лондон MS-Off Ver Windows: 2010; Mac: 16,13 (O365) сообщений 7085

Я просмотрел эту ссылку, но не понял, как она связана с этим? В нем упоминаются общие объекты с поздней привязкой, а не объект приложения.

Тем не менее, COM-интерфейс Excel.Application действительно имеет позднее связывание, поскольку он помечен как расширяемый. Вот почему вы можете написать что-то вроде


Участник форума Дата регистрации 15 марта 2016 г. Расположение Ванкувер, Канада MS-Off Ver w 10, сообщения Excel 2016 105

Привет всем. Спасибо за отличную информацию. интересные вещи.

Вы правы - окно с предупреждением появляется на несохраненной ББ - это временно используемая пустая ББ. Я не знал, что это по-прежнему будет отображать окно сохранения, если DisplayAlerts будет отключен при закрытии. Мне просто нужно убить его. Чтобы предотвратить окно - я должен просто сохранить его и убить?.

Эксперт по форуму Регистрация 23.05.2014 Местоположение '_- Германия >Вне здания. В основном MS-Off Ver Office 2003 2007 2010 ПК, но не Mac. В основном XP и Vista, иногда Win 7 Сообщений 3618

Если вы сохранили его, то окно (для перехода к месту сохранения) не появится.
Люди обычно советуют не использовать функцию «Убить», так как это может быть опасно.
Лучше просто удалить файл позже вручную или просто проигнорировать его

Редактировать
или
вы можете
__ Close_WB.Close SaveChanges:= False
Это также не приведет к появлению этого окна — если это записки, то вы не должны не важно, сохраняешь ты вещи или нет?
Но если вы не сохраняете, Excel не захочет спрашивать вас, куда его сохранить. _. .

""открывать" книги, которых нет"
'_. .Вы видите, что то, что у вас на самом деле «открыто» перед вами, не является рабочей книгой, как вы думаете. Это вообще не рабочая тетрадь. Это просто что-то похожее на копию рабочей тетради, как вы думаете. Эта копия была сделана, когда вы думали, что «открыли» ее.
Он действительно не был открыт. Просто была сделана копия, и вы смотрите на копию.
Если вы просто закроете (без сохранения SaveChanges:= False ), эта копия исчезнет.
(Исходная рабочая книга остается такой, какой она была, или, скорее, остается такой, какая она есть, без изменений (при условии, что вы тем временем не сохраняли))
Если вы сохраняете, то на самом деле происходит то, что в этот момент в время (время сохранения) файл в указанном месте обновляется из копии перед вами.


Участник форума Дата регистрации 15 марта 2016 г. Расположение Ванкувер, Канада MS-Off Ver w 10, сообщения Excel 2016 105

Спасибо, док. Проблема в том, что подпрограмма CloseNClean вызывается из цикла, который выполняет миллион других действий. sub просто закрывает все в конце цикла, а другой код внутри цикла открывает файлы по мере необходимости в следующий раз. Таким образом, этот закрытый подраздел на самом деле не знает, какие файлы открыты по имени, следовательно, «для каждого». Я предположил, что все открытые файлы необходимо сохранить, поэтому .SaveChanges := True. Основная процедура выполняется весь день, поэтому в день может использоваться около сотни рабочих книг TEMP. Поэтому мне бы очень хотелось найти способ просто выбрасывать их в код, не останавливая код и не ожидая ввода, или не удаляя их вручную.

Еще раз спасибо за помощь. Вот код снова для справки.

Гуру форума Дата регистрации 27 июня 2016 г. Местоположение Лондон MS-Off Ver Windows: 2010; Mac: 16,13 (O365) сообщений 7085


Участник форума Дата регистрации 15 марта 2016 г. Расположение Ванкувер, Канада MS-Off Ver w 10, сообщения Excel 2016 105

Эксперт по форуму Регистрация 23.05.2014 Местоположение '_- Германия >Вне здания. В основном MS-Off Ver Office 2003 2007 2010 ПК, но не Mac. В основном XP и Vista, иногда Win 7 Сообщений 3618


Участник форума Дата регистрации 15 марта 2016 г. Расположение Ванкувер, Канада MS-Off Ver w 10, сообщения Excel 2016 105

Еще раз спасибо, Док и Дон. Дон, кажется, твое предложение работает. Вы оба были так полезны, как всегда. Так что очень ценю. Сегодня я узнал кое-что новое из ваших постов. Ваше здоровье!
Я отмечу это как закрытое.

Гуру форума Дата регистрации 27 июня 2016 г. Местоположение Лондон MS-Off Ver Windows: 2010; Mac: 16,13 (O365) сообщений 7085

Эксперт по форуму Регистрация 23.05.2014 Местоположение '_- Германия >Вне здания. В основном MS-Off Ver Office 2003 2007 2010 ПК, но не Mac. В основном XP и Vista, иногда Win 7 Сообщений 3618

Application.DisplayAlerts = False не устанавливается. Удалить все временные открытые файлы книги

Здравствуйте, Эндрю! Привет, Дон
Спасибо, Эндрю, за отзыв, представителя и за пометку темы как [Решено] .

Несколько дополнительных комментариев и, возможно, полезных наблюдений... в основном из последнего кода Дона..

Первоначальное сообщение от xlnitwit

Автор: Эндрю Энти

Вы ищете все, что маскируется под рабочие тетради в воображаемом мире экрана вашего компьютера:

У вас будет одна или несколько из следующих вещей, маскирующихся под рабочие книги:

_(i) Копии любых существующих файлов: копии появились, когда вы их открыли.
Тем не менее, Excel хранит для них .path. Он содержит путь к фактическим файлам, копиями которых они являются.
Если вы закроете эти «файлы» одним из трех возможных вариантов ( Kloss_WB.Close SaveChanges:= False _ Kloss_WB.Close SaveChanges:= True _ Kloss_WB.Close ____ ), то вы не заставит окно всплывать, чтобы спросить, где сохранить.
Если вы используете эти два варианта , которые включают любой из двух необязательных аргументов ( Kloss_WB.Close SaveChanges: = False _ Kloss_WB.Close SaveChanges: = True _ ), вы не получите предупреждение с вопросом, действительно ли вы хотите сохранить изменения.
Если вы закроете с помощью этой опции ( _ Kloss_WB.Close ____ ), вы можете получить предупреждение с вопросом, хотите ли вы сохранить изменения: вы не получите его, если вы либо не внесли никаких изменений, либо сохраняйте d после любых изменений.

_(ii) Возможно, вы создали несколько новых файлов. Или так вы, возможно, думали. Если вы думали, что сделали это, значит, вы еще не создали эти файлы. Они будут сделаны при сохранении. Перед сохранением эти вещи не имеют .path .
Итак, последний фрагмент кода Дона изначально ищет «файлы» этого (ii) типа. Пока вы включаете любой из двух необязательных аргументов, вы не получите предупреждение с вопросом, хотите ли вы сохранить изменения. Кроме того, если вы выберете, как это сделал Дон, опцию ( Kloss_WB.Close SaveChanges:= False ), то попытка сохранения не будет предпринята. Вы не удалили файл. Его никогда не существовало. Но может показаться, что вы удалили временную книгу. Я полагаю, это именно то, чего ты, Эндрю, хотел. На самом деле довольно аккуратно и хорошо видно с Дона.

Примечание: любые другие файлы, которые не были «Временными файлами», но которые были «открыты» не удаляются. Но они сохраняются (если они не являются файлом с кодом в ) и закрываются строками кода Дона
__ Else
____ Close_WB.Close SaveChanges:= True
Я полагаю, это именно то, чего ты, Эндрю, хотел


_2) Это, вероятно, не актуально сейчас, так как Дон, вероятно, попал в самую точку с тем, что вы на самом деле хотели… но если вы действительно хотите удалить все «открытые» файлы, то мой последний код был не совсем правильно, потому что
_a) я предполагал, что все файлы находятся в папке как файл с кодом в нем,
_b) я упустил тонкий момент, который код Дона поднял о « файлы», которые «открыты», у которых нет пути, поскольку они нигде не существуют.
Это был бы мой код сейчас (но я бы никогда его не использовал. Я уверен, что вы используете этот код, и однажды вы захотите убить меня, потому что вы непреднамеренно удалили без следа что-то важное):
< /p>

_3) Если вы действительно хотите удалить все файлы «open», с .path и без него, я бы сделал это по-другому. Я бы создал вручную (или создал как часть своего кода) папку, возможно, на моем рабочем столе с именем вроде «TemporayFileDump». Папка, затем уничтожьте ее на исходном месте, если она была (тип (i) будет иметь место, тип (ii) не будет)
Время от времени я удалял папку «TemporayFileDump», или еще лучше копировал его в какой-нибудь дешевый внешний источник файлов, добавляя дату к его имени, а затем удаляя папку на моем рабочем столе.

(Мне может быть интересно сделать этот вариант 3) для собственного использования когда-нибудь, … (но я ожидаю, что на самом деле вместо этого буду использовать код Дона) … если я это сделаю, я оставлю ссылку на то, где у меня есть код в этой теме. )

Спасибо. Мы получили ваш запрос и незамедлительно ответим.

Присоединяйтесь к нам!

  • Общаться с другими участниками
  • Уведомления об ответах
    на ваши сообщения
  • Поиск по ключевым словам
  • Доступ в один клик к вашим
    любимым форумам
  • Автоматические подписи
    на ваших сообщениях
  • Лучше всего то, что это бесплатно!

*Функции Tek-Tips зависят от того, получают ли участники электронную почту. Присоединяясь, вы соглашаетесь на получение электронной почты.

Правила публикации

Реклама, продажа, рекрутинг, размещение курсовых и дипломных работ запрещено.

Использование «Application.DisplayAlerts = False приводит к ошибке компиляции «Method or Data Member not found»

Использование «Application.DisplayAlerts = False приводит к ошибке компиляции «Method or Data Member not found»

У меня есть модуль в Access для форматирования ячеек в электронной таблице Excel.

Sub FormatData()
Workbooks.Open FileName:="C:\Users\john.doe\Documents\scripts\apps\allow\Weekly_Cash_Trending"
Workbooks("Weekly_Cash_Trending.xlsx"). Активировать

ActiveWorkbook.SaveAs FileName:="C:\Users\john.doe\Documents\scripts\apps\allow\Weekly_Cash_Trending"
End Sub


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


Когда я изменяю код для использования "Application.DisplayAlerts"

Sub FormatData()
Application.DisplayAlerts = False
Workbooks.Open FileName:="C:\Users\john.doe\Documents\scripts\apps\allow\Weekly_Cash_Trending"
Workbooks("Weekly_Cash_Trending.xlsx"). Активировать

ActiveWorkbook.SaveAs FileName:="C:\Users\john.doe\Documents\scripts\apps\allow\Weekly_Cash_Trending"
Application.DisplayAlerts = True
End Sub

Я получаю следующую ошибку: Метод или элемент данных не найден


Я новичок в кодировании VBA (очевидно), может ли кто-нибудь помочь мне решить эту проблему? Спасибо!

Некоторые вещи, которые следует учитывать:
a) Вы получаете доступ к книге Excel из Access без предварительного создания или "перехвата" экземпляра приложения Excel.
b) Вы используете такие объекты, как Range, Selection или Application, не указывая, что вы действительно хотите обратиться к Excel.Application или Excel.Range
c) Вы используете Selection для операции, которая не требует выбора .
d) Выбор диапазона непосредственно перед закрытием ничего не делает.
e) Вы используете "Сохранить как", даже если вы не сохраняете по другому пути или под другим именем.

КОД --> VBA

"Знание — сила. Информация освобождает. Образование — предпосылка прогресса в каждом обществе, в каждой семье". (Кофи Аннан)
Выступают против SOPA, PIPA, ACTA; меры по ограничению свободы информации под любым именем.

Цитата (Calhoun99)

Это работает, потому что:
1) у вас открыт excel,
2) проект vba имеет ссылку на библиотеку excel,
3) нет конфликта между используемыми типами объектов excel (как книги, диапазон, столбцы) и типы в библиотеках с более высокими ссылками.
Когда вы вызываете приложение, доступ vba предполагает, что вы имеете в виду приложение доступа, поэтому ошибка. Убедитесь, что лист, который вы планируете форматировать, ваш код работает с активным листом (это может быть случайным и зависит от выбора при сохранении), MakeItSo предполагает в первую очередь.

>У меня есть модуль в Access

Объект приложения Access не реализует свойство DisplayAlerts

Спасибо MakeItSo за объяснение и код. Это сработало отлично!
Вы тоже комбо, спасибо за ваши комментарии!

Отправлено предупреждение

Спасибо, что помогаете защищать форумы Tek-Tips от неприемлемых сообщений.
Персонал Tek-Tips проверит это и примет соответствующие меры.

Ответить в этой теме

Размещение сообщений на форумах Tek-Tips доступно только для участников.

Нажмите здесь, чтобы присоединиться к Tek-Tips и пообщаться с другими участниками! Уже участник? Войти

Читайте также: