2012-02-28 19 views
7

Tôi đã nhìn khá mãnh liệt, nhưng không thể tìm thấy bài đăng trực tiếp giải quyết được vấn đề của tôi.FileDialog không hoạt động

Mã sau cho biểu mẫu tôi đã tạo hoạt động trong Access 2003, mà tôi sử dụng tại nơi làm việc.

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 

Tuy nhiên, khi tôi đã cố gắng để chạy cùng mã trên một hình thức trong Access 2010 trên máy tính cá nhân của tôi, nó không work.The thông báo lỗi nêu bật những dòng đầu tiên và nói "kiểu người dùng định nghĩa không xác định . " Tôi cũng đã thử khai báo FileName as Office.FileDialog, nhưng cũng không may mắn. Tôi có Microsoft Access 14.0 đối tượng thư viện là một trong những tài liệu tham khảo trong sử dụng, vì vậy tôi không biết có gì sai với điều đó.

Tôi chỉ đang sử dụng Quyền truy cập trong hai tuần và tất cả kiến ​​thức của tôi xuất phát từ việc googling, vì vậy rất có khả năng tôi thiếu điều gì đó hiển nhiên.

+0

Làm thế nào để bạn tạo nó để toàn bộ đường dẫn tệp được chèn vào hộp văn bản? – Jim

Trả lời

17

Đối tượng FileDialog không được cung cấp bởi thư viện Access, nhưng do thư viện Office cung cấp. Vì vậy, mã của bạn sẽ hoạt động nếu bạn đặt tham chiếu đến số Microsoft Office [số phiên bản] Thư viện đối tượng. Hoặc bạn không có bộ tham chiếu đó hoặc bị hỏng.

Tuy nhiên nếu đó là tôi, tôi sẽ bỏ tham chiếu chưa được đặt và sửa đổi mã như thế này. Xem nếu nó làm việc cho bạn.

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

Nó hiện đang hoạt động! Cảm ơn bạn rất nhiều!! Mặc dù tôi vẫn còn bối rối vì sao nó không hoạt động trước đây bởi vì tôi đã sử dụng thư viện đối tượng 14.0. – Emily

0

Trong các công cụ, tài liệu tham khảo ..., bạn phải chọn "Microsoft Văn phòng 14.0 Object Library" thay vì một Microsoft Access.