Tải bản đầy đủ (.pdf) (15 trang)

Lập trình VBA cơ bản đến nâng cao

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (697.93 KB, 15 trang )

LẬP TRÌNH VBA – EXCEL
1. GIỚI THIỆU CHUNG
VBA – Visual Basic for Application là một ứng dụng được nhúng trong Excel để thực hiện các
thao tác nhất định.
VBA thường được dùng để rút ngắn thời gian xử lý công việc của mình, giải quyết các vấn đề
thủ cơng, tối ưu hóa khả năng làm việc và xóa bỏ nhàm chán trong cơng việc.
Bạn có thể dùng VBA để giải quyết rất nhiều công việc khác nhau
 Lưu trữ danh sách
 Lên kế hoạch
 Phân tích dữ liệu
 Phát triển các biểu đồ
 Tự xây dựng các chương trình ♥
VBA có thể dùng để tạo ra các chương trình (Macro là một ứng dụng của VBA đã được tích
hợp để phù hợp hơn với phần lớn người dùng) hoặc các Hàm (Function) tương tự như các hàm có
sẵn của Excel.
Để bắt đầu lập trình VBA, bạn cần bật được Tab Developer trên thanh công cụ Ribbon của
Excel. Thao tác như sau
 Chuột phải tại vị trí bất kì trên thanh Ribbon
 Customize the Ribbon → Tick chọn thẻ Developer
 Tab Developer lúc này sẽ hiện trên thanh Ribbon
Tab Developer không chỉ hỗ trợ lập trình VBA thuần túy mà cịn hỗ trợ ghi Macro (Macro
Recording) - Ứng dụng của lập trình VBA.


2. CÁC CHỨC NĂNG LẬP TRÌNH
2.1. BẮT ĐẦU LẬP TRÌNH
Để mở cửa sổ lập trình Microsoft Visual Basic for Application cho File Excel hiện tại, bạn bấm
tổ hợp phím Alt + F11
Tại cửa sổ VBA, bạn chọn Sheet để thực hiện các thao tác lập trình, một mơi trường lập trình sẽ
mở ra bên phải để nhập lệnh
Để bắt đầu một chương trình lập trình, bạn bắt đầu với


Sub ten_chuong_trinh ()
Khi đó, một lệnh kết thúc sẽ được tự động tạo ra đồng thời
End Sub
Tương tự như một chương trình main() ở các ngơn ngữ lập trình khác, lúc này, tồn bộ nội dung
lập trình của bạn sẽ nằm gọn trong khung Sub – End Sub
- OPTIONS: Để thay đổi các thông báo hay giao diện của môi trường lập trình theo ý muốn bạn
thực hiện các bước
 Tại cửa sổ MVB, menu Tools → Options
 Editor: Cài đặt các thơng báo
o Auto Syntax Check: Thơng báo khi có lỗi cú pháp (Syntax)
o Require Variable Declaration: Hiện dòng Option Explicit ở đầu Module
o Auto List Members: Hiện danh sách các phương thức/thuộc tính dựa trên từ gợi nhắc
o Auto Quick Info: Hiển thị cú pháp của 1 hàm khi có từ gợi nhắc
o Auto Data Tip: Hiển thị danh sách các dữ liệu khi khai báo biến

-

 Editor Format: Cài đặt định dạng và giao diện
o Code Color: Chọn màu chữ, màu nền
o Font: Chọn font chữ theo ý thích
o Size: Chọn kích cỡ chữ theo ý thích
VBAPRỌECT: Tại cửa sổ MVB, menu Tools → VBAProject Properties → General
 VBProject: Để nhận dạng project của bạn trong Window Registry và Object Browser (nó
cần có tên duy nhất)
 Project Description: Mơ tả project trong Type Library
Nếu bạn không muốn người khác xem Code của mình, bạn có thể thực hiện khóa lại bằng Tab
Protection của cửa sổ Project Properties
 Lock Project: Khóa code trong module, khơng cho nhìn thấy và khơng cho chỉnh sửa (Lock
project for viewing)


