Excel не спрашивает сохранить изменения

 

Zhukov_K

Пользователь

Сообщений: 711
Регистрация: 30.03.2013

У кого нибудь такое было, открываешь файл, что-то делаешь, закрываешь, а эксель не предлагает сохранить изменения
если да, то почему такое происходит и как это «лечиться»?
макросов нет, каких-то надстроек и других наворотов — нет, Эксель 2010

 

Zhukov_K

Пользователь

Сообщений: 711
Регистрация: 30.03.2013

макросов нет, каких-то надстроек и других наворотов — нет, Эксель 2010

 

LVL

Пользователь

Сообщений: 903
Регистрация: 01.01.1970

 

marker_mc

Пользователь

Сообщений: 228
Регистрация: 24.12.2012

#4

27.05.2013 12:39:34

не уверен конечно, но попробуйте создать модуль в файле, вставить туда этот код

Код
Sub ttt()
    Application.DisplayAlerts = True
End Sub

выполнить его, а потом закрыть ексель и в любом файле попробовать сделать изменение и закрыть

 

Zhukov_K

Пользователь

Сообщений: 711
Регистрация: 30.03.2013

нет, не на любом, иногда вообще все нормально, а в некоторые дни такое случается..
(

 

The_Prist

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Voodoo magic… :D

Правда, я в магию не верю. Поэтому:

  • Либо в какой-то момент запускается макрос, о котором Вы не знаете, который выключает показ уведомлений;
  • либо барабашка…

других вариантов нет.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Muradin

Пользователь

Сообщений: 3
Регистрация: 24.11.2013

Так вы смогли решить эту проблему?

 

Sobes

Пользователь

Сообщений: 212
Регистрация: 01.01.1970

Наверное прежде всего надо:
1. Открыть редактор VB Alt+F11 — посмотеть, нет ли там каких-то книг, котрые не отображаются
2. проверить каталог автозапуска Excel
3. проверить службы автозапуска Windows
4. Особое внимание обратить на файлы с расширением .xl*
Возможно, что ты кого-то кинул и это страшная месть :)
Если не помогает, возможно дело в том файле, который ты пытаешься редактировать. :)

 

D07

Пользователь

Сообщений: 60
Регистрация: 06.06.2014

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

В редакторе VBA ( Alt + F11), в окне Immediate (Ctrl + G) набрать (или скопировать туда) команду:
Application.DisplayAlerts = True
Нажать клавишу Enter.
Делаю, жму Интер — просто перескакивает на следующую строку

Вот еще
Лучше поискать среди макросов: Application.DisplayAlerts. Можно в редакторе VBA(Alt+F11) нажать Ctrl+F и в группе Search указать Current Project и посмотреть где(в какой процедуре, функции) свойству DisplayAlerts присваивается False или 0. И перед концом этой процедуры(или перед точкой выхода: Exit Sub, Exit Function) поставить Application.DisplayAlerts = 1.

У меня ничего не находится поиском. Либо может не там ищу. Помогите пожалуйста.

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#10

03.10.2021 09:41:57

не находит — значит нет таких слов
а в процедeре

Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  'может быть строка:
  ThisWorkBook.Saved=True

или что-то с аналогичным смыслом
Excel закроет файл с такой строкой без предупреждения что нужно что-то сохранять)

Изменено: Ігор Гончаренко03.10.2021 09:43:40

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

sokol92

Пользователь

Сообщений: 4445
Регистрация: 10.09.2017

#11

03.10.2021 15:56:58

Цитата
D07 написал:
сломался эксель файл

Выгрузите проблемный файл (предварительно удалив из него конфиденциальные данные).

Владимир

 

Bivine

Пользователь

Сообщений: 1
Регистрация: 01.11.2021

#12

01.11.2021 15:04:40

Zhukov_K

, у меня была такая же проблема. Возникла, когда в компании внедрили анализ финансовых данных. В моём случаи проблема решилась её отключением. Переходим в параметры, далее в настройки, внизу «управление Настройки Excel», нажимаем «Перейти» и убираем галочку с «пакет анализа». Проблема должна исчезнуть и при закрытии файла Excel, при внесении каких-то поправок в файл, система будет каждый раз предлагать сохранить изменения или нет.

Прикрепленные файлы

  • Откл. Анализ финансовых данных.jpg (26.04 КБ)

Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

Описание

