web-dev-qa-db-ja.com

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、しかし運もありません。使用中の参照の1つとしてMicrosoft Access 14.0 Object Libraryを持っているので、何が問題なのかわかりません。

私はAccessを2週間しか使用していませんが、私の知識はすべてグーグルで取得しているので、明らかなものを見落としている可能性が非常に高いです。

10
Emily

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
22
HansUp

ツールでは、参照...、Microsoft Accessのものではなく、「Microsoft Office 14.0 Object Library」を選択する必要があります。

1
user8608712