2012-02-28 5 views
7

Я смотрел довольно интенсивно, но не мог найти сообщение, которое напрямую решает мою проблему.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 на моем персональном компьютере, это не work.The сообщение об ошибке указывает на первую строку и говорит «Пользовательский тип не определен «. Я также попробовал объявить FileName as Office.FileDialog, но не повезло. У меня есть библиотека Microsoft Access 14.0 как одна из используемых ссылок, поэтому я не знаю, что с этим не так.

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

+0

Как сделать так, чтобы весь путь к файлу был вставлен в текстовое поле? – Jim

ответ

17

Объект FileDialog не предоставляется библиотекой доступа, а библиотекой 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 
+0

Теперь он работает! Огромное спасибо!! Хотя я все еще озадачен, почему это не сработало раньше, потому что у меня была используемая библиотека объектов 14.0. – Emily

0

В инструментах, ссылка ... Вы должны выбрать "Microsoft Управления Library 14,0 Object" вместо одного Microsoft Access.

Смежные вопросы