В Microsoft Excel можно создать макрос Microsoft Visual Basic для приложений (VBA), который подавляет запрос на Сохранение изменений при закрытии книги. Это можно сделать, указав состояние книги, в которой хранится сохраненное свойство, или подавить все оповещения для книги.

Дополнительные сведения

ПРИМЕЧАНИЕ. Корпорация Майкрософт предоставляет примеры программирования только для иллюстрации, не выполняя либо подразумеваемых. Сюда относится, но не ограничивается подразумеваемым гарантийным обязательством о товаре или пригодности для определенной цели. В этой статье предполагается, что вы знакомы с языком программирования, который вы продемонстрировали, и с инструментами, используемыми для создания и отладки процедур. Специалисты службы поддержки Майкрософт могут объяснить особенности конкретных процедур. Однако они не изменяют эти примеры для предоставления дополнительной функциональности или создания процедур, отвечающих вашим конкретным требованиям. 

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

  1. Запустите Excel и откройте новую книгу.

  2. Нажмите клавиши ALT + F11, чтобы запустить редактор Visual Basic.

  3. В меню Вставка выберите пункт модуль.

  4. Введите пример кода макроса на лист модуля.

  5. Нажмите клавиши ALT + F11, чтобы вернуться в Excel.

  6. В Microsoft Office Excel 2003 и более ранних версиях Excel в меню Сервис выберите пункт макрос , а затем — макросы.

    В Microsoft Office Excel 2007 в группе код на вкладке разработчик нажмите кнопку макросы

    Если вкладка разработчик

    недоступна, выполните указанные ниже действия.

        помощью. Нажмите кнопку Microsoft Office , а затем — Параметры Excel.

    байт. В категории популярные в разделе Основные параметры работы с Excelвыберите пункт Показать
    .
            Флажок «Разработчик» на ленте
    и нажмите кнопку ОК.

  7. Выберите нужный макрос и нажмите кнопку выполнить.

Свойство Saved возвращает значение false , если после последнего сохранения книги были внесены изменения.

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

Пример 1: Закрытие книги без сохранения изменений

Чтобы принудительно закрыть книгу, не сохраняя никаких изменений, введите следующий код в модуль Visual Basic этой книги:
 


    ДоЧерний элемент Auto_Close ()


        ThisWorkbook. Save = true


    End Sub

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

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


    Sub Клосебук ()


        Application. Дисплайалертс = false


        Активеворкбук. Close


        Application. Дисплайалертс = true


    End Sub

Кроме того, можно использовать аргумент SaveChanges метода Close .

Следующий макрос закрывает книгу без сохранения изменений.

   

Sub CloseBook2()


   

   

ActiveWorkbook.Close savechanges:=False

   

End Sub

Пример 2: Закрытие книги и сохранение изменений

Чтобы принудительно сохранить изменения в книге, введите следующий код в модуль Visual Basic этой книги:
 


    ДоЧерний элемент Auto_Close ()


        Если ThisWorkbook. Save = false, то


            ThisWorkbook. Save End, если


    End Sub

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

Нужна дополнительная помощь?

02.04.2013, 17:21. Показов 26854. Ответов 1


Студворк — интернет-сервис помощи студентам

Мои коллеги обратились ко мне за помощью.
У них не отображается диалог «Сохранить изменения в файле» в MS EXCEL 2007 при выходе без сохранения или при нажатии символа «x» в правом верхнем углу окна («Закрытие» MS Excel).
И, соответственно, теряются все сделанные в файле Excel изменения безо всяких предупреждений.

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

Каким образом можно избавиться от этой ошибки ?



0



Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

Описание

В Microsoft Excel можно создать макрос Microsoft Visual Basic для приложений (VBA), который подавляет запрос на Сохранение изменений при закрытии книги. Это можно сделать, указав состояние книги, в которой хранится сохраненное свойство, или подавить все оповещения для книги.

Дополнительные сведения

ПРИМЕЧАНИЕ. Корпорация Майкрософт предоставляет примеры программирования только для иллюстрации, не выполняя либо подразумеваемых. Сюда относится, но не ограничивается подразумеваемым гарантийным обязательством о товаре или пригодности для определенной цели. В этой статье предполагается, что вы знакомы с языком программирования, который вы продемонстрировали, и с инструментами, используемыми для создания и отладки процедур. Специалисты службы поддержки Майкрософт могут объяснить особенности конкретных процедур. Однако они не изменяют эти примеры для предоставления дополнительной функциональности или создания процедур, отвечающих вашим конкретным требованиям.

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

