TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 1 - 3. CHƯƠNG III Microsoft Excel và lập trình trên Microsoft Excel 3.1. Microsoft Excel Microsoft Excel là một phần mềm chuyên xử lý bảng tính của hãng phần mềm nổi tiếng Microsoft. Excel thực sự là một công cụ rất mạnh mẽ phục vụ công tác tính toán, lập bảng biểu… Giao diện của chương trình Excel như sau: Với các bài toán từ đơn giản đến phức tạp, ta đều có thể sử dụng Excel để giải quyết một cách dễ dàng với rất nhiều tính năng sẵn có: § Khả năng tổ chức dữ liệu mạnh mẽ với hệ thống các ô, vùng dữ liệu, các bảng tính…; § Khả năng xử lý dữ liệu như truy vấn, lọc, tính toán… với hệ thống rất phong phú các hàm cơ bản cũng như các hàm chức năng chuyên biệt; § Khả năng lập báo cáo với cách tổ chức bảng biểu và hệ thống biểu đồ tương đối hoàn chỉnh; § Khả năng in ấn với nhiều lựa chọn khác nhau. Với cách tổ chức giống như bảng tính thông thường, Excel là một phần mềm bảng tính trực quan và rất dễ sử dụng. Tuy nhiên, những chức năng phong phú đó cũng không thể nào đáp ứng được nhu cầu hết sức đa dạng của thực tiễn. Và bằng cách kết hợp các tính năng sẵn có của Excel, cộng với một ít kiến thức về lập trình, ta có thể giải quyết được những bài toán đó một cách dễ dàng. TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 2 - Để lập trình trên Excel, ta có thể thực hiện theo nhiều cách khác nhau: § Thông qua bộ công cụ lập trình Visual Studio Tools for Office (VSTO): theo cách này, người sử dụng có thể lập trình tạo ra các ứng dụng dạng add-in (ứng dụng bổ sung trong Excel) bằng các ngôn ngữ được hỗ trợ trong bộ phần mềm Microsoft Visual Studio. § Thông qua môi trường lập trình VBA được tích hợp sẵn trong Microsfot Excel: người sử dụng có thể lập trình mở rộng Excel một cách dễ dàng với ngôn ngữ lập trình VB. 3.2. Lập trình trên Excel bằng VBA 3.2.1. Cách tạo và sử dụng Macro Macro là tập hợp các lệnh và hàm được lưu trữ trong một môđun của VBA nhằm thực hiện một nhiệm vụ nào đó. Mỗi khi người dùng thực thi Macro thì nhiệm vụ được cài đặt trong Macro đó sẽ được thực hiện. Điều này hết sức hữu ích khi cần thực hiện những thao tác lặp đi, lặp lại nhiều lần hoặc khi người dùng muốn tạo ra một số tính năng mới cho ứng dụng nền. 3.2.1.1. Tạo Macro Để tạo Macro, ta có thể thực hiện theo hai cách chính sau: § Tạo Macro kịch bản, § Tạo Macro sử dụng VBA. Tạo Macro kịch bản là cách đơn giản nhất để tạo Macro. Theo cách này, Excel lưu lại tất cả các lệnh trong mỗi bước khi người dùng thực hiện một nhiệm vụ nào đó. Khi người dùng thực thi Macro kịch bản, tất cả các lệnh đã thực hiện sẽ được thực hiện lại đúng theo trình tự như trong quá trình tạo Macro kịch bản. Để tạo Macro kịch bản, ta làm theo các bước sau: 1 Trong trình đơn Tools, chọn MacroðRecord New Macro… 2 Trong mục Macro name, nhập tên của Macro CHÚ Ý Tên Macro phải được bắt đầu bằng chữ cái thông thường, các ký tự còn lại có thể là kiểu chữ hoặc kiểu chữ số hoặc dấu gạch dưới. Không được sử dụng dấu cách để đặt tên Macro, muốn phân cách từ, ta có thể dùng dấu gạch dưới để thay cho dấu cách (xem hình). Không được đặt tên Macro trùng với tên của vùng đã được định nghĩa trong Workbook hiện hành TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 3 - 3 Nếu muốn thực thi Macro bằng cách nhấn phím tắt, nhập một chữ cái thông thường vào ô Shortcut Key. Sau đó, để thực thi Macro, ta chỉ cần nhấn tổ hợp phím CTRL+Chữ cái (với chữ viết thường) hoặc CTRL+SHIFT+Chữ cái (với chữ viết hoa). Chữ cái đặt làm phím tắt không được phép là số hay các ký tự đặc biệt như @ hoặc #. Phím tắt này sẽ làm vô hiệu hoá các phím tắt giống như vậy đã được đặt trước trong Excel mỗi khi mở Workbook có chứa Macro. 4 Trong mục Store Macro In, chọn nơi sẽ lưu trữ Macro. Nếu muốn Macro có hiệu lực mỗi khi sử dụng Excel, ta chọn vào mục Personal Macro Workbook. 5 Nếu cần mô tả thêm về Macro này, ta sẽ nhập thêm các thông tin vào mục Description. 6 Chọn OK. 7 Trong quá trình tạo Macro kịch bản, nếu muốn lưu địa chỉ ô tương đối so với ô hiện hành, ta làm như sau: trên thanh công cụ Stop Recording , chọn vào biểu tượng Relative Reference . Kể từ thời điểm ấy, địa chỉ ô sẽ được lưu tương đối so với ô hiện hành cho đến khi thoát khỏi Excel hoặc chọn một lần nữa vào biểu tượng Relative Reference . 8 Thực hiện các thao tác mà sau này sẽ được lặp lại khi Macro kịch bản thực thi (đây là phần nội dung chính của Macro kịch bản). 9 Trên thanh công cụ Stop Recording, nhấn chuột vào biểu tượng Stop Recording để hoàn thành việc tạo Macro kịch bản. Lúc này Macro đã sẵn sàng để sử dụng. 3.2.1.2. Sử dụng Macro Để sử dụng Macro đã được tạo trước, ta có thể thực thi theo nhiều cách khác nhau: § Thực thi Macro theo cách thông thường; § Thực thi bằng cách dùng phím tắt đã gán cho Macro; § Thực thi bằng cách nhấn chuột vào một nút lệnh hay một điều khiển đồ hoạ; § Thực thi bằng cách nhấn chuột vào một đối tượng đồ hoạ; § Thực thi thông qua nút lệnh trên thanh công cụ. Chi tiết về các cách thực thi Macro xin tìm hiểu thêm trong tài liệu “Microsoft Office Excel Help” được cài đặt sẵn cùng Excel. Ở đây chỉ trình bày cách thực thi Macro theo cách thông thường. Để thực thi Macro theo cách thông thường, ta thực hiện theo các bước sau: 1 Mở Workbook có chứa Macro; 2 Trên trình đơn Tools chọn MacroðMacros… để hiển thị hộp thoại Macro TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 4 - 3 Trong mục Macro name, nhập vào tên Macro đã tạo từ trước hoặc chọn từ danh sách sổ xuống; 4 Nhấn chuột vào nút Run để bắt đầu thực thi Macro. Ấn phím ESC để kết thúc quá trình thực thi Macro. CHÚ Ý Do Macro có chứa mã lệnh thực thi có khả năng chứa các đoạn mã nguy hiểm làm ảnh hưởng đến hệ thống, nên mặc định Excel luôn đặt chế độ an ninh ở mức cao nhất, và do đó sẽ làm vô hiệu hoá Macro có chứa trong Workbook của Excel. Vì vậy, để thực thi Macro chứa trong Workbook, người sử dụng phải thiết lập lại chế độ an ninh cho Excel ở mức Trung bình (Medium) hoặc Thấp (Low). Người sử dụng nên đặt mức Trung bình để đảm bảo tính an toàn cho hệ thống. Để thiết lập chế độ an ninh cho Excel, trong trình đơn Tools, chọn MacroðSecurity…; trong thẻ Security Level, chọn mức an ninh phù hợp và nhấn OK. 3.2.2. Tạo Macro với VBA Macro kịch bản là hình thức Macro đơn giản nhất. Thực chất, Macro kịch bản chính là Macro được viết bằng VBA, tuy nhiên tất cả các dòng mã lệnh đều được tự động phát sinh tương ứng với từng thao tác mà người dùng thực hiện khi tiến hành ghi lại Macro. Điều này tạo nên tính dễ sử dụng cho người dùng, chỉ cần nắm một ít kiến thức về Macro, người sử dụng có thể tạo dựng ngay một Macro đáp ứng nhu cầu của bản thân. Tuy nhiên, để tạo ra Macro có khả năng tuỳ biến và nhiều tính năng nâng cao hơn, người dùng cần phải có kiến thức về lập trình và tận dụng môi trường phát triển ứng dụng tích hợp sẵn trong Microsoft Excel, đó chính là VBA IDE. Mỗi Macro tương ứng là một chương trình con trong VBA. Để tạo mới một Macro sử dụng VBA, cần thực hiện những bước sau: 1 Trong trình đơn Tools, chọn mục MacroðVisual Basic Editor để khởi động VBA IDE; TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 5 - 2 Trong trình đơn Insert, chọn mục Module để tạo một mô-đun mới, là nơi sẽ chứa Macro; 3 Trong trình đơn Insert, chọn mục Procedure… để hiển thị hộp thoại Add Procedure; 4 Trong hộp thoại Add Procedure, điền tên chương trình vào mục Name, chọn kiểu chương trình con là Sub và phạm vi là Public TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 6 - 5 Viết mã lệnh cho Macro trong cửa sổ mã lệnh của VBA IDE bằng ngôn ngữ Visual Basic; 6 Để thực thi Macro ngay từ trong cửa sổ mã lệnh, ấn phím F5; 7 Sau khi đã hoàn thành quá trình viết mã lệnh cho Macro, chọn mục Close and Return to Microsoft Excel trong trình đơn File để trở về màn hình chính của Excel. CHÚ Ý Do Macro là một chương trình con dạng thủ tục, nên để Macro có thể được hiển thị và thực thi thông qua trình đơn ToolsðMacroðMacros… thì khi tạo Macro ở bước 4, trong hộp thoại Add Procedure, người dùng phải chọn kiểu chương trình con là Sub và phạm vi là Public. 3.2.3. Tạo hàm mới trong Excel bằng VBA 3.2.3.1. Khái niệm về hàm trong Excel Hàm là những công thức đã được định nghĩa sẵn trong Excel thực hiện tính toán dựa trên các số liệu đầu vào, gọi là tham số, theo một trình tự đã được lập trình sẵn nhằm thực hiện các phép tính từ đơn giản đến phức tạp. Để hiểu rõ hơn về cấu trúc của một hàm, ta tìm hiểu về hàm ROUND có sẵn trong Excel, là hàm dùng để làm tròn số: TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 7 - 1 Cấu trúc. Một hàm bắt đầu bằng dấu bằng “=”, tiếp sau là tên hàm, dấu ngoặc đơn “(“, danh sách các tham số cách nhau bằng dấu phẩy “,” và cuối cùng là dấu ngoặc đơn “)”. 2 Tên hàm. Ấn phím SHIFT+F3 để hiển thị danh sách tất cả các hàm trong Excel. 3 Các tham số. Tham số có thể là số, chữ, giá trị logic như TRUE hoặc FALSE , mảng, giá trị lỗi như #NA , hoặc tham chiếu đến một ô khác. Tham số truyền vào phải có kiểu thích hợp với kiểu của từng tham số của hàm. Tham số truyền vào có thể là một hằng số, công thức, hoặc là một hàm bất kỳ. 4 Chú thích hàm. Chú thích hàm dùng để thể hiện cấu trúc và danh sách các tham số của hàm, hiện lên khi ta nhập vào tên hàm. Chú thích hàm chỉ xuất hiện đối với những hàm được xây dựng sẵn trong Excel. Có rất nhiều hàm đã được xây dựng sẵn trong Excel và được nhóm theo từng lĩnh vực như: toán học, thống kê, xử lý chuỗi, xử lý dữ liệu thời gian… Tuy nhiên trong nhiều trường hợp, các hàm có sẵn này không đáp ứng được các yêu cầu của bài toán cụ thể, vì thế việc xây dựng hàm mới, nhằm đáp ứng được yêu cầu tính toán là việc rất cần thiết. TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 8 - 3.2.3.2. Tạo hàm mới bằng VBA Xây dựng hàm mới trong Excel là hoàn thoàn có thể và được Excel hỗ trợ tối đa như cho phép sử dụng toàn bộ các hàm đã có từ trước, cho phép tận dụng toàn bộ giao diện của Excel. Công cụ để tạo hàm mới trong Excel là VBA và người dùng phải tuân theo một trình tự nhất định. Để làm rõ hơn vấn đề này, ta sẽ tìm hiểu thông qua ví dụ đơn giản dưới đây, đó là xây dựng một hàm mới tên là Dien_Tich , có nhiệm vụ tính diện tích của một hình chữ nhật. Phân tích nhiệm vụ trên, ta nhận thấy: cần phải tạo được một hàm mới, sao cho khi sử dụng trong Excel không có sự khác biệt so với các hàm có sẵn, nghĩa là sẽ nhập vào công thức có dạng =Dien_Tich(Tham_số, Tham_số) , trong đó Tham_số là chiều dài và chiều rộng của hình chữ nhật, có thể là một số, công thức khác hoặc một tham chiếu đến một ô khác trong bảng tính. Kiểu dữ liệu của Tham_số là kiểu số thực, và giá trị trả về của hàm cũng phải có kiểu dữ liệu là số thực nhằm đảm bảo tính tổng quát của hàm. Để tạo một hàm mới, ta thực hiện theo các bước sau: 1 Khởi động VBA IDE. Trong trình đơn Tools, chọn mục MacroðVisual Basic Editor; 2 Trong trình đơn Insert, chọn mục Module để tạo một mô-đun mới, nơi sẽ chứa hàm do người dùng định nghĩa. 3 Trong trình đơn Insert, chọn mục Procedure… để hiển thị hộp thoại Add Procedure. Sau đó điền tên hàm vào mục Name, chọn kiểu chương trình con là Function và phạm vi là Public. Cuối cùng chọn OK; 4 Chương trình sẽ tự động phát sinh đoạn mã lệnh như sau: Public Function Dien_Tich() End Function Thay đoạn mã lệnh trên bằng đoạn mã lệnh sau: Public Function Dien_Tich(Rong As Double, Cao As Double) As Double Dien_Tich = Rong*Cao End Function TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 9 - 5 Trong trình đơn File, chọn mục Close and Return to Microsoft Excel để quay trở về màn hình chính của Excel; 6 Lúc này, hàm mà ta vừa xây dựng, có tên là Dien_Tich , đã có thể được sử dụng bình thường như các hàm khác của Excel. CHÚ Ý: Các bước tạo hàm mới cũng tương tự như các bước tạo Macro ở phần trước. Tuy nhiên, do hàm cần phải có giá trị trả về nên khi khai báo kiểu chương trình con cho hàm, người dùng cần phải chọn là Function (khác với khi tạo Macro, phải chọn là Sub). Tất cả các hàm do người dùng định nghĩa thực hiện theo các bước như trên chỉ có phạm vi hiệu lực trong tài liệu (workbook) có chứa hàm đó mà thôi. Do vậy, khi có nhu cầu tạo lập các hàm mới để sử dụng cho tất cả các tài liệu trong Excel thì người dùng phải tạo hàm trong một tệp tài liệu đặc biệt có tên là Personal.xls. Tất cả các hàm hoặc Macro khi được tạo và lưu trong tệp Personal.xls đều có thể được sử dụng lại trong tất cả các phiên làm việc tiếp sau của Microsoft Excel. Cách thức tạo Macro và hàm mới trong tệp Personal.xls hoàn toàn tương tự như cách thức tạo Macro và hàm mới như đã được trình bày. Điều quan trọng là mặc định tệp Personal.xls luôn có thuộc tính ẩn, nên người dùng sẽ không thể nhìn thấy được tệp tài liệu này. Để hiển thị được tệp tài liệu ẩn này, người dùng có thể thực hiện theo nhiều cách khác nhau. Trong khuôn khổ của tài liệu này, xin được giới thiệu phương thức sau: 1 Trong trình đơn Tools của Microsoft Excel, chọn mục MacroðRecord New Macro… 2 Trong hộp thoại Record Macro, ta nhập tên Macro bất kỳ, trong mục Store macro in bắt buộc phải chọn là Personal Macro Workbook, sau đó chọn OK. Nhấn ngay chuột vào nút Stop Recording để kết thúc. TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 10 - 3 Ấn phím ALT+F11 để khởi động VBA IDE. Trong cửa số Project Explorer đã xuất hiện thêm một dự án có tên là Personal.xls. Nhấn đúp chuột vào nhánh Module1, khi đó trong cửa sổ mã lệnh sẽ xuất hiện dòng mã lệnh như sau: 4 Xoá toàn bộ đoạn mã lệnh trên. Sau đó tiến hành tạo Macro hoặc hàm mới trong Module1 của tệp Personal.xls. 5 Trong trình đơn File của VBA IDE, chọn mục Save PERSONAL.XLS để lưu những thay đổi vào tệp Personal.xls. 6 Với những lần tạo hàm sau, người dùng chỉ cần khởi động VBA IDE sẽ thấy tệp Personal.xls đã được hiển thị sẵn, không cần phải thực hiện lại các bước từ bước 2 đến bước 3. CHÚ Ý: Mặc định, tệp Personal.xls được lưu trong thư mục sau: “C:\Documents and Settings\<Tên người dùng>\Application Data\Microsoft\Excel\XLSTART “ 3.2.4. Hệ thống các đối tượng trong Excel 3.2.4.1. Mô hình đối tượng của Microsoft Excel Để tạo cái nhìn tổng quan cho người lập trình, Microsoft cung cấp cho người lập trình mô hình đối tượng được sử dụng trong Microsoft Excel. Mô hình đối tượng đầy đủ được trình bày trong tài liệu hướng dẫn của Excel. Ở đây xin được giới thiệu lại mô hình đối tượngvới một số đối tượng thường được sử dụng trong lập trình mở rộng Excel. Sub Ten_Macro_bat_ky() ' ' Ten_Macro_bat_ky Macro 'Macro recorded 1/8/2007 by TTH ' End Sub . - 1 - 3. CHƯƠNG III Microsoft Excel và lập trình trên Microsoft Excel 3 .1. Microsoft Excel Microsoft Excel là một phần mềm chuyên xử lý bảng tính của hãng phần mềm nổi tiếng Microsoft. Excel. sau: “C:Documents and Settings<Tên người dùng>Application Data Microsoft Excel XLSTART “ 3.2.4. Hệ thống các đối tượng trong Excel 3.2.4 .1. Mô hình đối tượng của Microsoft Excel Để. vi là Public. 3.2.3. Tạo hàm mới trong Excel bằng VBA 3.2.3 .1. Khái niệm về hàm trong Excel Hàm là những công thức đã được định nghĩa sẵn trong Excel thực hiện tính toán dựa trên các số