Написание VBA в Excel 2007 для использования в Excel 2003 - PullRequest
7 голосов
/ 13 октября 2008

Там, где я работаю, разработчики были обновлены до Excel 2007, но большинство пользователей этого не сделали. Я создаю шаблон электронной таблицы (* .xlt) для пользователя, которому потребуется код vba, и мне интересно, с какими проблемами я могу столкнуться при создании этого в 2007 году, а не в 2003 году? У меня нет доступа к машине с Excel 2003 для тестирования, и я беспокоюсь, что этот конкретный проект может привести к катастрофе.

Ответы [ 5 ]

8 голосов
/ 13 октября 2008

Язык VBA не изменился, но в Office 2007 есть дополнительные объекты, которых нет в Office 2003. Естественно, это вызовет ошибку времени выполнения при попытке доступа к этим элементам в среде 2003. Что мешает вам настроить виртуальную машину с Excel 2003 для разработки под

5 голосов
/ 04 ноября 2008

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

4 голосов
/ 08 февраля 2010

Одно различие, которое я обнаружил, заключается в том, что подпрограмма должна иметь другую подпись для вызова из меню (в Excel 2003), чем при вызове с ленты (в Excel 2007). Более того, Excel 2003 не распознает IRibbonControl и выдает ошибки компиляции.

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

, например

#If USINGRIBBON Then
    Public Sub CallFromRibbon(control As IRibbonControl)
#Else
    Public Sub CallFromRibbon()
#End If
    ' Code here
   End Sub

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

2 голосов
/ 15 октября 2008

billb2112 прав. Существуют многочисленные изменения в Excel 2007 по сравнению с Excel 2003, которые не имеют обратной совместимости. Хотя язык, возможно, не изменился, объекты были обновлены. В некоторых добавлены дополнительные свойства, некоторые работают по-другому, а некоторые функции в Excel изменены.

Вы должны быть очень осторожны, чтобы то, что вы кодируете, работало в Excel 2003. Я бы посоветовал, так как в billb2112 сказано, что вы получаете виртуальную машину не только для тестирования, но и для кодирования. Я делаю все свои разработки для Excel для клиентов, у которых только 2003 установлен на машине 2003 года. Обратите внимание, что если у вас есть Excel 2002 или 2000, при возвращении вы увидите еще больше различий, и вы просто получите ошибки времени выполнения для любого кода, который не поддерживается этими более старыми версиями.

обновление к сожалению джеффс ответ не совсем правильный. хотя да, язык vba не обновлялся, в 2007 году он не такой, как в 2003 году. как и в 2003 году, он не такой, как в 2002 году и т. д. что случилось, так это дополнительные и дополнительные функции и аргументы для функций были добавлены. например, в функции НАЙТИ в Excel в 2003 году больше параметров, чем в 2002 году. таким образом, если вы запишите макрос (лучший способ найти эти проблемы) в 2003 году, а затем запустите его в 2002 году, у вас будут ошибки времени выполнения, связанные с новые аргументы, которые просто не работают в редакторе VBA 2002 года. следуя тому же процессу для функций, которые изменились в Excel 2007, а затем вернувшись к тестированию в 2003 году, вы сможете найти эти проблемы. некоторые примеры включают условное форматирование, цвета (темы) и многочисленные новые функции электронных таблиц. У Джона Пельтье есть лучший совет на этот счет - разработайте самую старую версию, которую будет использовать клиент / пользователь. Virtual PC 2007 можно загрузить и установить бесплатно. вам просто понадобится лицензионная копия XP / Vista и Office для установки для запуска в нем.

0 голосов
/ 30 сентября 2009

Я разрабатывал много макросов под 2003, что за POTA, такие вещи, как Find, Dir и некоторые другие, недоступны или что-то изменилось. поэтому можно ожидать некоторых ошибок, я использовал для подсчета строк от 65000 до первой непустой строки, чтобы подсчитать количество строк для работы .... теперь больше строк означает больше работы

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