-

 Password to view project properties: Gõ nội dung mật mã vào Password và xác nhận
Password
SECURITY: Chế độ an toàn, bảo vệ khỏi Virus. Chức năng này điều khiển hoạt động của
macro (ứng dụng của VBA) cho phép macro hoạt động hoặc không


 Tại cửa sổ MVB, menu Tools → Macro → Security → Security Level

-

 Chọn mức độ an toàn
o Very High: Các macro không thể chạy được (trừ macro của Office)
o High: Chỉ những macro được xác nhận mới có thể chạy. Để xác nhận macro, bạn phải
đăng kí bằng cách Tools → Security → More → Trusted → Publisher
o Medium: Khi mở file có chứa macro, sẽ có cảnh báo, chọn Enable Macros để cho phép
macro hoạt động, ngược lại chọn Diasable Macros (Trường hợp bạn không mở file có
Macro những vẫn được cảnh báo → File của bạn đã bị nhiễm VIRUS MACRO)
o Low: Không đặt cảnh báo an toàn cho macro
 Khi sử dụng VBA, nên đặt Security ở mức Medium hoặc Low
ERRORS: Trong quá trình lập trình, nếu có xảy ra lỗi (errors) VBA sẽ kiểm tra và tự sửa lỗi
(Các lỗi cú pháp đơn giản) hoặc báo lỗi ngay lập tức (đổi dịng đang có lỗi sang màu đỏ) để bạn
sửa lỗi
 Báo lỗi
o Với các lỗi cú pháp cơ bản (viết HOA ↔ viết thường) VBA sẽ không báo lỗi và tự sửa
giúp bạn
o Với các lỗi cú pháp phức tạp hơn (Sai chính tả, thiếu từ, thiếu thành phần của hàm,…)
VBA sẽ hiện thơng báo và chuyển đỏ dịng đang có lỗi
o Với các lỗi Logic hay các lỗi khó phát hiện khác, VBA khơng thể phát hiện ngay trong

q trình Code được, do đó, khi chạy Debug
 Sửa lỗi
o Đối với các lỗi thơng báo trong q trình Code, bạn có thể tiến hành sửa trực tiếp
o Với những lỗi bắt gặp trong q trình Debug (được bơi nền vàng) bạn có thể chờ kết
thúc quá trình Debug và đi đến để sửa lỗi

2.2. CÁC QUY TẮC KHI LẬP TRÌNH
- CÁC ĐỐI TƯỢNG: Trước hết, cần hiểu về các đối tượng có thể thao tác trong Excel để trong
quá trình lập trình VBA không gặp nhiều rắc rối
 Workbook: Là đối tượng lớn nhất – Cả file Excel
 Worksheet: Là các trang (sheet) trong 1 file Excel
 Chart: Là các biểu đồ
 Range: Là các vùng hay nhóm ơ trong 1 Sheet
 Cell: Là đối tượng nhỏ nhất trong Excel – 1 ô
 Để gọi tên 1 đối tượng trong VBA, bạn làm như sau
Doi_tuong(“ten_doi_tuong”)
-

CÁC PHƯƠNG THỨC: Hay là các hành động có thể thực hiện đối với 1 đối tượng bất kì
trong Excel


 Activate: Kích hoạt
 Clear: Xóa
 Copy: Sao chép
 Cut: Cắt
 Delete: Xóa nội dung bên trong
 Select: Lựa chọn (Bôi đen)
 Để thực hiện một phương thức cho một đối tượng trong VBA, bạn nhập theo cú pháp
Doi_tuong(“ten_doi_tuong”).Phuong_thuc

-

THUỘC TÍNH: Là các thông số của các đối tượng bên trong Excel. Một số thuộc tính cơ bản
 ColumnWidth: Độ rộng cột
 Font: Phông
 Formula: Công thức
 Text: Dữ liệu Text
 Value: Dữ liệu giá trị (số)
 Để thiết lập thuộc tính cho một đối tượng trong VBA, thực hiện theo cú pháp
