Есть ли разница в версиях VBA между офисом 2003 и 2007? - PullRequest
5 голосов
/ 20 июня 2009

Могу ли я безнаказанно использовать ссылки на VBA для доступа к 2007 году (в частности, что касается базового языка и старых com-интерфейсов) для разработки решений на основе VBA для доступа 2003?

Или есть какой-то новый / измененный синтаксис, добавленный к языку, о котором мне нужно знать?

Была ли существенно улучшена объектная модель в Office 2007?

Любые другие предостережения?

Спасибо.

Ответы [ 3 ]

8 голосов
/ 20 июня 2009

Сам язык VBA не менялся между последними версиями Microsoft Office (и, вероятно, не изменится и в будущем). Версия VBA от Access2000 и далее - VBA6.

Однако объектная модель приложений Office немного изменена. Microsoft обычно расширяет ОМ только дополнительными методами и свойствами. Что касается Access, я не могу дать вам никаких подробностей, но вы найдете список изменений здесь:

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

2 голосов
/ 06 ноября 2010

В Excel 2007 появилось несколько новых свойств, методов и объектов.

Однако большинство программ в Excel 2003 хорошо работает в Excel 2007

В VBA Excel 2003 есть несколько вещей, которые не работают в Excel 2007.

Я нашел 4 проблемы.

  • «Chart.Add» выдает ошибку автоматизации в Excel 2007, когда выбрано более 1 ячейки

  • Ошибка не сбрасывается сама по себе, необходимо использовать Err.clear перед командой, которая может выпустить ошибку.

            On Error Resume Next
            Intruction_That_Could_be_buggy_1
            if Err.Number <>0 Then
                 Err.Clear     '  <<<<==== This command is necessary
                 Intruction_That_Could_be_buggy_2                  
                 if Err.Number <>0 Then
                       ....
    
  • Range (...). Paste (xlFormulas) теперь останавливается, когда существует возможный конфликт имен, необходимо использовать

        Application.displayalerts = False
        Range(....).Paste(xlFormulas)
        Application.displayalerts = True
    
  • Несколько горячих клавиш, таких как Alt + N, зарезервированы в Excel 2007. Application.Onkey ("% n", "rotina") в этом случае не работает. Теперь есть множество ярлыков ленты в стиле ALT + Letra. Я не могу найти какой-либо способ подавить это поведение. Вместо этого следует использовать другую горячую клавишу.

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

Если вы компилируете ваши accdb / mdb в accde / mde, вы хотите убедиться, что вы компилируете их в той же версии, что и ваше основное приложение. У меня были некоторые проблемы с использованием Access 2003 MDE с Access 2007 (и, очевидно, наоборот).

...