Excel VBA FileDialog
Trong VBA fieldialog là một thuộc tính được sử dụng để đại diện cho các trường hợp khác nhau, trong tệp tin có bốn loại hằng số khác nhau được gọi là msofiledialogfilepicker được sử dụng để chọn một tệp từ một đường dẫn nhất định, một thuộc tính thứ hai là msofiledialogfolderpicker mà tên gợi ý được sử dụng để chọn một thư mục và thứ ba là msofiledialog mở để mở một tệp và cuối cùng là msofiledialogsaveas được sử dụng để lưu tệp dưới dạng tệp mới.
Có một số trường hợp chúng tôi muốn dữ liệu từ bất kỳ tệp nào khác hoặc bất kỳ trang tính nào khác và vì VBA được sử dụng để tự động hóa công việc của chúng tôi, chúng tôi có thể mở các tệp khác bằng VBA và nó được thực hiện bằng cách sử dụng hộp thoại Tệp, phần thú vị sử dụng phương pháp này là chúng tôi không cần cung cấp đường dẫn đến mã thay vào đó chúng tôi yêu cầu người dùng duyệt tệp.
Là một phần của dự án VBA, chúng tôi có thể yêu cầu mở các sổ làm việc khác và thực hiện một số loại tác vụ với chúng. Trong một trong những bài viết trước đó, “VBA Workbook.Open”, chúng tôi đã chỉ ra cách mở tệp bằng đường dẫn cụ thể và tệp cụ thể. Ở đó, chúng tôi cần cung cấp đường dẫn thư mục và tên tệp cùng với phần mở rộng của nó. Nhưng điều gì sẽ xảy ra nếu mỗi lần người dùng phải chọn các tệp khác nhau từ các thư mục khác nhau. Đây là nơi tùy chọn "FileDialog" xuất hiện trong hình.

Tùy chọn VBA FileDialog hoạt động như thế nào?
“Nếu bạn không biết đường dẫn chính xác, FileDialog sẽ tìm và chọn tệp cho bạn.” Thay vì đề cập đến địa chỉ đường dẫn và tên tệp, chúng ta có thể trình bày riêng một cửa sổ hộp thoại mở tệp để chọn tệp từ bất kỳ thư mục nào của máy tính.
“FileDialog” là một đối tượng trong VBA. Để sử dụng tùy chọn này trước tiên, chúng ta cần xác định biến là FileDialog.

Khi biến được khai báo là “FileDialog”, nó là một biến đối tượng. Để bắt đầu sử dụng, chúng ta cần đặt đối tượng bằng cách sử dụng Application.FileDialog.

Như chúng ta thấy trong hình trên, FileDialog có bốn tùy chọn với nó.
- msoFileDialogFilePicker: Tùy chọn này mở cửa sổ bộ chọn tệp trước mặt người dùng để chọn tệp mong muốn theo ý muốn của họ.
- msoFileDialogFolderPicker: Tùy chọn này mở hộp thoại hoặc cửa sổ trước mặt người dùng để chọn Thư mục.
- msoFileDialogOpen: Điều này sẽ cho phép người dùng mở tệp đã chọn từ thư mục.
- msoFileDialogSaveAs: Điều này sẽ cho phép người dùng lưu tệp dưới dạng một bản sao khác.
Hiện tại, tôi đã chọn tùy chọn msoFileDialogFilePicker.
Bây giờ chúng ta cần thiết kế hộp thoại xuất hiện trước mặt chúng ta.
Sử dụng With Statement, chúng ta có thể thiết kế hộp thoại.

Bên trong câu lệnh with, hãy đặt một dấu chấm để xem danh sách IntelliSense về các thuộc tính và phương thức của tùy chọn FileDialog.

Để chỉ xem các tệp excel khi hộp thoại tệp mở ra, trước tiên chúng ta cần xóa bất kỳ bộ lọc nào được áp dụng.

Bây giờ chúng ta cần áp dụng một bộ lọc mới là “Tệp Excel” với phần mở rộng là ký tự đại diện của tệp excel.

Bây giờ chúng ta hãy thay đổi tiêu đề của hộp thoại tệp.

Chúng tôi có thể cho phép người dùng chỉ chọn một tệp tại một thời điểm hoặc chúng tôi cũng có thể cho phép họ chọn nhiều tệp. Đối với điều này, chúng tôi cần sử dụng “Cho phép nhiều lựa chọn”.

Chúng tôi có hai lựa chọn ở đây. Nếu TRUE được chọn, nó sẽ cho phép người dùng chọn nhiều tệp. Nếu đúng như vậy, người dùng FALSE chỉ có thể chọn một tệp tại một thời điểm.
Một điều khác mà chúng ta có thể thiết kế với FileDialog là chúng ta có thể thực sự nhấn mạnh vào thư mục nào nên là thư mục mặc định khi hộp thoại tệp xuất hiện. Đối với việc sử dụng này, Tên tệp ban đầu.

Đối với điều này, chúng tôi cần đề cập đến thư mục mặc định được mở đường dẫn địa chỉ.

Cuối cùng, chúng ta cần áp dụng phương thức “Show” để xem hộp thoại tệp.
Mã:
Sub DoEvents_Example1 () Dim Myfile As FileDialog Đặt Myfile = Application.FileDialog (msoFileDialogFilePicker) Với Myfile .Filters.Clear .Filters.Add "Excel Files", "* .xlsx?", 1 .Title = "Chọn tệp Excel của bạn !! ! " .AllowMultiSelect = False .InitialFileName = "D: Excel Files" .Hiển thị End With End Sub

Bây giờ hãy chạy mã VBA để xem kết quả.

Như chúng ta thấy trong hộp thoại tệp hình ảnh ở trên đã mở thư mục được đề cập theo mặc định.
Bây giờ chúng ta có thể chọn bất kỳ thư mục con nào và chọn các tệp excel.

Nhìn vào hình trên vì chúng tôi đã áp dụng tham số bộ lọc chỉ là “Tệp Excel”.
Thao tác này sẽ chỉ chọn tệp từ thư mục được đề cập. Để lưu trữ đường dẫn đầy đủ, chúng ta cần khai báo thêm một biến dưới dạng chuỗi.

Now inside the with the statement, select “SelectedItems.” Assign the selected items folder path to the newly defined variable.

Now finally show the selected folder path in the VBA message box.

Now I will run the program to see the dialogue box.

Now I have selected the File Name as “1. Charts.xlsx” in the subfolder “Charts.” If I click on OK, we can see the full folder path in the message box.

So, like this, we can use the FileDialog option to select the files from the folder in Excel. Use the below code to select the files.
Code:
Sub DoEvents_Example1 () Dim Myfile As FileDialog Đặt Myfile = Application.FileDialog (msoFileDialogFilePicker) Dim FileAddress As String With Myfile .Filters.Clear .Filters.Add "Excel Files", "* .xlsx?", 1 .Title = "Chọn của bạn Tệp Excel !!! " .AllowMultiSelect = False .InitialFileName = "D: Excel Files" .Show FileAddress = .SelectedItems (1) End With MsgBox FileAddress End Sub