Doi_tuong(“ten_doi_tuong”).Thuoc_tinh = Thong_so

-

BIẾN: Tương tự như các ngôn ngữ lập trình khác, các thao tác trung gian trong VBA được
thực hiện thông qua các biến. VBA không bắt buộc khai báo biến (VBA sẽ tự tạo ra biến khi
bạn sử dụng chúng lần đầu tiên trong Code của mình). Tuy nhiên, vẫn nên định nghĩa rõ ràng
cho từng biến sử dụng. Các lưu ý khi khai báo biến
 Cách đặt tên
 Tên dài tối đa 255 kí tự
 Kí tự bắt đầu phải là chữ
 Khơng chứa các kí tự đặc biệt ^; &; (; ); %; $; #; !; ~; +; -; *…
 Không đặt trùng với từ khóa của VBA: Print; Sub; End;…
 VBA khơng phân biệt chứ HOA và thường trong tên biến
 Khai báo kiểu dữ liệu: Các kiểu dữ liệu của VBA
 Byte: Số nguyên dương, 0 – 255
 Boolean: Kiểu Logic, True/False
 Integer: Số nguyên, -32,768 – 32,767
 Long: Số nguyên, -2,147,483,648 – 2,147,483,647
 Single: Số, -3.402823E38 – -1.401298E-45 và 1.401298E-45 – 3.402823E38
 Curency: Kiểu tiền tệ, -922337203685477.5808 – 922337203685477.5807

 Date: Kiểu tời gian, January 1, 100 – December 31, 9999 (Có dấu # ở 2 đầu)
 Object: Tham chiếu đến bất kì đối tượng nào
 String: Chuỗi, 0 – 65535 kí tự (Đặt trong “ “)
 Variant: Kiểu dữ liệu được gán tự động bởi VBA, thay thế được cho mọi kiểu dữ liệu


 Khai báo biến số: Để khai báo một biến số có thể thay đổi giá trị trong q trình lập trình
Dim ten_bien As kieu_du_lieu
 Khai báo biến cố định: Để khai báo một hằng số (giá trị không đổi)
Const ten_bien = gia_tri
-

MẢNG: Mảng là một kiểu dữ liệu đặc biệt, mảng chứa các biến số được sắp xếp theo một trình
tự nhất định – Mỗi biến số là một phần tử của mảng. Mảng có biên trên và biên dưới, các phần
tử trong mảng là liên tục. Mảng có 2 loại
 Mảng có chiều dài có định: Mảng có số phần tử cố định. Cách khai báo
Dim ten_mang (do_dai_chieu_1, do_dai_chieu_2) As kieu_du_lieu
o Độ dài chiều 1/2: Là các số cụ thể
o Kiểu dữ liệu: Là kiểu dữ liệu của các phần tử (biến số) bên trong mảng
o Địa chỉ bắt đầu của mỗi chiều trong mảng là 0
 Mảng động: Mảng có số phần tử dao động trong một khoảng. Cách khai báo
Dim ten_mang (do_dai_chieu_1, do_dai_chieu_2) As kieu_du_lieu
o Độ dài chiều 1/2: Là khoảng *** to *** (chiều dài tối thiểu và tối đa cố định)
o Kiểu dữ liệu: Là kiểu dữ liệu của các phần tử (biến số) bên trong mảng
 Hàm Array: Hàm này sẽ tự động tạo ra mảng với các biến số trong nó. Các biến này sẽ tự
động được gán kiểu Variant. Cú pháp hàm
Dim Array(“bien_1”, “bien_2”…)

-


o Hàm UBound: trả về phần tử cuối cùng của mảng
o Hàm LBound: trả về phần tử đầu tiên của mảng
THAM CHIẾU ĐẾN Ô VÀ VÙNG: Đây là các thành phần làm việc chính trong Excel, do
đó, để gán dữ liệu vào Worksheet, bạn cần tham chiếu đến các đối tượng con này. Một số
phương pháp tham chiếu
 Tham chiếu kiểu A1: Kiểu tham chiếu vùng cơ bản nhất. Cú pháp
Range(“vung_tham_chieu”) hoặc [vung_tham_chieu]
 Tham chiếu bằng Index Numbers: Dành cho tham chiếu ô. Cú pháp
Cells(so_hang,so_cot)
 Số hàng và số cột: Để tham chiếu nhanh đến cả hàng/cột (thay vì dùng tham chiếu kiểu
A1). Cú pháp
Rows(so_hang) và Columns(so_cot)
 Đặt tên cho vùng: Một phương pháp để đơn giản hóa phương pháp A1, bằng việc đặt tên
cho một vùng cố định bạn không cần nhớ địa chỉ của vùng mà chỉ cần nhớ tên của vùng đó.
Bạn có thể thực hiện đặt tên cho vùng đó trước hoặc đặt trong quá trình Code
o Tên được tạo trước: Nếu tên đã được đặt trước và nằm trong 1 Sheet thuộc 1 Workbook.
Cú pháp


Range(“[ten_Workbook]ten_sheet!ten_vung”)
Nếu bạn đang truy cập Sheet và Workbook chứa vùng muốn tham chiếu thì có thể bỏ
qua phần tên của 2 đối tượng này
o Tên đặt khi đang Code: Nếu bạn muốn đặt tên cho vùng trong quá trình Code và tham
chiếu đến đó thì thực hiện các bước
Workbooks(“ten_Workbook”).Names.Add Name:=”ten_vung”,_
RefersTo:=”=ten_sheet!dia_chi_vung”
Range(“ten_vung”)
 Tham chiếu nhiều mảng: Là cách tham chiếu cùng lúc đến nhiều vùng để thực hiện nhanh.
Có thể sử dụng cách tham chiếu A1 hoặc theo tên từng vùng. Cú pháp
Range(“vung_1,vung_2,…”)

 Offset cells: Được dùng để tham chiếu đến các ô TIẾP THEO của ô hiện tại theo một quy
tắc chung. Phương pháp này khơng thể quay lại vị trí phái trước. Cú pháp
Offset(so_dong_xuong,so_cot_phai)
Giá trị so_dong_xuong và so_cot_phai có thể âm
 Tham chiếu kiểu R1C1: Thường được sử dụng để tham chiếu đến vùng thực hiện phép
tính/cơng thức. Cú pháp
Cong_thuc(R[so_hang_1]C[so_cot_1],R[so_hang_2]C[so_cot_2])
-

HỘP THOẠI HELP: Cơng cụ trợ giúp trong q trình thao tác và Lập trình
 Khi đang Code: Để xem các câu lệnh trong quá trình Code
o Chọn mục cần hỗ trợ
o Ấn phím F1 → Cửa sổ Microsoft Visual Basic Help
 Sử dụng với chủ đề cụ thể: Để xem các câu lệnh với một chủ đề đã biết trước
o Trên cửa sổ MVB, menu Help → MVB Help
o Gõ nội dung mà bạn muốn tìm vào ơ Search rồi Enter
 Trinh duyệt đối tượng (Object Browser): Để xem các đối tượng, phương pháp hay thuộc
tính khi bổ sung thêm các hàm số (functions) hay cầu lệnh (statements)
o Tại cửa sổ MVB đang mở, menu View → Object Browser
o Tại khung All Libraries, đổi thành Excel
o Trong vùng Classes → Chọn đối tượng
o Trong vùng Members of ‘***’: Các phương thức (biểu tượng xanh) và thuộc tính (biểu
tượng bàn tay chỉ) của đối tượng vừa chọn


2.3. CÁC NHÓM LỆNH
2.3.1. WITH – END WITH
Dùng để thực hiện nhiều thao tác với nhiều đối tượng đơn lẻ. Phương pháp này được dùng với
các đối tượng có nhiều thuộc tính. Cú pháp
With Phuong_thuc.Doi_tuong

.Thuoc_tinh_1 = gia_tri_1
.Thuoc_tinh_2 = gia_tri_2
.Thuoc_tinh_3 = gia_tri_3
….
End With
-

2.3.2. LỆNH ĐIỀU KIỆN
IF: Câu lệnh điều kiện đơn giản nhất. Cú pháp
If <dieu_kien> Then <cau_lenh_1> [Else <cau_lenh_2>]

-

Phần Else trong [] là phần tùy chọn, có thể khơng cần hoặc là dùng nhiều lần Else tùy theo mục
đích lập trình. Trường hợp dùng nhiều Else thì thay bằng ElseIf và kết thúc bằng End If
SELECT CASE: Tương tự ElseIf, cấu trúc Select Case cho phép thực hiện thiều câu lệnh khác
nhau. Mặt khác, không như If, Select Case cho phép dùng nhiều điều kiện để chọn lọc hơn. Cú
pháp
Select Case <bieu_thuc_kiem_tra>
[Case <bieu_thuc_1>
<cau_lenh_1>]
[Case <bieu_thuc_2>
<cau_lenh_2>]

[Case <bieu_thuc_n>
<cau_lenh_n>]
End Select

-


XÂY DỰNG ĐIỀU KIỆN: Trường hợp thuật toán cần giải quyết đồng thời nhiều điều kiện,
để kết hợp các điều kiện với nhau (Trong câu lệnh If) có thể sử dụng And hoặc Or
 And: Thỏa mãn đồng thời tất cả điều kiện nối với nhau bởi And

-

 Or: Thỏa mãn ít nhất 1 trong các điều kiện nối với nhau bởi Or
2.3.3. HỘP THOẠI
MESSAGE BOX: Hiển thị hộp thơng báo lên trên màn hình. Cú pháp
MsgBox(prompt [, buttons] [, title] [, helpfile, context])
 prompt: Nội dung lời nhắc của hộp thông báo
 buttons: Tùy chọn các nút lựa chọn (Yes/No, OK,…)
 title: Nội dung trên đầu hộp thông báo


 helpfile: File hỗ trợ
 context: Số thứ tự tình huống trong filehelp (chỉ tùy chỉnh nếu chọn filehelp)
Các thông điệp trong buttons
Giá trị
Mô tả
vbOKOnly
0
vbOKCancel
1
vbAbortRetryIgnore
2
vbYesNoCancel
3
vbYesNo
4

vbRetryCancel
5

Giá trị
Hiện nút OK
Hiện nút OK và Cancel
Hiện nút Abort, Retry và Ignore
Hiện nút Yes, No và Cancel
Hiện nút Yes và No
Hiện nút Retry và Cancel

Các loại buttons
Giá trị Mô tả
vbOK
1
vbCancel
2
vbAbort
3
vbRetry
4
vbIgnore
5
vbYes
6
vbNo
7

Giá trị
Chọn nút OK

Chọn nút Cancel
Chọn nút Abort
Chọn nút Retry
Chọn nút Ignore
Chọn nút Yes
Chọn nút No

Các biểu tượng thông điệp
Giá trị
VbCritical

Mô tả

Giá trị
Dùng cho những thông báo lỗi, thất bại

vbQuestion

Dùng cho những câu hỏi cần lựa chọn

vbExclamation

Dùng cho các thông báo


vbInformation

vbDefaultButton1
vbDefaultButton2
vbDefaultButton3

-

Dùng cho các thông báo cung cấp thông tin

Mặc định nút lệnh thứ nhất
Mặc định nút lệnh thứ hai
Mặc định nút lệnh thứ ba

0
256
512

INPUT BOX: Để người dùng nhập dữ liệu vào. Khi dùng phương thức này, một hộp thoại sẽ
hiện ra để bạn vào dữ liệu, chờ người dùng nhập thông tin hoặc bấm OK/Cancel, thông tin nhận
được sẽ được gán kiểu String. Cú pháp

expression.InputBox(prompt [, title] [, default], [, left], [, top] [helpfile, context] [, type])
 prompt: Nội dung lời nhắc của hộp
 title: Nội dung trên đầu hộp
 left: Khoảng cách từ cạnh trái hộp đến cạnh trái màn hình
 top: Khoảng cách từ cạnh trên hộp đến cạnh trên màn hình
 helpfile: File trợ giúp
 context: Số thứ tự tình huống trong filehelp (chỉ tùy chỉnh nếu chọn filehelp)
 type: Số biến đầu vào (nếu bỏ qua, giá trị nhập mặc định là String)
Bảng giá trị cho tham số type
Giá trị
0
1
2
4

8
16
64

Mô tả
Công thức
Số
Chuỗi (String)
Giá trị Logic (True/False)
Ô tham chiếu
Giá trị lỗi
Mảng các giá trị

2.3.4. LỆNH LẶP
Một cơng cụ đắc lực giúp tối ưu thuật tốn, rút ngắn thời gian xử lý cũng như là câu lệnh. Một
số kiểu vòng lặp trong VBA
- DO – LOOP: Thực hiện một khối lệnh với số lần lặp cố định. Trong đó, biểu thức điều kiện
phải trả về kết quả False (0) hoặc True (khác 0). Cú pháp
Do
<cau_lenh>
Loop


-

Cần một điều kiện If để tạo điểm thoát (Exit) ra khỏi vòng lặp
DO WHILE – LOOP: Thực hiện một khối lệnh khi thỏa mãn một điều kiện True (khác 0) và
tự lập điểm thoát ra (Exit) khi kết quả điều kiện là False (0). Cú pháp
Do While <dieu_kien>
<cau_lenh>

Loop

-

DO – LOOP WHILE: Tương tự DO WHILE – LOOP, những thay đổi vị trí kiểm tra điều kiện
(dẫn đến 1 số khác biệt về điểm thoát ra). Cú pháp
Do
<cau_lenh>
Loop While <dieu_kien>

-

DO UNTIL – LOOP: Cũng tương tự với While. Cú pháp
Do Until <dieu_kien>
<cau_lenh>
Loop

-

Tương tự với While, chúng ta cũng có DO – LOOP UNTIL
FOR – NEXT: Cho phép thực hiện vòng lặp với số vòng biết trước. Cú pháp
For <bien_dem> = <diem_dau> To <diem_cuoi> [Step <buoc_nhay>]
<cau_lenh>
Next [<bien_dem>]

-

Biến đếm, điểm đầu, điểm cuối và bước nhảy là các giá trị số. Bước nhảy có thể âm hoặc dương,
khi bị bỏ trống sẽ mặc định là 1
FOR EACH – NEXT: Hoạt động tương tự như FOR – NEXT nhưng thực hiện số lần lặp theo

số phần tử của mảng hay một tập hợp (đặc biệt là khi chưa biết số lượng phần tử). Cú pháp
For Each In <Mang/Tap_hop>
<cau_lenh>
Next

-

EXIT: Để tạo điểm thốt sớm khỏi vịng lặp, hàm, thuộc tính hiện tại hoặc cả chương trình,
bạn chỉ cần dùng hàm Exit phù hợp. Các cú pháp
Exit Do
Exit For
Exit Function
Exit Sub
Exit Propertiy


3. MỘT SỐ VÍ DỤ
3.1. VÍ DỤ 1 – LỌC DỮ LIỆU NHIỀU ĐIỀU KIỆN VỚI ADVANCED FILTER
Để tạo một bộ lọc nhiều điều kiện cho một bảng dữ liệu bất kì (có kích thước lớn) bằng lập trình
VBA, các bạn Code như sau
Sub loc_nang_cao()
Dim rg As Range
Dim criterial_rg As Range
Dim copy_rg As Range
‘Khai bao vung du lieu, dieu kien, vung tra ket qua
Set rg = Sheets(“Data”).Range(“B4”).CurrentRegion
Set criteria_rg = Sheets(“Data”).Range(“J4”).CurrentRegion
Set copy_rg = Sheets(“Data”).Range(“N4”)
‘Ap dung bo loc
rg.AdvancedFilter xFIlterCopy, criteria_rg, copy_rg

End Sub
3.2. VÍ DỤ 2 – IN BẢNG CỬU CHƯƠNG
Để lập bảng cửu chương bằng cơng cụ lập trình VBA, cần dùng đến cấu trúc vòng lặp For, đoạn
Code như sau
Sub bang_cuu_chuong()
Dim i, j As Integer
For i = 1 To 9 Step 1
For j = 1 To 9 Step 1
ThisWorkbook.Sheets(2).Cells(i,j) = I & “ x “ & j & “:=” & i * j
Next
Next
End Sub
3.3. VÍ DỤ 3 – IN ẤN NHANH HÀNG LOẠT
Giả sử có một bảng danh sách thí sinh với điểm thi THPT theo SBD, để in ấn hàng loạt bảng
điểm thi cho tất cả thí sinh bằng cơng cụ lập trình VBA, bạn cần làm như sau
Sub In_bang_diem()
Dim i As Integer
‘Quet theo cot SBD


i=2
While(ThisWorkbook.Sheets(1).Cells(i, 1) <> “”
ThisWorkbook.Sheets(2)cells(4,4) = ThisWorkbook.Sheets(1)Cells(i, 1)
ThisWorkbook.Sheets(2).Printout preview = False
i=i+1
Wend
End Sub
3.4. VÍ DỤ 4 – XĨA TỒN BỘ CÁC SHEET KHƠNG ACTIVE
Nếu Workbook của bạn có q nhiều Sheet mà bạn không biết Sheet nào đang hoạt động
(Active), và bạn khơng muốn xóa nhầm, để xóa tất cả các Sheet không Active một cách tự động, bạn

làm như sau
Sub xoa_sheet()
Dim ws As Worksheet
‘Tat canh bao
Application.DisplayAlerts = False
‘Tim cac Sheets khong Active
For Each ws In ThisWorkbook.Sheets
If ws.Name <> ThisWorkbook.ActiveSheet.Name Then
ws.Delete
End If
Next
‘Bat lai canh bao
Application.DisplayAlerts = True
End Sub
3.5. VÍ DỤ 5 – COPY CÁC FILE TỪ 1 FOLDER SANG 1 FOLDER KHÁC
Giả sử bạn có một thư mục chứa nhiều File muốn Copy sang một thư mục khác. Bạn có đường
dẫn từ thư mục gốc và thư mục đến trong 1 Sheet Excel và loại File mà bạn đang muốn Copy thì thực
hiện các bước sau
Sub copy_file()
Dim FSO As Object
Dim kieu_file As String
Dim duong_dan_thu_muc_nguon As String
Dim duong_dan_thu_muc_dich As String
‘Gan cac duong dan


duong_dan_thu_muc_dich = ThisWorkbook.Sheets(1)Cells(6, 3)
duong_dan_thu_muc_nguon = ThisWorkbook.Sheets(1)Cells(3, 3)
kieu_file = ThisWorkbook.Sheets(1)Cells(8, 3)
‘Khoi tao bien luu File

Set FSO = CreatObject(“scripting.FileSystemObject”)
‘Kiem tra xem File dich co ton tai khong
If FSO.FolderExists(duong_dan_thu_muc_dich) = False Then
MsgBox “Khong ton tai thu muc dich”
Exit Sub
End If
‘Kiem tra xem File nguon co ton tai khong
If FSO.FolderExists(duong_dan_thu_muc_nguon) = False Then
MsgBox “Khong ton tai thu muc nguon”
Exit Sub
End If
‘Copy File
FSO.copyFile Source:=duong_dan_thu_muc_nguon & kieu_file,
Destination:=duong_dan_thu_muc_dich
MsgBox “Da copy cac file” & duong_dan_thu_muc_nguon & “toi” &
duong_dan_thu_muc_dich
End Sub
3.6. VÍ DỤ 8 – COPY NHIỀU FILE EXCEL VÀO 1 FILE DUY NHẤT
Để copy nhiều File Excel thành các Sheet nằm trong 1 File duy nhất, các bạn thực hiện như sau
Sub coy_nhieu_file()
‘Tao duong dan
Path = “duong_dan_folder_can_copy\”
Filename = Dir (Path & “*.xlsx*”)
‘Copy cac File thanh 1
Do While Filename <> “”
Workbook.Open Filename:=Path & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy after:=ThisWorkbook.Sheets(1)



Next
Workbooks(Filename).close
Filename = Dir()
Loop
End Sub
3.7. VÍ DỤ 9 – HÀM NỐI CHUỖI VÀ TÍNH TỔNG CÁC SỐ
Nếu bạn muốn tạo ra một hàm mới trong Excel (cú pháp như VLOOKUP/FIND,…) thực hiện
nối chuỗi và tính tổng các số thì thực hiện các bước như sau
Để tạo hàm, bạn thay từ khóa Sub bằng Function
Hàm nối chuỗi
Function noi_chuoi(Pham_vi As Range, ky_tu_giua_cac_chuoi As String)
Dim moi_ki_tu As Range
‘Noi chuoi
For Each moi_ki_tu In Pham_vi
noi_chuoi = noi_chuoi & moi_ki_tu & ki_tu_giua_cac_chuoi
Next
noi_chuoi = left(noi_chuoi, len(noi_chuoi) – len(ki_tu_giua_cac_chuoi))
End Function
Hàm tính tổng các số
Function tinh_tong_cac_so(chuoi As String)
tinh_tong_cac_so = 0
Dim i As Integer
Dim tung_ki_tu As String
‘Tinh tong
For i = 1 To Len(chuoi)
tung_ki_tu = Mid(chuoi, i, 1)
‘Kiem tra tung ki tu
If tung_ki_tu >= “0” And tung_ki_tu <= “9” Then
tinh_tong_cac_so = tinh_tong_cac_so + tung_ki_tu
End If

Next
End Function


3.8. VÍ DỤ 10 – GỬI EMAIL HÀNG LOẠT QUA OUTLOOK
Để gửi Mail cho nhiều người có cùng Format, với địa chỉ Mail và tên/địa chỉ mail/nội dung
Mail và các file đính kèm nằm trong 1 Sheet Excel qua ứng dụng Outlook. Trước khi chạy chương
trình, hãy nhớ bật sẵn phần mềm Outlook lên nhé. Đoạn code thực hiện công việc như sau
Sub gui_Mail()
‘Khai bao thu vien Outlook
Dim olApp As Outlook.Application
Set olApp = CreateObject(“Outlook.Application”)
‘Dem so nguoi nhan Mail
Dim i, so_nguoi_nhan_Mail As Integer
so_nguoi_nhan_Mail =
excel.WorksheetFunction.CountA(ThisWorkbook.Sheets(1).Range(“B:B”))
‘Vong lap bat dau gui Mail
For i = 2 To so_nguoi_nhan_Mail
‘Khai bao thu vien gui Mail cua Outlook
Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)
‘Thay the noi dung Mail cho tung nguoi
Dim body_message As String
body_message = ThisWorkbook.Sheets(1).Cells(2, 7)
body_message =
excel.WorksheetFunction.Subtitle(excel.WorksheetFunction.Subtitle(body_message,
“Thay_ten_o_day”, ThisWorkbook.Sheets(1).cells(i, 3)),”ma_khuyen_mai”,
ThisWorkbook.Sheets(1).Cells(i, 4))
‘Gui Mail
olMail.To = ThisWorkbook.Sheets(1).Cells(i, 2)

olMail.Subject = “Chu_de_Mail”
olMail.BodyFormat = olFormatHTML
olMail.HTMLBody = body_message
olMail.Attachments.Add”ThisWorkbook.Path & “\File_dinh_kem\” &
ThisWorkbook.Sheets(1).Cells(i, 5)
olMail.Send
‘Ket thuc vong lap
Next
End Sub



×