Сведения об изменениях объектной модели Office 2010, которые могут иметь большое влияние

Исходная статья опубликована в пятницу, 9 сентября 2011 г.

Автор статьи — наш эксперт по совместимости, Кертис Савин (Curtis Sawin)

Одной из трудностей при переходе на Office 2010 является оценка влияния изменений объектной модели в приложениях Office. ИТ-специалисты и разработчики боятся, что (например) макросы, созданные в предыдущей версии Excel, не будут работать в Excel 2010 из-за изменившейся объектной модели. Нарушение работы макросов кажется практически неизбежным при изучении длинного списка отличий объектных моделей последних версий приложений Office 2010 и их предшественников в Office 2007, 2003, XP и 2000 на веб-сайте MSDN (см. ссылки в конце этой статьи). Однако большинство изменений являются незначительными и не повлияют на ваши макросы. Что значит "большинство", спросите вы? Ниже представлено краткое объяснение.

  • В объединенных объектных моделях Excel 2010, Word 2010, PowerPoint 2010, Outlook 2010 и Access 2010 используется более 22 000 элементов (свойств, методов и констант).
  • Число изменений в объектных моделях — 2 134.
  • Число изменений, которые могут иметь большое влияние — 49.

49 изменений с потенциальным влиянием. В 5 приложениях. Охватывающих 4 предыдущих версии. Это все. Вот диаграмма, подводящая итоги наших исследований:

В этой статье обсуждается, что мы имеем в виду под незначительными изменениями и изменениями, которые могут иметь большое влияние. ДОПОЛНЕНИЕ . Для удобства у нас есть таблица, в которой перечислены все изменения, которые могут иметь большое влияние. Она также прикреплена в виде PDF-файла в конце этой статьи.

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

В документации MSDN представлены все изменения объектной модели для каждого приложения Office 2010. Изменения организованы таким образом, что для каждой предыдущей версии Office перечисляются все методы и свойства, которые были изменены, удалены или больше не поддерживаются.

Например, для Excel 2010 представлено около 900 элементов объектной модели, отличающихся от предыдущих версий. На первый взгляд это кажется огромным и пугающим числом. В статье MSDN Изменения объектной модели Excel 2010 по сравнению с предыдущими версиями перечислены все эти измененные элементы. Если их распечатать, они займут около 90 страниц.

Нерекомендуемые элементы — незначительные

Большинство из этих изменений — это нерекомендуемые элементы (также указанные как скрытые). Что значит "нерекомендуемый" элемент и как он повлияет на ваши макросы? Если элемент указан как нерекомендуемый, это значит, что на него не следует рассчитывать в будущих версиях Office и необходимо запланировать обновление кода в будущем. Однако нерекомендуемый элемент все равно будет работать! Поэтому, если у вас есть макрос, созданный для предыдущей версии Office и содержащий нерекомендуемые методы, свойства или константы, не нужно ничего делать, чтобы они работали в Office 2010. Ничего. Из почти 900 измененных элементов (882, чтобы быть точным), 794 — нерекомендуемые. Это значит, что почти 800 из 900 изменений в объектной модели Excel никак не повлияют на ваши макросы, если вы их используете.

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

Удаленные элементы — оказывающие влияние

На "удаленные" элементы следует обратить пристальное внимание. Элемент, указанный как удаленный, больше не присутствует в объектной модели Office 2010. Если у вас есть макрос с удаленным в Office 2010 элементом, он не будет работать. Для Excel 2010 9 элементов объектной модели были удалены по сравнению с предыдущими версиями. На этих элементах и нужно сконцентрироваться (то есть заменить их).

Измененные элементы — в основном, незначительные

"Измененные" элементы — это методы и свойства, которые изменились по сравнению с предыдущей версией. Например, измененный метод может возвращать другой тип данных, а свойство могло измениться со свойства, доступного только для чтения, на свойство, доступное для чтения и записи. После небольшого анализа мы обнаружили, что большинство изменений связаны с тем, что метод или свойство принимают дополнительные, необязательные параметры. Например, в Excel 2003 метод ListRows.Add предоставляет один необязательный параметр. В Excel 2010 их два. Добавление необязательного параметра никак не влияет на использование метода. Если вы использовали его в Excel 2003 и предоставляли только один параметр, этот же код будет работать в Excel 2010 без изменения.