Запустите Excel и откройте новую книгу.

Нажмите клавиши ALT + F11, чтобы запустить редактор Visual Basic.

В меню Вставка выберите пункт модуль.

Введите пример кода макроса на лист модуля.

Нажмите клавиши ALT + F11, чтобы вернуться в Excel.

В Microsoft Office Excel 2003 и более ранних версиях Excel в меню Сервис выберите пункт макрос , а затем — макросы.

В Microsoft Office Excel 2007 в группе код на вкладке разработчик нажмите кнопку макросы .

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

помощью. Нажмите кнопку Microsoft Office , а затем — Параметры Excel.

байт. В категории популярные в разделе Основные параметры работы с Excelвыберите пункт Показать
. Флажок «Разработчик» на ленте и нажмите кнопку ОК.

Выберите нужный макрос и нажмите кнопку выполнить.

Свойство Saved возвращает значение false , если после последнего сохранения книги были внесены изменения.

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

Пример 1: Закрытие книги без сохранения изменений

Чтобы принудительно закрыть книгу, не сохраняя никаких изменений, введите следующий код в модуль Visual Basic этой книги:

ДоЧерний элемент Auto_Close ()

ThisWorkbook. Save = true

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

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

Application. Дисплайалертс = false

Application. Дисплайалертс = true

Кроме того, можно использовать аргумент SaveChanges метода Close .

Следующий макрос закрывает книгу без сохранения изменений.

Пример 2: Закрытие книги и сохранение изменений

Чтобы принудительно сохранить изменения в книге, введите следующий код в модуль Visual Basic этой книги:

ДоЧерний элемент Auto_Close ()

Если ThisWorkbook. Save = false, то

ThisWorkbook. Save End, если

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

клиент прислал мне Excel .xlsx документы, и каждый раз, когда я открываю один из них, а затем закрываю его, Excel спрашивает, хочу ли я Сохранить изменения, даже если я их не делал. Это не происходит ни с одним из моих других файлов Excel. Что здесь происходит?

в файлах нет макросов. Я использую Excel 2007.

10 ответов

Это происходит, когда что-то в файле изменилось. Много раз пользователь не понимает, есть элементы в файле, которые были обновлены или вычислены. Вот несколько примеров распространенных сценариев:

  • в файле используется функция volatile. Примеры летучих формул приведены в разделе подробнее информационный раздел данной статьи.
  • файл открыт в более новой версии и формулы были рассчитаны. См. статью в разделе Дополнительные сведения.
  • формула, содержащая ссылку на формулу в другой книге и использующая изменяемые функции.
  • общие фотографии.
  • итерационные формулы.
  • диаграммы, которые находятся на листах диаграмм или которые встроены в листы, но имеют свои исходные данные в другом рабочая тетрадь.
  • код VBA, обновляющий книгу.»

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

одна из возможностей заключается в том, что .xlsx файл содержит внешние ссылки как минимум в одной ячейке. Eg

обычно, если вы откроете этот файл появится.

тем не менее, есть раздражает параметр, который бросает людей прочь в данных/редактировать ссылки/START UP PROMPT/Dont отображать оповещения и обновления ссылки, которые переопределяет этот запрос

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

Это одна из возможных зацепок.

EDIT:

другая возможность .xlsx содержит формулу даты, например NOW() или TODAY() который предложит сэкономить при закрытии

Дамы и господа!

Можно ли сделать так, чтобы перед закрытием файла Excel не спрашивал «Сохранить изменения»?

Штатными или нештатными средствами, но добиться этого необходимо.

Позвольте всё же поинтересоваться — зачем?
Интересно же..

К делу — попробуйте по аналогии с «вордом» —
[DocWord.Close True]
И использовать в
«AutoExec — при запуске Word или загрузке глобального шаблона
AutoNew — при создании нового документа
AutoOpen — при открытии существующего документа
AutoClose — при закрытии документа
AutoExit — при закрытии Word или выгрузке глобального шаблона»

«Подробнее об использовании автоматически запускаемых макросов см. раздел Auto Macros справочной системы.»

Так что google & help ещё помогают 🙂

From: tigrafrog
2006-03-24 08:25 am (UTC)

