Visual basic access: Справочник по Visual Basic для приложений (VBA) в Access

Как я гонял Балду на Visual Basic for Applications для MS Access / Хабр

Не помню, что меня так заело. Наверно, кто-нибудь обыграл меня в Балду с разгромным счетом (ее онлайн-вариант есть на Одноклассниках, Mail.ru и в куче других мест). Короче, я принял вызов. В прошлый раз так было с программкой для разгадки СУДОКУ. Но там все оказалось заметно проще.

Балда, она же Волшебный Квадрат. Игроки добавляют на каждом шагу по одной букве, чтобы получилось осмысленное слово как можно большей длины.


Будучи программистом старой закалки (FORTRAN, PL1 и стопка перфокарт), я считаю, что решительно все равно, на чем писать код. Из кардинальных идей, случившихся в истории программирования, стоит упомянуть только объектную ориентированность и реляционную модель данных (ну и еще, пожалуй, функциональное программирование, всякие лямбда-вещи, в противоположность привычному, процедурному подходу). Главное, все же, Алгоритм! Которые все в основном изложены в семитомнике «Основы программирования» Дональда Кнута. А какие команды отрисуют вам окно, иконку и прочие прелести – дело десятое. Семитомник Кнута, как и базовая статья по реляционным базам Эдгара Кодда из Исследовательского центра IBM, появились во второй половине 60-х годов. То есть почти полвека тому. Вот почему я пишу на VBA и не отвлекаюсь ни на какие новомодные вещи.

Вызовов (вот не люблю эту кальку с английского challenge, а привык!) при написании игры, собственно, было два. Правильно прописать рекурсивный алгоритм, а затем оптимизировать поиск слов в словаре.

С самим алгоритмом все достаточно просто. Вот есть игровое поле 5 на 5 с уже вписанными буквами. Нужно добавить еще одну букву, примыкающую к существующим с какой-либо стороны (кроме как по диагонали), и просмотреть в словаре все возникающие варианты слов при всех возможных вариантах «обхода» игрового поля, заполненного буквами. Тут и возникает рекурсия.

Начинаем по порядку с любой буквы и идем в любую сторону, где есть еще одна буква. Так набирается слово для проверки. Сами буквы, уже включенные в проверяемое слово, должны быть исключены из дальнейших проверок, так как слово не может быть с пересечениями (2 раза использовать одну и ту же букву нельзя).

Набранную строку символов на каждом этапе ищем в словаре. Если слово найдено – запоминаем этот вариант, но продолжаем поиск, не прерывая рекурсии, так как может существовать и более длинное слово с тем же началом (обнаружив КОТ, не упускаем шанса найти также КОТОВАСИЯ, КОТОВОДСТВО и т.д.)

Сигналом для выхода из рекурсии (это, как мы помним, самая важная часть в написании рекурсивных функций) будет попросту отсутствие возможности выбрать еще одну букву, когда все возможные на данном шагу ходы исчерпаны (уже включены в проверяемое слово или находятся в недосягаемости от того места игрового поля, где мы оказались на данном шаге). Тогда мы делаем выход, то есть отступаем на шаг назад и пытаемся двинуться в другую сторону. Полный выход из рекурсии произойдет, когда мы переберем все возможные варианты – все маршруты обхода поля с буквами.

При этом только что добавленная буква должна попасть в слово, которое мы проверяем. Но это правило нельзя включить априори – может статься, что эта буква окажется вообще последней, так что эту проверку нужно провести только в самом конце, перед поиском в словаре.

В этом месте меня удивило количество возникающих вариантов. В разгар игры (когда игровое поле уже заполнено, но и свободных клеток остается достаточно), система просматривает более 100 000 (прописью – ста тысяч) вариантов слов на каждом шагу! Мы явно имеем дело с задачей экспоненциальной сложности от размера поля (NP-полнота?). Поэтому от изначальной идеи – просчитать всякую игру на много ходов вперед, чтобы выбрать тот вариант, который не даст противнику длинных слов в его черед (при условии, конечно, что мы пользуемся одним и тем же словарем!) пришлось отказаться.

