Запись VBA в Excel 2007 для использования в Excel 2003

Используйте этот код: -

//num is the Number to check
//Converting int to String
ostringstream ss;
ss<<num;
string snum = ss.str();
string fromfront="", fromback="";
fromfront = snum;
string character;
for(int i=snum.length();i>0;i--)
{
    if(i>0)
        character = snum.substr(i-1, 1);
    fromback+=character;
}
if(fromfront==fromback)
    cout<<endl<<"It is a palindrome.";
else
    cout<<endl<<"It is not a palindrome.";
7
задан shruti1810 27 May 2015 в 05:26
поделиться

5 ответов

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

8
ответ дан 6 December 2019 в 12:56
поделиться

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

5
ответ дан 6 December 2019 в 12:56
поделиться

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

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

обновите, к сожалению, jeffs, ответ не совсем корректен. в то время как да vba язык не был обновлен, это не то же в 2007 как в 2003. как в 2003 не то же как в 2002 и т.д., что произошло, является дополнительными и дополнительными функциями, и аргументы в пользу функций были добавлены. например, существует больше опций в функции НАХОДКИ в Excel в 2003, чем в 2002. таким образом, если Вы запишете макрос (лучший способ найти эти проблемы) в 2003 и затем выполните его в 2002, то у Вас будут ошибки периода выполнения, касающиеся новых аргументов, которые просто не работают в редакторе VBA 2002 года. после того же процесса для функций, которые изменились в Excel 2007 и затем возвращении к 2003 для тестирования, поможет Вам определить местоположение этих проблем. некоторые примеры включают условное форматирование, цвета (темы) и многочисленные новые функции электронной таблицы. jon у Пельтье есть лучший совет от того отношения - разрабатывают в самой старой версии, которую будет использовать клиент / пользователь. Виртуальный ПК 2007 свободен загрузить и установить. Вам просто будет нужна лицензированная копия XP/Vista и офиса для установки для выполнения в нем.

2
ответ дан 6 December 2019 в 12:56
поделиться

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

-3
ответ дан 6 December 2019 в 12:56
поделиться

Одно различие, которое я обнаружил, заключается в том, что подпрограмма должна иметь другую подпись для вызова из меню (в 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), но это намного проще, чем поддерживать две совершенно разные кодовые базы.

4
ответ дан 6 December 2019 в 12:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: