web-dev-qa-db-fra.com

FileDialog ne fonctionne pas

J'ai cherché assez intensément, mais je n'ai pas trouvé de message qui résolve directement mon problème.

Le code suivant d'un formulaire que j'ai créé fonctionne dans Access 2003, que j'utilise au travail.

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

Cependant, lorsque j'ai essayé d'exécuter le même code sur un formulaire dans Access 2010 sur mon ordinateur personnel, cela ne fonctionne pas. Le message d'erreur met en évidence la première ligne et indique "Type défini par l'utilisateur non défini". J'ai aussi essayé de déclarer FileName as Office.FileDialog, mais pas de chance non plus. Microsoft Access 14.0 Object Library est l’une des références utilisées. Je ne sais donc pas ce qui ne va pas.

Je n'utilise Access que depuis deux semaines et toutes mes connaissances proviennent de la recherche sur Google. Il est donc très probable que je manque quelque chose d'évident.

9
Emily

L'objet FileDialog n'est pas fourni par la bibliothèque Access, mais par la bibliothèque Office. Votre code devrait donc fonctionner si vous définissez une référence à la bibliothèque d'objets Microsoft Office [numéro de version] . Soit vous n'avez pas cette référence, soit elle est cassée.

Cependant, si c'était moi, je laisserais la référence non définie et modifierais le code de cette manière. Voyez si cela fonctionne pour vous.

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

Dans les outils, les références ..., vous devez sélectionner "Microsoft Office 14.0 Object Library" au lieu de Microsoft Access.

1
IRENE G