Кстати, глубина рекурсии совсем невелика – как понятно из описанного алгоритма, она не превышает количества букв на поле в данный момент.

В качестве словаря я взял словарь Зализняка (это тот самый ученый-лингвист, чьи таблицы по морфологии русского языка, по образованию словоформ, были положены в основу проверки синтаксиса в Microsoft Word 6. 0 Игорем Агамирзяном). Согласно правилам Балды, можно использовать только существительные в именительном падеже единственном числе, таковых в использованном мной словаре было ровно 43 304, от «АБАЖУРА» до «ЯЩУРА».

Итак, мы имеем сто тысяч вариантов слов (в пике – до 150 000), которые надо поискать в словаре из 43 304 слов. Это выходит более шести миллиардов просмотров словаря, если я не ошибаюсь в подсчетах. Первая версия программы задумывалась над каждым ходом по несколько минут, и это безобразие нельзя было, конечно, терпеть. Не говоря уже о том, что если использовать программу для борьбы с реальным соперником, то на обдумывание хода дается не более минуты. А хочется еще заглянуть хотя бы на шаг вперед, чтобы не подставить противнику какое-нибудь супердлинное слово в его ход.

Итак, оптимизация. Во-первых, вся работа должна осуществляться только в оперативной памяти, объем данных это вполне позволяет. Весь словарь считывается из таблицы в массив, по которому затем и осуществляется поиск. Но этого явно недостаточно.

Вторым понятным способом оптимизировать является индексация. Её я сделал в 2-буквенном варианте. В отдельный массив, состоящий из всех возможных двухбуквенных пар, был внесен индекс, начиная с которого слова, начинающиеся на эти самые 2 буквы, расположены в массиве с полным словарем. Для того, чтобы не искать сначала в массиве индексов искомые 2 буквы, он был сделан полным, то есть содержал даже те пары букв, на которые в словаре нет ни одного слова. Таким образом, индекс в массиве индексов вычислялся напрямую из 2-х первых букв слова, которое мы ищем, то есть очень быстро.

Массив индексов также не занимает много места в памяти, его длина равна 32 x 32 = 1024 элемента. Реально, было несложно сделать индекс и 3-буквенным, но это, как показал опыт, не привело уже к дальнейшему ускорению.

Это еще не вся оптимизация! Я также расширил исходный словарь некоторым хэшем, если его можно так назвать – по сути, это было такое же слово, но в котором каждая буква встречалась только один раз (ПОТОП – ПТО). В результате самым быстрым вариантом поиска оказался такой:

— мы перебираем полный словарь, оставляя только те слова, которые содержат те же буквы, что и в слове, которое ищем;

— строим на этот урезанный словарь 2-буквенный индекс;

— ищем искомое слово, используя индекс.

Результат – поиск всех вариантов слов на каждом ходу занимает не более 2 секунд, при этом просматривается, как я уже говорил, до 150 000 слов в словаре и выдается до сотни вариантов хода — слов от 4-буквенных и выше. Можно также для каждого найденного варианта слова просчитать возможные будущие ходы противника – по цене 2 секунды за один вариант.

Теперь о MS Access. Я бесконечно влюблен в эту программу, так как она сочетает в себе вполне сносный реляционный движок базы данных, простое построение интерфейсов и мощный Visual Basic for Applications за сценой.

Последний, говорят, по скорости обработки строковой информации не уступает С++/ С# — что и было продемонстрировано оптимизацией нашей программы.

