2010-01-28 29 views
5

Làm cách nào để thay đổi mã của tôi để lấy tên tệp thay vì tên thư mục? openDialog.InitialFilename cung cấp cho tôi tên thư mục.
openDialog.FileName cho tôi lỗi "Phương pháp hoặc thành viên dữ liệu không tìm thấy".Làm cách nào để lấy tên tệp đơn lẻ ra khỏi đối tượng Hộp thoại Tệp trong VBA (đối với MS Access 2007)?

Private Sub btnEditPhoto_Click() 
    If (txtImageName > "") Then 

     Application.FollowHyperlink txtImageName 

    Else 
     Dim openDialog As Office.FileDialog 

     Set openDialog = Application.FileDialog(msoFileDialogFilePicker) 

      openDialog.Filters.Clear 
      openDialog.Filters.Add "JPEG Files", "*.jpg" 

     Dim pickedFile As Boolean 
      pickedFile = openDialog.Show 

     If pickedFile Then 
       txtImageName.SetFocus 
       txtImageName.Text = openDialog.InitialFileName 
     End If 

    End If 

End Sub 
+0

Thật khó hiểu khi chỉnh sửa câu hỏi của bạn để kết hợp câu trả lời, tại thời điểm đó, mã của bạn thực hiện những gì bạn yêu cầu trợ giúp. –

Trả lời

11

Bạn muốn:

OpenDialog.SelectedItems.Item(1) 

Thay vì:

OpenDialog.InitialFileName 

Như các bạn đã không được phép chọn nhiều mục.


Vì vậy:

''Reference Microsoft Office x.x Object Library 
Dim openDialog As Office.FileDialog 

Set openDialog = Application.FileDialog(msoFileDialogFilePicker) 
openDialog.Filters.Clear 
openDialog.Filters.Add "JPEG Files", "*.jpg" 

If openDialog.Show Then 
    ''SelectedItems is not zero based 

    ''Do not use .Text property in MS Access except 
    ''in special cases, then you will not have to set focus 
    ''txtImageName.SetFocus 

    txtImageName = openDialog.SelectedItems(1) 
End If 

Nếu AllowMultiSelect được sử dụng, bạn cần phải lặp qua SelectedItems

''Reference Microsoft Office x.x Object Library 
Dim openDialog As Office.FileDialog 
Dim i As Integer 

Set openDialog = Application.FileDialog(msoFileDialogFilePicker) 
'Use ctl or shift + click to select more than one file 
openDialog.AllowMultiSelect = True 
openDialog.Filters.Clear 
openDialog.Filters.Add "JPEG Files", "*.jpg" 

If openDialog.Show Then 
    For i = 1 To openDialog.SelectedItems.Count 
     Imagelst = Imagelst & ";" & openDialog.SelectedItems(i) 
    Next 
End If 
+0

Cảm ơn rất nhiều! Bây giờ nó hoạt động. –

1

tôi cần phải chọn một tập tin văn bản duy nhất ... Đây là những gì tôi đã làm ... nó hoạt động tốt.

' Get the File 
'---------------------------------------------------------- 
Dim dialog As Object 
Dim pickedfile As Boolean 
Dim myfile As String 
Set dialog = Application.FileDialog(msoFileDialogFilePicker) 
With dialog 
    .AllowMultiSelect = False 
    .Title = "Please pick the file to convert." 
    .Filters.Clear 
    .Filters.Add "Text Files", "*.TXT" 
    .Filters.Add "All Files", "*.*" 
    pickedfile = False 
    pickedfile = .Show 
    If pickedfile Then 
    myfile = .SelectedItems.Item(1) 
    End If 
End With 
'---------------------------------------------------------- 

Ngoài ra ... bạn có thể thay thế các loại hộp thoại với ...

Set dialog = Application.FileDialog(msoFileDialogOpen) 

và nó làm việc tốt như nhau.

0
Private Sub Command135_Click() 

Dim dialog As Object 
Dim pickedfile As Boolean 
Dim myfile As String 
Set dialog = Application.FileDialog(1) 
With dialog 
    .AllowMultiSelect = False 
    .Title = "Please pick the file to convert." 
    .Filters.Clear 
    .Filters.Add "Picture Files", "*.Jpg" 
    .Filters.Add "All Files", "*.*" 
    pickedfile = False 
    pickedfile = .Show 
    If pickedfile Then 
    myfile = .SelectedItems.Item(1) 
    End If 
End With 

Me.Form.Picture = myfile 
End Sub 


Command_135=Button Name 
Me.Form.Picture = "The Control Name" 
+0

Mô tả ngắn gọn về mã mà bạn đã đăng để nó hữu ích cho người khác. – Rakesh

Các vấn đề liên quan