FileDialog не работает

Я искал довольно интенсивно, но не смог найти сообщение, которое напрямую решает мою проблему.

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

Dim FileName As FileDialog
Set FileName = Application.FileDialog(msoFileDialogFilePicker)
Dim Name As Variant

With FileName
    .AllowMultiSelect = False
    .Show
    If .SelectedItems.Count = 0 Then
    MsgBox "No file selected."
    Exit Sub
    End If
End With

For Each Name In FileName.SelectedItems
FileNameTextBox.Text = Mid$(Name, InStrRev(Name, "\") + 1)
Next Name

Однако, когда я попытался запустить тот же код в форме в Access 2010 на своем персональном компьютере, он не работает. В сообщении об ошибке выделяется первая строка и говорится: «Определяемый пользователем тип не определен». Я также пытался объявить FileName as Office.FileDialog, но тоже безуспешно. У меня есть библиотека объектов Microsoft Access 14.0 в качестве одной из используемых ссылок, поэтому я не знаю, что с этим не так.

Я пользуюсь Access всего две недели, и все мои знания получены из Google, поэтому очень вероятно, что я упускаю что-то очевидное.


person Emily    schedule 28.02.2012    source источник
comment
Как сделать так, чтобы весь путь к файлу вставлялся в текстовое поле?   -  person Jim    schedule 15.10.2012


Ответы (2)


Объект FileDialog предоставляется не библиотекой Access, а библиотекой Office. Таким образом, ваш код должен работать, если вы установите ссылку на библиотеку объектов Microsoft Office [номер версии]. Либо у вас нет этого набора ссылок, либо он сломан.

Однако, если бы это был я, я бы оставил ссылку неустановленной и изменил код следующим образом. Посмотрите, работает ли это для вас.

Const msoFileDialogFilePicker As Long = 3
Dim objDialog As Object

Set objDialog = Application.FileDialog(msoFileDialogFilePicker)

With objDialog
    .AllowMultiSelect = False
    .Show
    If .SelectedItems.Count = 0 Then
        MsgBox "No file selected."
    Else
        Me.FileNameTextBox.Value = Dir(.SelectedItems(1))
    End If
End With
person HansUp    schedule 28.02.2012
comment
Теперь это работает! Большое спасибо!! Хотя я все еще озадачен, почему это не работало раньше, потому что у меня была библиотека объектов 14.0. - person Emily; 29.02.2012

В инструментах, ссылках... вы должны выбрать «Библиотека объектов Microsoft Office 14.0» вместо библиотеки Microsoft Access.

person Community    schedule 30.01.2018