Mục lục:
Video: Tạo chức năng chọn file và thông báo file chưa được chọn trong Excel với VBA 2025
Nếu thủ tục VBA của bạn cần yêu cầu người sử dụng tên tập tin, bạn có thể sử dụng hàm InputBox và cho phép người dùng Excel gõ một số. Một hộp nhập liệu thường không phải là công cụ tốt nhất cho công việc này, tuy nhiên, vì hầu hết người dùng thấy khó nhớ đường dẫn, dấu gạch chéo ngược, tên tệp và phần mở rộng tệp. Nói cách khác, khi gõ một tên tập tin, quá dễ dàng để vít lên.
Để có giải pháp tốt hơn cho vấn đề này, sử dụng phương thức GetOpenFilename của đối tượng Application, đảm bảo rằng mã của bạn sẽ được đặt trên một tên tập tin hợp lệ, bao gồm đường dẫn hoàn chỉnh của nó. Phương thức GetOpenFilename hiển thị hộp thoại Open quen thuộc (một trình giữ chuột chết cho hộp thoại Excel hiển thị khi bạn chọn File → Open → Browse).
Phương thức GetOpenFilename không thực sự mở tệp được chỉ định. Phương thức này đơn giản trả về tên tập tin được người dùng chọn như một chuỗi. Sau đó, bạn có thể viết mã để làm bất cứ điều gì bạn muốn với tên tập tin.
Cú pháp cho phương thức GetOpenFilename
Cú pháp chính thức của phương thức GetOpenFilename như sau:
đối tượng. GetOpenFilename ([tệpFilter], [filterIndex], [title], [buttonText], [multiSelect])
Phương thức GetOpenFilename lấy các đối số tùy chọn dưới đây.
FilterIndex
Xác định xem bộ lọc nào trong hộp thoại sẽ hiển thị theo mặc định
Chỉ định phụ đề cho thanh tiêu đề
Bỏ qua (chỉ được sử dụng cho phiên bản Macintosh của Excel).
Tất cả các tập tin (*. *), *. *
Lưu ý rằng chuỗi này gồm có hai phần, được phân cách bởi dấu phẩy:
Tất cả các tệp (*. *)
và
*. *
Phần đầu tiên của chuỗi này là văn bản được hiển thị trong danh sách thả xuống Loại tệp. Phần thứ hai xác định các tệp mà hộp thoại sẽ hiển thị. Ví dụ, *. * có nghĩa là
tất cả các tệp.
Mã trong ví dụ sau sẽ mở ra một hộp thoại hỏi người sử dụng cho một tên tập tin.Thủ tục xác định năm bộ lọc tập tin. Lưu ý rằng chuỗi VBA liên tục được sử dụng để thiết lập biến Bộ lọc; làm như vậy sẽ giúp đơn giản hóa đối số khá phức tạp này. Sub GetImportFileName () Dim Finfo Như String Dim FilterIndex Như Long Dim Tiêu đề Như String Dim FileName Như Variant 'Thiết lập danh sách các tập tin lọc FInfo = "Tệp Văn bản (*. Txt), *. txt, "& _" Tập tin Lotus (*.prn), *. prn, "& _" Tệp được Phân cách bằng Dấu phẩy (*. csv), *. csv, "& _" Tệp ASCII (*. asc), *. asc, "& _" Tất cả các tệp (*. *), *. *" ' Trưng bày *. * theo mặc định FilterIndex = 5 'Đặt tiêu đề hộp thoại Tiêu đề = "Chọn một tệp để nhập' 'Lấy tên tệp FileName = Ứng dụng. GetOpenFilename (FInfo, _ FilterIndex, Title) 'Xử lý thông tin trả lại từ hộp thoại Nếu FileName = False Sau đó MsgBox "Không có tập tin đã được chọn. "Else MsgBox" Bạn đã chọn "& FileName End If End Sub
Đây là hộp thoại Excel hiển thị khi bạn thực hiện thủ tục này. Giao diện có thể thay đổi, tùy thuộc vào phiên bản Windows mà bạn sử dụng và các tùy chọn hiển thị mà bạn đã đặt.
Phương thức GetOpen Filename hiển thị một hộp thoại có thể tùy chỉnh và trả lại đường dẫn và tên tệp đã chọn. Nó không mở tập tin.
Trong một ứng dụng thực sự, bạn sẽ làm điều gì đó có ý nghĩa hơn với tên tập tin. Ví dụ, bạn có thể muốn mở nó bằng cách sử dụng một câu như:
Workbooks. Mở FileNameLưu ý rằng biến FileName được khai báo là một kiểu dữ liệu Variant. Nếu người dùng nhấp Hủy, biến đó chứa một giá trị Boolean (Sai). Nếu không, FileName là một chuỗi. Do đó, sử dụng một kiểu dữ liệu Variant sẽ xử lý cả hai khả năng.