2008-10-13 3 views
7

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

+0

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

+0

На самом деле этот вопрос довольно интересный, но, к сожалению, из-за бесконечных сценариев использования, мы, вероятно, никогда не закончим его. На самом деле нет оправданий для того, чтобы не использовать VM с Office 2003 для разработки и тестирования. –

ответ

8

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

+1

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

2

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

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

обновление К сожалению, ответ Jeffs не совсем корректен. в то время как да, язык vba не обновлялся, он не совпадает в 2007 году, как в 2003 году. поскольку в 2003 году он не совпадает с 2002 годом и т. д. произошло то, что произошло, добавлены дополнительные функции и аргументы для функций. например, в функции FIND в Excel в 2003 году больше опций, чем в 2002 году. Таким образом, если вы запишете макрос (лучший способ найти эти проблемы) в 2003 году, а затем запустите его в 2002 году, у вас будут ошибки времени выполнения, относящиеся к новые аргументы, которые просто не работают в редакторе VBA 2002 года. после того же процесса для функций, которые были изменены в excel 2007, а затем вернуться в 2003 году для проверки, вы сможете найти эти проблемы. некоторые примеры включают условное форматирование, цвета (темы) и многочисленные новые функции электронных таблиц. jon peltier имеет лучший совет в этом отношении - разработайте в самой старой версии, которую клиент/пользователь будет использовать. Virtual PC 2007 можно скачать бесплатно и установить. вам просто понадобится лицензионная копия XP/Vista и офиса для установки в нее.

+0

К сожалению, виртуальная машина не является вариантом. Мне действительно нужен список того, какие предметы недоступны в 2003 году. –

5

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

+0

К сожалению, у меня нет такого варианта. –

+0

Это лучший ответ, поскольку он правильно указывает, что любой список, вероятно, будет, по крайней мере, частично неполным, и хорошо связывается с ответом VM. –

-3

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

+0

На самом деле, просто используйте свойство .End, для чего это необходимо, поэтому вам не нужно рассчитывать на «конец» последней строки. –

4

Одно из отличий, которое я обнаружил, это то, что подпрограмма должна иметь другую подпись для вызова из меню (в 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 значение ЛОЖЬ (для Excel2003), а другой с флагом USINGRIBBON значение ИСТИНА (для Excel2007), но это намного проще, чем поддерживать два совершенно разных кодовых файла.

Смежные вопросы