Mình xin nói thêm về Macro và VBA như thế này:
Macro là gì?
Macro là lệnh thực thi một kịch bản công việc nào đó. Tạo macro chính là việc ghi lại một tập các thao tác xử lý của người dùng (Record Macro) sau đó lưu lại thành một bộ lệnh và đặt trong một "MacroName". Ngôn ngữ ghi lại (thể hiện công việc trong macro) trong MS Office là VB (không phải VB.NET). Khi cần thực thi công việc giống như việc đã làm thì chỉ cần chạy MacroName (bấm phím ALT+F8) đó để thực hiện lại một kịch bản.
VBA là gì ?
VBA - Visual Basic for Application là một ngôn ngữ lập trình, ngôn ngữ của nó là Visual Basic nhưng nó được tích hợp vào trong ứng dụng (Application) và sử dụng các đối tượng trong ứng dụng đó, những ứng dụng này phải được thiết kế kiểu Automation Server, như tôi biết hiện nay thì có các chương trình trong bộ MS Office, OpenOffice, AutoCAD. Sự kế hợp giữa Visual Basic với Application (ứng dụng) cho ra một cái tên VBA.
VBA làm gì ? VBA cho phép người ta viết các mã lệnh có tác động tới nhiều đối tượng để làm tăng tính tự động hoá trong ứng dụng của mình, làm những việc mà các công cụ sẵn có trong ứng dụng chưa có, như tôi có thể viết thêm một hàm tính thuế TN, viết một chương trình tính lãi ngân hàng, kế toán, trong MS Office và OpenOffice thì dùng để tạo Macro,...
Trong lập trình, các đối tượng được viết trong ứng dụng kiểu Automation Server người ta gọi là COM - Component Object Model, như vậy từ bất kỳ một ứng dụng hay môi trương lập trình nào người ta có thể can thiệp vào các đối tượng này, dù nó đâng chạy. Ví dụ tôi có thể viết lệnh kiểm soát toàn bộ quá trình Excel đang làm việc. Để làm việc với các đối tượng COM người ta phải dùng kỹ thuật tạo và kết nối COM objects, trong VB6 trở về trước được hỗ trợ tốt điều này nên rất dễ dùng (đơn giản là việc viết Class), trong Delphi,.NET: VB.NET, C#.NET thì người ta phải tạo các lớp Interface,....