У нас какая-то программа данные для себя вытягивает из экселевского файла.

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

На самом деле никаких изменений программой в документ не вносится, просто он пересчитывается и данные меняются… В принципе, если отключить автоматический обсчёт листа, то таблички с вопросом об изменениях тоже не будет…

А google и help помогают только тем, кто знает как конкретно называется то, что он ищет. Перед тем как написать пост сюда я полчасика посикал и в гугле и в хэлпе.

From: miiiiia
2006-03-24 08:32 am (UTC)

258

25 июня 2004 года

SergeySV

1.5K / / 19.03.2003

Хм, прикольная получилась задачка, я раз десять подвесил свой Excel, прежде чем во всем разобрался и отладил код :)

Сразу поясню насчет параметра SaveAsUI, чтоб он больше нам не мешал — эта переменная в событии _BeforeSave всего лишь показывает как пользователь пытается сохранить файл: серез СОХРАНИТЬ или через СОХРАНИТЬ КАК, и все. Это для информации, соотв. присвоение этой переменной какого своего значение внутри события _BeforeSave не имеет никакого смысла. Тебе Excel эту переменную передал в качестве информации, по ByVal к тому же и то что ей что то еще пытаешься присвоить, на это Excel уже никакого внимание обращать не будет.

Теперь на счет твоих проблем с SaveAs внутри события _BeforeSave.
Тут складывается действительно забавная ситуация. Дело в том, что вызывая метод в SaveAs в этом событии мы порождаем опять же это событие, поэтому очень важно предусмотреть возможность выхода из него, не допустив зацикливания.
Происходит все следующим образом:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

строка1
ThisWorkbook.SaveAs «c:3.xls» ‘ строка2
строка3
End Sub

Мы нажимаем кнопку Сохранить в Excel’е.
попадаем в событие _BeforeSave на строчку1.
Переходим к строчке2 — ThisWorkbook.SaveAs «c:3.xls», которая порождает ВТОРОЕ событие _BeforeSave.
Поэтому со строчки2 мы вновь попадаем на строчку1.
Визуально это можно представить себе так, как если разместить рядом два одниковых куска кода процедуры Private Sub Workbook_BeforeSave и нарисовать стрелку перехода со строчки2 первого куска на второй кусок Private Sub Workbook_BeforeSave.

Эта аналогия будет полной еще в том смысле, что Excel отработает весь второй кусок и потом, ВНИМАНИЕ: вернуться в первый кусок на след. строчку после той, с которой его грубо прервали вызвав SaveAs (т.е. в нашем примере на строчку3)

Т.е. выполнение кода по строчка будет следующее:
строчка1 (_BeforeSave1)
строчка2 (тут мы вызываем еще одно _BeforeSave)
строчка1 (_BeforeSave2)
‘строчка2(_BeforeSave2)
строчка3 (_BeforeSave2)
строчка3 (вернeлись в первый _BeforeSave)

Хорошо видно что если не поставить какое-нибудь доп. условие на строчку2 (.SaveAs), то оно будет каждый раз порождает очередные _BeforeSave и мы так зациклимся.

Поэтому если внутри события _BeforeSave надо сохранить файл под другим названием, то бцдет например такой:

Код:

Dim lEvent As Long
Dim bolEx As Boolean

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

 If lEvent = 0 Then
    lEvent = 1
    ThisWorkbook.SaveAs «c:3.xls»
 ElseIf lEvent = 1 Then
    lEvent = 0
    bolEx = True
 End If

 If lEvent = 0 And bolEx Then
   bolEx = False
   Cancel = False
 Else
   Cancel = True
 End If

End Sub

Чтобы посмотреть как работает этот код можешь открыть приложенный файл поставить breakpoint на If lEvent = 0 Then в событии _BeforeSave и нажать кнопку сохранить и двигаясь по шагам (через F8 ) увидишь как для второго события устанавливается Cancel=False, а при возвращаении к первому Cancel становится равным =True (если этого не сделать, то получим зависание Excel’я, он будет пытаться сохранить файл, который мы уже сохранили под другим именем, у Excel крышу тогда снесет)

Понравилась статья? Поделить с друзьями:
  • Excel не сохраняется в pdf
  • Excel не реагирует на клавиатуру
  • Excel не сохраняется автор
  • Excel не реагирует на действия мыши
  • Excel не сохраняет форматы ячеек