Hộp thoại Open – Hàm GetOpenFilename

Một phần của tài liệu Tài liệu Ứng dụng VBA sử dụng trong ngành giao thông - P2 docx (Trang 62 - 65)

M ở workbook

64 Mảng giá trị

8.2.2. Hộp thoại Open – Hàm GetOpenFilename

Trong một số chương trình, khi cần người dùng nhập vào tên tệp nào đó, người lập trình có thể sử dụng hộp thoại InputBox. Tuy nhiên cách này có thể phát sinh lỗi do người dùng nhập vào một tên tệp không tồn tại. Một cách tốt hơn để làm việc này chính là sử dụng phương thức GetOpenFilename của đối tượng Application. Phương thức này sẽ hiển thị hộp thoại Open (giống như khi chọn trình đơn FileÖOpen) nhưng chỉ trả về tên tệp được chọn mà không mở một tệp nào cả. Và sau đó, người lập trình có thể sử dụng tên tệp này để thực hiện mục tiêu của mình.

Cú pháp của phương thức này như sau (tất cả các tham số đều là tham số tuỳ chọn):

GetOpenFilename(FileFilter,FilterIndex,Title,ButtonText,MultiSelect)

Tham số Giải thích

FileFilter Chuỗi chứa bộ lọc tệp.

FilterIndex Số thứ tự của bộ lọc tệp mặc định.

Title Tiêu đề của hộp thoại, giá trị mặc định là “Open”. ButtonText Không sử dụng.

MultiSelect Nếu bằng TRUE, người dùng có thể chọn nhiều tệp cùng một lúc. Mặc định là FALSE.

Tham số FileFilter quy định các phần tử sẽ được hiển thị trong danh sách xổ xuống “File ò type” của hộp thoại. Mỗi phần tử tương ứng với một loại tệp nào đó. Phần tử là một cặp giá trị gồm tên sẽ được hiển thị trong danh sách và phần mở rộng của loại tệp tương ứng. Nếu không gán giá trị cho tham số này, giá trị mặc định sẽ là:

“All Files (*.*),*.*”

Chú ý phần đầu của chuỗi này (phần nằm phía trước dấu phẩy - All Files (*.*)) là đoạn văn bản sẽ được hiển thị trong danh sách. Còn phần thứ hai của chuỗi (phần nằm sau dấu phẩy – *.*) chính là phần mở rộng của tệp sẽ được hiển thị.

Ví dụ sau minh hoạ cách tạo một chuỗi chứa trong biến Filt có thể dùng để truyền vào tham số FileFilter của phương thức GetOpenFilename. Như trong trường hợp này, người dùng có thể chọn 2 loại tệp (và một lựa chọn cho tất cả các tệp).

Filt = “Text Files (*.txt),*.txt,” & _

“Comma Separated Files (*.csv),*.csv,” & _ “All Files (*.*),*.*”

Ví dụ sau sẽ nhắc người dùng chọn một tệp, sau đó sẽ hiển thị tên tệp trong hộp thông báo. Sub GetImportFileName()

Dim Filt As String

Dim FilterIndex As Integer Dim Title As String

Dim FileName As String ' Gán bộ lọc tệp

Filt = "Text Files (*.txt),*.txt," & _

"Comma Separated Files (*.csv),*.csv," & _ "All Files (*.*),*.*"

' Hiển thị các tệp *.csv là mặc định FilterIndex = 2

' Gán tiêu đề cho hộp thoại Title = "Chon tep"

' Lấy tên tệp FileName = Application.GetOpenFilename _ (FileFilter:=Filt, _ FilterIndex:=FilterIndex, _ Title:=Title) ' Thoát nếu nhấn nút Cancel If FileName = "False" Then

MsgBox "Khong tep nao duoc chon." Exit Sub

End If

' Hiển thị tên tệp đầy đủ

MsgBox "Ban vua chon tep: " & FileName End Sub

Hình: Hộp thoại Open

8.2.3.Hp thoi Save As – Hàm GetSaveAsFilename

Phương thức GetSaveAsFilename cũng tương tự như phương thức GetOpenFileName. Phương thức này sẽ hiển thị hộp thoại Save As, cho phép người dùng chọn hoặc chỉ định tệp để lưu, sau đó sẽ trả về tên tệp đầy đủ nhưng không thực hiện thao tác lưu nào cả.

Cú pháp của phương thức này như sau:

GetSaveAsFilename(InitialFilename,FileFilter,FilterIndex,Title,ButtonT ext)

Tham số Giải thích

InitialFilename Xác định tên tệp gợi ý ban đầu FileFilter Chuỗi chứa bộ lọc tệp.

FilterIndex Số thứ tự của bộ lọc tệp mặc định.

Title Tiêu đề của hộp thoại, giá trị mặc định là “Save As”. ButtonText Không sử dụng.

Ví dụ sau sẽ hiển thị hộp thoại Save As để người dùng nhập vào tên tệp, sau đó sẽ hiển thị tên tệp được lựa chọn.

Sub SaveAs()

Dim fileSaveName As String

fileSaveName = Application.GetSaveAsFilename( _ InitialFileName:="TenTep", _

FileFilter:="Excel Workbook (*.xls), *.xls", _ Title:="Luu tap tin")

If fileSaveName <> "False" Then MsgBox "Save as " & fileSaveName End If

End Sub

Một phần của tài liệu Tài liệu Ứng dụng VBA sử dụng trong ngành giao thông - P2 docx (Trang 62 - 65)

Tải bản đầy đủ (PDF)

(77 trang)