Что касается базы данных, то это, я считаю, единственно правильный формат хранения данных, на которых есть хоть какая-то структура. Это же позволяет писать программы «с накоплением» — то есть такие, расчет по которым занимает многие сутки (это всякие лингвистические задачи, которыми я порой балуюсь). Чтобы не потерять промежуточные результаты, их правильно скидывать в таблицы с некоторой регулярностью, которая не замедляет выполнение основных расчетов. Чтобы всегда была некоторая отправная точка, с которой можно было бы продолжить.

Интерфейс программы. Система предлагает все варианты ходов, отсортированные по убыванию длины. При желании, можно просмотреть вперед возможный следующий ход противника при выборе нами того или иного варианта слова.

А вот так выглядит матч с противником. Нужно аккуратно вносить его ходы, и программа подскажет самый лучший вариант.

Хотите меня поругать за нечестность? Но программу я написал и оптимизировал сам! Причем, играл на интерес, а не ради каких-нибудь благ. Более того, почти все соперники используют что-то подобное, но написанное не ими самими – это видно сразу. Откуда у 15-летнего парня, чей профиль полон фоток с котиками, знание слова ПРОЗЕЛИТИЗМ? («Что делает малютка Тиффани в неблагоприятном районе в час ночи с учебником квантовой физики в руках?»)

Программирование на Visual Basic | Microsoft Access. Заполнение ячеек Excel

07. Этот пример показывает, как в Access можно заполнить файл Excel разными способами:
1) Заполнение каждой ячейки своим значением
2) Заполнение ячеек из массива
3) Заполнение несколько ячеек 1 значением
4) Заполнение ячеек из ADODB.Recordset



'***************************************************************
'   Подписка:   "Access - программирование и готовые решения"
'   Тема:       "Клиенты автоматизации Access"
'   Версия:     1 от 16.07.2009
'   Автор:      Copyright © Leader Access, Ltd
'   Сайт:       http://www. leadersoft.ru

'***************************************************************
'  07. Пример. Вывод информации в Excel
'  Записывается информация о книгах по строкам,
'  используя разные варианты: Название, Цена, Автор, Пункт
'***************************************************************

Private Sub butOK_Click()
    On Error GoTo 999
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Dim xlFileName As String
     
    ' Определяем и проверяем имя файла
    xlFileName = Application.CurrentProject.Path  "\Книги.xls"
    If Dir(xlFileName, vbNormal) = "" Then
        MsgBox "Файл не найден: "  xlFileName, vbCritical, "http://www.leadersoft.ru"
        Exit Sub
    End If
    
    ' Устанавливаем ссылку на страницу
    Set xlApp = CreateObject("Excel.Application") ' Открываем Excel
    Set xlBook = xlApp.Workbooks. Open(FileName:=xlFileName) ' Открываем файл
    Set xlSheet = xlBook.Sheets("Мои книги") ' Выбираем лист книги
    xlApp.Visible = True ' Отображаем Excel

    ' Записываем данные в ячейки, пропустив строку заголовка
    ' 1 вариант. Сохраняем 1 значение ( 2 строка данных )
    xlSheet.Range("A2").Value = "Война и мир"
    xlSheet.Range("B2").Value = "200"
    xlSheet.Range("C2").Value = "Толстой"
    
    ' 2 вариант. Используем массив ( 3 строка данных )
    xlSheet.Range(xlSheet.Cells(3, 1), xlSheet.Cells(3, 3)).Value = _
        Array("Горе от ума", "150", "Грибоедов")
    
    ' 3 вариант. Используем одно значение ( Нумерация строк на листе )
    xlSheet.Range(xlSheet.Cells(2, 4), xlSheet.Cells(6, 4)).FormulaR1C1 = "=ROW()-1"

    ' 4 вариант. Используем запрос из базы данных ( 5 и 6 строка данных )
    Dim cn As ADODB.Connection, rs As New ADODB.Recordset, SQL As String
    Set cn = Application. CurrentProject.Connection
    SQL = "SELECT Книга,Сумма,Автор FROM [Пример 04] WHERE Len([Автор])  0"
    rs.Open SQL, cn
    xlSheet.Range("A5").CopyFromRecordset rs
    rs.Close
    Set rs = Nothing
    
