Sử dụng hộp thoại để mở và lưu sổ làm việc
Chúng ta đã biết cách mở hoặc lưu tệp Excel trong VBA. Chúng tôi chỉ sử dụng phương thức Open và SaveAs của đối tượng Workbook. Nhưng điều đó yêu cầu mã hóa cứng đường dẫn của tệp. Nhưng hầu hết thời gian, bạn sẽ muốn người dùng cuối chọn một tệp bằng GUI hoặc nói hộp thoại File Open hoặc Save As cho phép người dùng chọn vị trí của tệp một cách trực quan và dễ dàng.
Trong bài viết này, chúng tôi đề cập đến mã được sử dụng để hiển thị hộp thoại mở sổ làm việc và lưu dưới dạng hộp thoại.
Tôi đã đính kèm một sổ làm việc mà bạn có thể tải xuống. Sổ làm việc được đính kèm với bài viết này chứa ba macro === Mã VBA để mở tệp bằng hộp thoại mở tệp Trong mã này, chúng tôi sẽ sử dụng phương thức GetOpenFilename của Ứng dụng. Cú pháp của phương thức GetOpenFilename là:
_Application.GetOpenFilename ([FileFilter], [FilterIndex], [Title], [ButtonText], [MultiSelect]) _ [FileFilter]: Bạn có thể xác định để chỉ hiển thị một loại tệp trong thư mục chọn. Nếu bạn viết “Excel-Files, .xlsx, .xls, * .xlsm”, v.v.
thì chỉ các tệp excel mới được hiển thị từ thư mục trong hộp thoại mở tệp.
[FilterIndex]: * Đây là số bộ lọc tệp bạn muốn sử dụng.
[Tiêu đề]: Tiêu đề của hộp thoại.
[ButtonText]: * Để chỉ định văn bản nút. Không quan trọng.
[MultiSelect]: Nó là một biến Boolean. Nếu bạn đặt nó là True hoặc 1, bạn sẽ có thể chọn nhiều hơn một tệp. Nếu bạn đặt nó là false, bạn chỉ có thể chọn một tệp duy nhất.
Lý thuyết đủ rồi. Hãy làm một số phép thuật.
Mã VBA để mở một tệp tại một thời điểm
Option Explicit Sub OpenOneFile() Dim FileName As Variant 'Displaying the open file dialog box FileName = Application.GetOpenFilename("Excel-files,*.xls", _ 1, "Select One File To Open", , False) 'User didn't select a file If TypeName(FileName) = "Boolean" Then Exit Sub 'Open the workbook Workbooks.Open FileName End Sub
Nó hoạt động như thế nào?
Khi bạn chạy đoạn mã này, phương thức GetOpenFilename cho đối tượng Ứng dụng sẽ mở hộp thoại Mở Tệp. Tiêu đề của hộp thoại sẽ là “Chọn một tệp để mở” như chúng tôi đã xác định trong mã.
Nếu bạn chọn một tệp thì mã Worbook.Open sẽ chạy và tệp sẽ được mở. Nếu bạn không chọn tệp, tệp con sẽ thoát ra mà không chạy mã Workbook.Open.
Mã VBA để mở một hoặc nhiều tệp cùng một lúc Đoạn mã này sẽ mở hộp thoại mở tệp nhưng bạn sẽ có thể chọn nhiều tệp cùng một lúc.
Sub OpenMultipleFiles() Dim FileName As Variant, f As Integer 'Displaying the open file dialog box FileName = Application.GetOpenFilename("Excel-files,*.xlsx", _ 1, "Select One Or More Files To Open", , True) 'User didn't select a file If TypeName(FileName) = "Boolean" Then Exit Sub 'Open all the workbooks selected by user For f = 1 To UBound(FileName) Workbooks.Open FileName(f) Next f End Sub
Lưu ý rằng ở đây chúng tôi đã đặt biến multiselect thành True. Điều này sẽ cho phép lựa chọn nhiều tệp.
Mã VBA để mở Hộp thoại Lưu dưới dạng Để mở hộp thoại Lưu dưới dạng, chúng ta sẽ sử dụng phương thức GetSaveAsFilename của đối tượng Ứng dụng. Cú pháp của phương thức là:
_Application.GetSaveAsFilename ([InitialFileName], [FileFilter], [FilterIndex], [Title], [ButtonText]) _ [InitialFileName]: * Tên tệp ban đầu. Nếu bạn không đổi tên tệp trong khi lưu, tệp của bạn sẽ được lưu với tên này.
[FileFilter]: Bạn có thể xác định chỉ hiển thị một loại tệp trong thư mục đã chọn. Nếu bạn viết “Excel-Files, .xlsx, .xls, * .xlsm”, v.v.
thì chỉ các tệp excel mới được hiển thị từ thư mục trong hộp thoại mở tệp.
[FilterIndex]: Chỉ mục bộ lọc của tệp.
[Tiêu đề]: * Tiêu đề của hộp thoại.
[ButtonText]: * Điều này được sử dụng trong hệ thống Mac để thay đổi tên của nút.
Vui lòng theo dõi bên dưới để biết mã
Sub SaveFile() Dim FileName As Variant 'Displaying the saveas dialog box FileName = Application.GetSaveAsFilename("MyFileName.xls", _ "Excel files,*.xls", 1, "Select your folder and filename") 'User didn't save a file If TypeName(FileName) = "Boolean" Then Exit Sub 'Save the workbook ActiveWorkbook.SaveAs FileName End Sub
SaveFile Macro sử dụng phương thức GetSaveAsFilename của đối tượng Ứng dụng để mở hộp thoại lưu dưới dạng, gán tên tệp và chọn vị trí lưu sổ làm việc.
Vì vậy, các bạn, đây là cách bạn có thể sử dụng hộp thoại để mở và lưu tệp bằng VBA. Tôi hy vọng nó là hữu ích. Nếu bạn có bất kỳ nghi ngờ nào liên quan đến bài viết này hoặc bất kỳ chủ đề VBA nào khác, hãy hỏi trong phần nhận xét bên dưới.
Bài viết liên quan:
===
Bài viết phổ biến:
Chức năng Countif là cần thiết để chuẩn bị bảng điều khiển của bạn.