Доступ к VBA: Форма командная кнопка, чтобы сделать что-то / вызвать функцию - PullRequest
1 голос
/ 27 июля 2011

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

Мой вопрос: как мне это запрограммировать? В частности, я могу создать модуль, который идет как?

sub command1_onClick()
  ..bla bla...
end sub

Или формы запрограммированы по-разному? Как привязать функцию к кнопке?

Ответы [ 2 ]

2 голосов
/ 27 июля 2011

Вы можете добавить действия к кнопке. В окне свойств кнопки есть Event -Tab. Нажмите On Click и выберите Event Procedure. Затем вы попадаете в VBA Editor ( ALT + F11 ) в следующую процедуру:

Private Sub Command1_Click()

End Sub

В этой процедуре вы можете использовать вызов API для открытия стандартного диалогового окна файла:

API: вызов стандартного диалогового окна открытия / сохранения файлов Windows

Функция TestIt по ссылке выше показывает вам, как открыть диалоговое окно и получить путь. Вы можете установить текстовое поле на этот путь следующим образом:

Me!Text1 = strPath

strPath должен быть заполнен путем, который вы получаете из диалогового окна файла.

1 голос
/ 27 июля 2011

Вы захотите взглянуть на свойство диалогового окна файла.

Dim fDialog As Office.FileDialog

Диалог файла MSDN

Выше показан пример, который выполняется при нажатии кнопки

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

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

.AllowMultiSelect = false

Я могу быть немного ржавым, но тогда вы захотите сделать что-то подобное (кто-то отредактирует или исправит меня, если я далеко)

Предполагается, что вы использовали varFile

(Dim varFile As Variant)

Me.TextBox1.Text = varFile

РЕДАКТИРОВАТЬ: После обнаружения ошибки

Кажется, ошибкаможет прийти из нескольких вещей. Убедитесь, что ссылка есть. Также вам может понадобиться добавить ссылку Microsoft DAO 3.6 Object Library.

См. раздел «Дополнительная информация» этой Ссылка (Надеюсь, что 2002 год достаточно близок к 2003 году. Может быть, есть еще несколько полезных советов, если это не решит проблему.

...