' --- Закрываем  Excel и уничтожаем объекты, если это необходимо сделать автоматически ---
'    xlBook.Close SaveChanges:=True
'    xlApp.Quit
'    Set xlSheet = Nothing
'    Set xlBook = Nothing
'    Set xlApp = Nothing
    Exit Sub
999:
    MsgBox Err.Description, vbCritical, "http://www.leadersoft.ru"
    Err.Clear
End Sub

Введение в программирование Access — служба поддержки Майкрософт

При создании новой базы данных вы обычно начинаете с создания нескольких объектов базы данных, таких как таблицы, формы и отчеты. В конце концов, вы достигаете точки, когда вам нужно добавить немного программирования, чтобы автоматизировать определенные процессы и связать объекты вашей базы данных вместе. Эта статья поможет вам сориентироваться в средствах программирования в Access.

В этой статье

  • Что такое программирование?

  • Должен ли я использовать макросы или использовать код VBA?

  • Используйте мастер командных кнопок для выполнения стандартных задач программирования

  • Макросы

  • Разбираться в коде VBA

  • Преобразование макросов в код VBA

Что такое программирование?

В Access программирование — это процесс добавления функций в базу данных с помощью макросов Access или кода Visual Basic для приложений (VBA). Например, предположим, что вы создали форму и отчет и хотите добавить в форму командную кнопку, при нажатии которой открывается отчет. Программирование, в данном случае, представляет собой процесс создания макроса или процедуры VBA, а затем настройки командной кнопки 9.0035 Свойство события OnClick , чтобы нажатие кнопки запускало макрос или процедуру. Для простой операции, такой как открытие отчета, вы можете использовать мастер кнопок для выполнения всей работы, или вы можете отключить мастер и выполнить программирование самостоятельно.

Примечание. Многие программы Microsoft Office используют термин «макрос» для обозначения кода VBA. Это может сбивать с толку пользователей Access, поскольку в Access термин «макрос» относится к именованному набору макрокоманд, которые можно собрать с помощью построителя макросов. Макродействия доступа представляют собой лишь подмножество команд, доступных в VBA. Macro Builder предоставляет вам более структурированный интерфейс, чем редактор Visual Basic, позволяя добавлять программирование к элементам управления и объектам без необходимости изучения кода VBA. Следует помнить, что в статьях справки Access макросы Access называются макросами. И наоборот, код VBA называется VBA, кодом, функцией или процедурой. Код VBA содержится в модулях классов (которые являются частью отдельных форм или отчетов и обычно содержат код только для этих объектов) и в модулях (которые не привязаны к конкретным объектам и обычно содержат «глобальный» код, который можно использовать во всей базе данных). ).

Объекты (например, формы и отчеты) и элементы управления (например, кнопки команд и текстовые поля) имеют различные свойства событий, к которым можно прикрепить макросы или процедуры. Каждое свойство события связано с определенным событием, таким как щелчок мышью, открытие формы или изменение данных в текстовом поле. События также могут быть инициированы факторами за пределами Access, такими как системные события, или макросами или процедурами, присоединенными к другим событиям. Ваша база данных может стать сложной, если вы добавите много макросов или процедур к нескольким свойствам событий многих объектов, но в большинстве случаев вы можете достичь желаемых результатов, используя очень мало программирования.

Верх страницы

Должен ли я использовать макросы или код VBA?

Решение использовать макросы, VBA или и то, и другое зависит главным образом от того, как вы планируете развертывать или распространять базу данных. Например, если база данных хранится на вашем компьютере, и вы являетесь единственным пользователем, и если вам удобно использовать код VBA, вы можете решить использовать VBA для выполнения большинства задач программирования. Однако, если вы намерены поделиться своей базой данных с другими людьми, разместив ее на файловом сервере, вы можете не использовать VBA из соображений безопасности.

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

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

