Ich habe mich intensiv umgesehen, konnte aber keinen Beitrag finden, der mein Problem direkt löst.
Der folgende Code für ein von mir erstelltes Formular funktioniert in Access 2003, das ich bei der Arbeit verwende.
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
Wenn ich jedoch versucht habe, denselben Code in einem Formular in Access 2010 auf meinem PC auszuführen, funktioniert er nicht. Die Fehlermeldung hebt die erste Zeile hervor und sagt "Benutzerdefinierter Typ nicht definiert". Ich habe auch versucht, FileName as Office.FileDialog
zu deklarieren, aber auch kein Glück. Ich habe Microsoft Access 14.0-Objektbibliothek als eine der verwendeten Verweise, daher weiß ich nicht, was daran falsch ist.
Ich benutze Access erst seit zwei Wochen, und mein gesamtes Wissen stammt vom Googeln. Es ist also sehr wahrscheinlich, dass mir etwas Offensichtliches fehlt.
Das FileDialog
-Objekt wird nicht von der Access-Bibliothek, sondern von der Office-Bibliothek bereitgestellt. Ihr Code sollte also funktionieren, wenn Sie einen Verweis auf die Microsoft Office [Versionsnummer] Object Library setzen. Entweder haben Sie diese Referenz nicht oder sie ist defekt.
Wenn ich es wäre, würde ich die Referenz jedoch nicht setzen und den Code so ändern. Sehen Sie, ob es für Sie funktioniert.
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
In Tools, Referenzen ... müssen Sie "Microsoft Office 14.0 Object Library" anstelle der Microsoft Access-Bibliothek auswählen.