Visual Basic для приложений (VBA) - это объектно-ориентированный язык программирования, управляемый событиями, для написания макросов, который используется для всего пакета Office, а также для других приложений. VBA не эквивалентен VB.NET или VBS; если вы работаете в Visual Studio, используйте [vb.net]. Если ваш вопрос касается программирования какого-либо приложения MS Office, также используйте соответствующий тег: [excel], [ms-access], [ms-word], [outlook] или [ms-project].

Visual Basic для приложений (VBA) - это язык программирования, управляемый событиями, который был впервые представлен Microsoft в 1993 году, чтобы дать Excel 5.0 более надежный объектно-ориентированный язык для написания макросов и автоматизации использования Excel. Язык и среда его выполнения быстро повзрослели и начали использоваться в продуктах, выходящих за рамки приложений Microsoft Office.

Различия между VBA 6.0 и VBA 7.0?

Между VBA6 и VBA7 мало что изменилось. VBA7 был введен для поддержки 64-разрядных версий Office и Windows (см. Ниже, в чем эти различия). Вот основные изменения:

  1. 64-битная поддержка, в первую очередь для вызовов API. Это используется для того, чтобы ваш код работал с вашей версией ОС /Office, а также с другими (например, с кем-то в Office 2003/WinXP).

    • Если вы используете 64-разрядную версию Windows, но используете 32-разрядную версию Office, вы можете объявить вызовы API, как показано ниже..

      # Если Win64 То
          Объявить функцию PtrSafe GetTickCount64 Lib "kernel32"() как LongLong
      # Эльза
          Объявить функцию PtrSafe GetTickCount Lib "kernel32" () до тех пор, пока
      #End If
    • Если вы используете 64-разрядную версию Windows и 64-разрядную версию Office, вы можете объявить вызовы API, например:.

      #If VBA7 Then
         Объявить функцию PtrSafe FindWindow Lib "user32" Псевдоним "FindWindowA" (_
             ByVal lpClassName как строка, _
             ByVal lpWindowName As String) As LongPtr
       # Эльза
         Объявить функцию FindWindow Lib "user32" Псевдоним "FindWindowA" (ByVal _
             lpClassName как строка, ByVal lpWindowName как строка) Как долго
      #End If
  2. Чтобы поддержать это, есть:

    • Три новых ключевых слова (2 типа данных и 1 модификатор): LongPtr, LongLong и PtrSafe.

    • Одна новая функция: CLngLng() (т.е. Int64)

    • Новые константы компиляции, использованные выше:VBA7 а также Win64

Ссылка

Различия между VBA 6.0 и VBA 7.0