Рекомендации по макросам

Начиная с выпуска Access 2010, Access содержит множество новых макрокоманд, позволяющих создавать более мощные макросы, чем в более ранних версиях Access. Например, теперь вы можете создавать и использовать глобальные временные переменные с помощью макрокоманд, а также более изящно обрабатывать ошибки с помощью новых макрокоманд для обработки ошибок. В более ранних версиях Access такие функции доступны только при использовании VBA. Кроме того, вы можете внедрить макрос непосредственно в свойство события объекта или элемента управления. Внедренный макрос становится частью объекта или элемента управления и остается с объектом или элементом управления, если он перемещается или копируется.

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

В дополнение к повышенной безопасности и простоте использования, которые обеспечивают макросы, вы должны использовать макросы для выполнения следующих задач:

  • Назначение действия или набора действий клавише. Для этого необходимо создать группу макросов с именем AutoKeys.

  • Выполнить действие или серию действий при первом открытии базы данных. Для этого необходимо создать макрос с именем AutoExec.

    Примечание. Макрос AutoExec запускается перед любыми другими макросами или кодом VBA, даже если вы назначили форму запуска в Диалоговое окно «Параметры доступа » и прикрепил макрос или код VBA к событию OnOpen или OnLoad этой формы.

Дополнительные сведения о создании макросов см. в разделе Общие сведения о макросах.

Рекомендации по VBA

Вам следует использовать программирование VBA вместо макросов, если вы хотите сделать что-либо из следующего:

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

  • Создание объектов или управление ими     В большинстве случаев вы обнаружите, что проще всего создавать и изменять объект в представлении «Дизайн» этого объекта. Однако в некоторых ситуациях вам может понадобиться манипулировать определением объекта в коде. Используя VBA, вы можете манипулировать всеми объектами в базе данных, помимо самой базы данных.

  • Выполнение действий на уровне системы     Вы можете выполнить действие RunApp в макросе, чтобы запустить другую программу (например, Microsoft Excel) из Access, но вы не можете использовать макрос для других действий вне Access. С помощью VBA вы можете проверить, существует ли файл на компьютере, использовать автоматизацию или динамический обмен данными (DDE) для связи с другими программами на базе Microsoft Windows, такими как Excel, и вызывать функции в библиотеках динамической компоновки Windows ( DLL).

  • Манипулировать записями по одной     Вы можете использовать VBA, чтобы пройтись по набору записей, по одной записи за раз, и выполнить операцию над каждой записью. Напротив, макросы работают со всеми наборами записей одновременно.

Верх страницы

Использование мастера командных кнопок для выполнения общих задач программирования

