Я обнаружил, что, хотя можно программно отключить «Проверку совместимости» Excel с помощью кода (используя ActiveWorkbook.CheckCompatibility = False либо перед вызовом SaveAs, либо глобально, перехватывая событие ActiveWorkbook.BeforeSave), похоже, что это не работает, если есть « Обнаружена значительная потеря функциональности». Быстрый способ проверить это:
- Создайте новую книгу Excel 2010.
- Выберите A1:A2 и выберите условное форматирование (неважно какое).
- Выберите A2:A3 и выберите другое условное форматирование. A2 должен иметь два разных условных формата.
Откройте редактор VBA и добавьте следующий код в модуль Workbook:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ActiveWorkbook.CheckCompatibility = False End SubПоставьте точку останова в коде.
- Вернувшись в электронную таблицу, выберите «Файл» > «Сохранить как». Код немедленно перейдет к точке останова. Если вы выполните код, вы можете проверить настройку
CheckCompatibilityна панели Immediate. - После завершения кода выберите тип файла Excel 97-2003 и нажмите «Сохранить».
- Проверка совместимости по-прежнему открывается.
Я подозреваю, что это связано с тем, что ошибка не является «незначительной проблемой совместимости» (см. http://msdn.microsoft.com/en-us/library/office/gg132972(v=office.14).aspx), но я ничего не делаю, чтобы подавить это ошибка, даже не создавая запись в реестре, чтобы отключить ее. Кто-нибудь знает, как подавить чекер даже при "значительной" несовместимости?
ETA: Не вдаваясь в ненужные подробности, я пытаюсь автоматизировать процесс, в котором несколько шаблонов поставщиков открываются, заполняются данными, обрабатываются в соответствии с огромным (и всегда немного отличающимся) набором правил контроля качества и сохранен обратно в виде файла .xls (в соответствии с требованиями поставщика). Поскольку это происходит с десятками различных рабочих книг шаблонов каждые два часа в автоматической системе, я не могу просто отменить требование совместимости для каждой рабочей книги. Я имею в виду, я полагаю, что мог бы, но это стало бы моей основной работой. Мне нужна возможность отключить проверку совместимости во время выполнения для любой книги в первый раз без вмешательства человека.
Workbook.DoNotPromptForConvertв дополнение кWorkbook.CheckCompatibility— см. здесь - person barrowc   schedule 28.02.2013CheckCompatibilityтоже не работал. Похоже, что событие BeforeSave запускается до появления диалогового окна пользовательского интерфейса, но проверка совместимости выполняется после закрытия окна. - person mounty   schedule 28.02.2013