В Excel 2010 было изменено 97 элементов. Ни один из них потенциально не оказывает влияния. Все изменения этих элементов не повлияют на существующий код, если он содержит "измененные" элементы.

Итак, из 882 методов и свойств, отличающихся от 4 предыдущих версий Excel, только 9 могут оказать влияние на ваш код.

Не все измененные элементы не приведут к каким-либо нежелательным последствиям. Например, в PowerPoint метод Presentation.SaveAs использует другое значение по умолчанию для дополнительного параметра FileFormat. Оно изменилось с "1" (ppSaveAsPresentation) в PowerPoint 2003 на "11" (ppSaveAsDefault) в PowerPoint 2010. Таким образом, если вы используете этот метод и не указываете явно значение параметра FileFormat, результаты выполнения макроса могут отличаться в PowerPoint 2003 и PowerPoint 2010. Следовательно, в зависимости от использования этого метода данное изменение может привести к нежелательным последствиям.

OCCI обнаружит изменения объектной модели?

Такие средства, как инспектор совместимости кода Office Code Compatibility Inspector (OCCI), можно использовать для проверки макросов на наличие кода, содержащего измененные элементы объектной модели. Средство OCCI предоставит отчет с элементами, которые были изменены, удалены или использование которых не рекомендуется. Оно также сообщит, используются ли внешние ссылки (это особенно важно при переносе Office 2010 во время обновления операционной системы) и есть ли объявления, которые не отмечены явно, как работающие в 64-разрядной среде Office. Ниже представлен снимок экрана сводки по результатам работы OCCI с книгой Excel, содержащей макрос.

Обратите внимание на то, что OCCI использует термин "модернизированный", что соответствует "удаленному". (Я не знаю, почему они отличаются.)

Так как OCCI обнаруживает все изменения, необходимо отсортировать результаты для поиска информации о значимых изменениях. То есть OCCI сообщит о том, что "что-то изменилось". Но что нужно исправить сразу же? Что нужно будет исправить в дальнейшем? OCCI не предоставляет такую информацию. Таблица, представленная ниже, предназначена для того, чтобы устранить этот недостаток. В ней перечислены все потенциально значимые изменения, которые нужно оценить незамедлительно. В зависимости от их использования модификация кода с этими элементами может и не потребоваться. Поэтому считайте, что это краткое руководство по работе с любыми макросами. Но не полагайтесь только на средства, указанные в таблице. Хоть это и может казаться излишним, но единственный способ проверить, работают ли макросы, заключается в том, чтобы выполнить их. 

Сводка

В таблице ниже перечислены все потенциально значимые изменения, в том числе удаленные и измененные элементы. Используйте эту таблицу для быстрого определения, какой код из приведенного в ней может у вас использоваться. Хотя можно применить такие средства, как OCCI, для обнаружения всех изменений, в этой таблице представлены более конкретные данные, в которых нет изменений объектной модели, не влияющих на перенос макросов в Office 2010.

Одна из трудностей при использовании только средств состоит в том, что они обычно предоставляют данные, позволяющие ответить на технические вопросы (например: "Что изменилось?"), а не деловые вопросы (например: "Как это повлияет на мое решение?"). Средства определенно помогают автоматизировать устранение неполадок, но если полагаться на них слишком сильно, это может привести к тому, что данные, предоставленные этими средствами, будут использоваться для ответа на неправильные вопросы. Как и всегда, лучший метод гарантировать то, что решение будет работать при обновлении до Office 2010, состоит в том, чтобы выполнить тестирование на конечных пользователях, применяющих данное решение (если возможно, в тестовой среде).

 

(Таблицу можно загрузить как PDF-файл, перейдя по ссылке для PDF в конце этой статьи.)

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

По ссылкам ниже доступны отличия различных объектных моделей.

 

Это локализованная запись блога. Исходная статья находится по ссылке Understanding potentially impactful changes in the Office 2010 object model