Если вы добавляете командную кнопку в форму, мастер кнопок может помочь вам приступить к программированию. Мастер поможет вам создать командную кнопку, которая выполняет определенную задачу. В файле Access (.accdb) мастер создает макрос, встроенный в свойство OnClick командной кнопки. В файле .mdb или .adp мастер создает код VBA, поскольку встроенные макросы недоступны в этих форматах файлов. В любом случае вы можете изменить или улучшить макрос или код VBA, чтобы он лучше соответствовал вашим потребностям.

  1. В области навигации щелкните правой кнопкой мыши форму, в которую вы хотите добавить кнопку команды, и выберите Представление «Дизайн» .

  2. На вкладке Design щелкните стрелку вниз, чтобы отобразить коллекцию Controls , а затем убедитесь, что выбран параметр Use Control Wizards .

  3. На вкладке Design в галерее Controls нажмите кнопку .

  4. org/ListItem»>

    В сетке макета формы щелкните в том месте, где вы хотите разместить командную кнопку.

    Запускается мастер командных кнопок.

  5. На первой странице мастера щелкните каждую категорию в списке Категории , чтобы увидеть, какие действия мастер может запрограммировать для выполнения командной кнопки. В Список действий выберите нужное действие и нажмите Далее .

  6. Выберите либо параметр Text , либо параметр Picture , в зависимости от того, хотите ли вы, чтобы на командной кнопке отображался текст или изображение.

    • Если вы хотите, чтобы отображался текст, вы можете отредактировать текст в поле рядом с параметром Текст .

    • Если вы хотите, чтобы изображение отображалось, мастер предлагает изображение в списке. Если вы хотите выбрать другое изображение, установите флажок Показать все изображения , чтобы отобразить список всех изображений командных кнопок, предоставляемых Access, или щелкните Обзор , чтобы выбрать изображение, которое хранится в другом месте.

      Щелкните Далее .

  7. Введите значимое имя для командной кнопки. Это необязательный шаг, и это имя не отображается на командной кнопке. Тем не менее рекомендуется ввести осмысленное имя, чтобы, когда вам нужно будет обратиться к командной кнопке позже (например, если вы устанавливаете порядок табуляции для элементов управления в своей форме), было бы намного легче различать командные кнопки. Например, если командная кнопка закрывает форму, вы можете назвать ее cmdClose или CommandClose.

  8. Нажмите Готово .

    Access помещает командную кнопку в форму.

  9. Если вы хотите увидеть, что мастер «запрограммировал» для вас, выполните следующие необязательные шаги:

    1. Если лист свойств еще не отображается, нажмите F4, чтобы отобразить его.

    2. Щелкните вкладку Событие на странице свойств.

    3. В поле свойства On Click нажмите кнопку Build .

      Access запускает построитель макросов и отображает макрос, созданный мастером. Вы можете отредактировать макрос, если хотите (дополнительную информацию о том, как редактировать макрос, см. в разделе Общие сведения о макросах). Когда вы закончите, на Design в группе Close щелкните Close , чтобы закрыть Macro Builder. Если Access предлагает сохранить изменения и обновить свойство, нажмите Да , чтобы сохранить изменения, или Нет , чтобы отклонить изменения.

  10. На вкладке Design в группе Views щелкните View , а затем щелкните Form View . Нажмите кнопку новой команды, чтобы убедиться, что она работает так, как вы ожидали.

Верх страницы

Понимание макросов

Макрос — это инструмент, позволяющий автоматизировать задачи и добавлять функциональные возможности в формы, отчеты и элементы управления. Например, если вы добавляете командную кнопку в форму, вы связываете свойство события OnClick кнопки с макросом, содержащим команды, которые вы хотите, чтобы кнопка выполняла при каждом ее нажатии.

Полезно думать о макросах Access как об упрощенном языке программирования, на котором вы создаете код, создавая список действий для выполнения. При создании макроса вы выбираете каждое действие из раскрывающегося списка, а затем вводите необходимую информацию для каждого действия. Макросы позволяют добавлять функциональные возможности в формы, отчеты и элементы управления без написания кода в модуле VBA. Макросы предоставляют подмножество команд, доступных в VBA, и большинству людей проще создать макрос, чем написать код VBA.

Макрос создается с помощью построителя макросов, как показано на следующем рисунке.

Для отображения конструктора макросов:

Верх страницы

Понять код VBA

Как и макросы, VBA позволяет добавлять автоматизацию и другие функции в приложение Access. Вы можете расширить VBA, используя сторонние элементы управления, и вы можете написать свои собственные функции и процедуры для своих конкретных нужд.

Быстрый способ начать программирование на VBA — сначала создать макрос Access, а затем преобразовать его в код VBA. Инструкции для этого приведены в разделе Преобразование макросов в код VBA. Эта функция создает новый модуль VBA, который выполняет аналогичные операции в макросе. Он также открывает редактор Visual Basic, так что вы можете начать изменять процедуру. При работе в редакторе Visual Basic можно щелкнуть ключевые слова и нажать клавишу F1, чтобы открыть доступ к справке разработчика и узнать больше о каждом ключевом слове. Затем вы можете изучить справку разработчика Access и открыть для себя новые команды, которые помогут вам выполнять нужные задачи программирования.

Верх страницы

Преобразование макросов в код VBA

Вы можете использовать Access для автоматического преобразования макросов в модули VBA или модули классов. Вы можете преобразовать макросы, прикрепленные к форме или отчету, независимо от того, существуют ли они как отдельные объекты или как встроенные макросы. Вы также можете преобразовать глобальные макросы, которые не привязаны к определенной форме или отчету.

Примечание. Вы можете добавить код Visual Basic для приложений (VBA) в веб-базу данных; однако вы не можете запустить этот код, пока база данных работает в веб-браузере. Если ваша веб-база данных содержит код VBA, вы должны сначала открыть веб-базу данных с помощью Access, прежде чем запускать код. Для выполнения задач программирования в веб-базе данных вместо этого используйте макросы Access.

Преобразование макросов, прикрепленных к форме или отчету

Этот процесс преобразует в VBA любые макросы, на которые ссылается (или внедряет) форма или отчет (или любой из его элементов управления), и добавляет код VBA в модуль класса формы или отчета. Модуль класса становится частью формы или отчета и перемещается вместе с формой или отчетом, если он перемещается или копируется.

  1. В области навигации щелкните правой кнопкой мыши форму или отчет и выберите Представление «Дизайн» .

  2. org/ListItem»>

    На вкладке Дизайн в группе Инструменты щелкните Преобразовать макросы формы в Visual Basic или Преобразовать макросы отчета в Visual Basic .

  3. В диалоговом окне Преобразование макросов форм или Преобразование макросов отчетов выберите, хотите ли вы, чтобы Access добавлял код обработки ошибок в создаваемые им функции. Кроме того, если у вас есть какие-либо комментарии в ваших макросах, выберите, хотите ли вы, чтобы они были включены в качестве комментариев в функции. Нажмите Преобразуйте , чтобы продолжить.

    Если для формы или отчета не существует модуля класса, Access создает его и добавляет процедуру в модуль для каждого макроса, связанного с формой или отчетом. Access также изменяет свойства событий формы или отчета, чтобы они запускали новые процедуры VBA вместо макросов.

  4. Для просмотра и редактирования кода VBA:

    1. Пока форма или отчет все еще открыты в представлении «Дизайн», если лист свойств еще не отображается, нажмите F4, чтобы отобразить его.

    2. На вкладке Событие страницы свойств щелкните любое поле свойства, в котором отображается [Процедура события] , а затем нажмите кнопку сборки . Чтобы просмотреть свойства события для определенного элемента управления, щелкните элемент управления, чтобы выбрать его. Чтобы просмотреть свойства события для всей формы или отчета, выберите 9Форма 0035 или отчет из раскрывающегося списка в верхней части листа свойств.

      Access открывает редактор Visual Basic и отображает процедуру обработки события в своем модуле класса. Вы можете прокручивать вверх или вниз, чтобы просмотреть любые другие процедуры, которые находятся в том же модуле класса.

Преобразование глобальных макросов

  1. В области навигации щелкните правой кнопкой мыши макрос, который требуется преобразовать, и выберите Представление «Дизайн» .

  2. На вкладке Design в группе Инструменты щелкните Преобразовать макросы в Visual Basic .

  3. org/ListItem»>

    В диалоговом окне Convert Macro выберите нужные параметры и нажмите Преобразовать .

    Access преобразует макрос и открывает редактор Visual Basic.

  4. Для просмотра и редактирования кода VBA:

    1. В редакторе Visual Basic, если панель Project Explorer не отображается, в меню View щелкните Project Explorer .

    2. Разверните дерево под именем базы данных, в которой вы работаете.

    3. org/ListItem»>

      В разделе Modules дважды щелкните имя макроса модуля Converted Macro-.

      Редактор Visual Basic открывает модуль.

Присоединение функции VBA к свойству события

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

  1. org/ListItem»>

    В редакторе Visual Basic запишите имя функции. Например, если вы преобразовали макрос с именем MyMacro, имя функции будет MyMacro().

  2. Закройте редактор Visual Basic.

  3. В области навигации щелкните правой кнопкой мыши форму или отчет, с которым вы хотите связать функцию, и выберите Представление дизайна.

  4. Щелкните элемент управления или раздел, с которым вы хотите связать функцию.

  5. Если лист свойств еще не отображается, нажмите F4, чтобы отобразить его.

  6. На вкладке Событие листа свойств щелкните поле свойства события, с которым вы хотите связать функцию.

  7. В поле свойства введите знак равенства ( = ), а затем имя функции — например, = MyMacro ( ) . Не забудьте указать скобки.

  8. Сохраните форму или отчет, нажав Сохранить на панели быстрого доступа.

  9. В области навигации дважды щелкните форму или отчет и протестируйте его, чтобы убедиться, что код работает должным образом.

Теперь вы знаете основные шаги по добавлению кода VBA в базу данных. В этой статье описываются только основы того, как начать работу; существует множество отличных справочников и онлайн-ресурсов, которые могут помочь вам развить навыки программирования.

Верх страницы

Visual Basic для приложений в Microsoft Access — учебные пособия Holowczak.com

Posted on by holowczak

Microsoft Access включает ряд функций, позволяющих разработчикам баз данных создавать формы ввода данных, отчеты и запросы, которые могут помочь пользователям запрашивать существующие данные в базе данных и вводить новые данные. Различные инструменты построения запросов и мастера упрощают этот процесс разработки. Однако даже с этими инструментами могут возникнуть ситуации, когда разработчик захочет добавить еще больше функций, которые еще не предоставляются инструментами разработки MS Access. Например, разработчик может захотеть автоматически исправлять неверные данные перед их сохранением в базе данных, отображать предупреждение в случае нарушения бизнес-правил, помогать пользователю переходить от одной формы ввода данных к другой или запускать отчет с некоторыми пользовательскими фильтрами. Способ выполнить такую ​​настройку — добавить код с помощью языка программирования Visual Basic для приложений.

Visual Basic для приложений (VBA) — это язык программирования, используемый в семействе программных продуктов Microsoft Office, таких как Excel и Access. Язык VBA происходит от языка «Basic», изобретенного в 1964 году и ставшего популярным на персональных компьютерах в 1970-х годах. «Визуальная» часть имени была добавлена ​​Microsoft, чтобы отразить использование языка программирования Basic в Microsoft Windows.

Существует множество руководств, знакомящих с основами программирования. В этом руководстве основное внимание будет уделено небольшому набору функций языка VBA, используемого в MS Access.

В этом руководстве предполагается, что читатель имеет опыт разработки форм в MS Access. Возможно, вы захотите сначала пройти мой учебник по MS Access и мой учебник по расширенному дизайну форм доступа, прежде чем переходить к изучению VBA.

Содержимое

  • События в Microsoft Access
  • Пример кода VBA: проверка имен в правильном регистре
  • Язык VBA — объявление и присвоение переменных, условные операторы и комментарии
  • Язык VBA – функции, методы и примеры
  • Язык VBA — свойства
  • Упражнения по кодированию VBA
  • Обработка ошибок в VBA
  • Выполнение пользовательских запросов SQL в VBA

На следующей странице представлены события в Microsoft Access.

Страницы: 1 2 3 4 5 6 7 8 9

Категория: Доступ

Теги: Access, Access 2013, Access 2016, SQL, VBA, Visual Basic для приложений

Поиск Holowczak.com

Искать:

Пожертвования Добро пожаловать

Если вы нашли что-то образовательное или развлекательное на holowczak.