- Tham gia
- 13/6/06
- Bài viết
- 7,199
- Được thích
- 24,656
ỨNG DỤNG CHỨC NĂNG AUTOMATION (TỰ ĐỘNG HOÁ) CỦA VBA TRONG VIỆC TRAO ĐỔI DỮ LIỆU GIỮA EXCEL VỚI AUTOCAD
Tóm tắt: Bài báo này trình bày khả năng tự động hoá trao đổi dữ liệu giữa Excel và AutoCad bởi chức năng Automation của ngôn ngữ lập trình VBA (Visual Basic for Applications) sẵn có trong chúng. Ứng dụng hiệu quả này không chỉ trong lĩnh vực Địa chất công trình (ĐCCT) mà còn hiệu quả đối với các bài toán kỹ thuật khác hay sử dụng Excel và AutoCad, rút ngắn đáng kể thời gian thực hiện và đảm bảo kết quả chính xác.
1. Đặt vấn đề
VBA là một ngôn ngữ lập trình hướng đối tượng có khả năng phát triển ứng dụng mạnh mẽ với nhiều tính năng phong phú. VBA được tích hợp trong môi trường Office và AutoCad với các chức năng gần tương tự nhau (hình 1, 2).
Hình 1: Cửa sổ VBA trong Excel
Hình 2: Cửa sổ VBA trong AutoCad
Hình 3: Giới thiệu công nghệ COM trong trang web của tập đoàn Microsoft
Chức năng Automation của VBA là một dạng công nghệ COM (Component Object Model) trong gia đình Microsoft Window, cho phép giao tiếp (hay truyền thông) giữa các phần mềm với nhau. COM là kiến trúc lập trình được phát triển bởi Microsoft, mục đích là tạo ra một công nghệ chuẩn cho phép xây dựng chương trình theo mô hình lắp ghép (component) hay sử dụng các sản phẩm đã được hoàn thiện từ trước theo tiêu chuẩn COM. Automation cho phép một ứng dụng có thể điều khiển các đối tượng trong ứng dụng khác, hoặc gọi các đối tượng mà có thể thực thi bằng những tập lệnh. Ví dụ như có thể điều khiển Excel từ Word hay AutoCad (và ngược lại) giống như thực hiện trực tiếp trên ứng dụng đó.
Tại sao tôi chỉ đề cập việc trao đổi dữ liệu giữa hai phần mềm Excel và AutoCad? Bởi vì Excel là phần mềm chuyên về bảng tính và biểu đồ với khả năng tính toán, xử lý dữ liệu tuyệt vời nhất hiện nay nhưng lại yếu về phần đồ hoạ. AutoCad lại là phần mềm vào hàng đầu lĩnh vực đồ hoạ nhưng lại yếu về khả năng tính toán, việc xử lý và quản lý dữ liệu bị hạn chế. Trong khi đó, cả hai phần mềm này đều được sử dụng rộng rãi trong các ngành kỹ thuật, đặc biệt là trong ngành địa chất, trắc địa, mỏ, xây dựng, giao thông, kiến trúc, chế tạo máy,... Việc tạo mối liên kết giữa hai phần mềm trên sẽ khắc phục những mặt hạn chế của chúng, nâng cao khả năng khai thác các phần mềm đó trong chuyên môn. Bản thân hai phần mềm trên đều được tích hợp ngôn ngữ lập trình ứng dụng VBA, một dạng ngôn ngữ lập trình Visual Basic (VB) dễ học, rất phổ biến và đang được giảng dạy trong môn Tin học đại cương của trường Đại học Mỏ Địa chất.
Thông thường, bài toán trong lĩnh vực kỹ thuật được giải quyết theo 3 bước như hình 5.
Như trong hình 5, các bước (1), (2) thực hiện trong Excel, còn bước (3) sẽ thực hiện trong AutoCad. Bài toán vẽ hình trụ hố khoan, mặt cắt ĐCCT hay bài toán thiết kế khoan nổ mìn (lĩnh vực khai thác mỏ), vẽ bình đồ trắc dọc (lĩnh vực đo đạc),... có thể sử dụng mô hình trên. Nếu chỉ sử dụng các công cụ sẵn có hoặc lập trình VBA (riêng từng ứng dụng) thì việc tự động hoá chỉ có thể đạt được một phần, còn từ bước (2) sang bước (3) không thực hiện được. Đặc biệt là những bài toán có số lượng dữ liệu lớn sẽ gây vất vả và tốn thời gian để thực hiện công việc trên, trong khi đó sẽ rất đơn giản khi dùng chức năng Automation. Còn nếu chỉ sử dụng VBA AutoCad, VB6, VB.NET, C,... điều khiển AutoCad để thực hiện sẽ phức tạp vì phải xây dựng toàn bộ chương trình tính theo ngôn ngữ lập trình đó, điều này hoàn toàn không dễ thực hiện.
2. Kết quả nghiên cứu
Trong khuôn khổ bài báo, tôi lấy ví dụ về nội dung chính của chương trình lập hình trụ hố khoan. Để thực hiện được chương trình này, cần phải hiểu được các đối tượng cùng với thuộc tính, phương thức của chúng trong Excel và AutoCad. Công việc xây dựng chương trình được thực hiện đồng thời trong VBA Excel và VBA AutoCad để có sự so sánh trong từng ứng dụng. Các bước xây dựng chương trình như sau:
Tóm tắt: Bài báo này trình bày khả năng tự động hoá trao đổi dữ liệu giữa Excel và AutoCad bởi chức năng Automation của ngôn ngữ lập trình VBA (Visual Basic for Applications) sẵn có trong chúng. Ứng dụng hiệu quả này không chỉ trong lĩnh vực Địa chất công trình (ĐCCT) mà còn hiệu quả đối với các bài toán kỹ thuật khác hay sử dụng Excel và AutoCad, rút ngắn đáng kể thời gian thực hiện và đảm bảo kết quả chính xác.
1. Đặt vấn đề
VBA là một ngôn ngữ lập trình hướng đối tượng có khả năng phát triển ứng dụng mạnh mẽ với nhiều tính năng phong phú. VBA được tích hợp trong môi trường Office và AutoCad với các chức năng gần tương tự nhau (hình 1, 2).

Hình 1: Cửa sổ VBA trong Excel

Hình 2: Cửa sổ VBA trong AutoCad

Hình 3: Giới thiệu công nghệ COM trong trang web của tập đoàn Microsoft
Chức năng Automation của VBA là một dạng công nghệ COM (Component Object Model) trong gia đình Microsoft Window, cho phép giao tiếp (hay truyền thông) giữa các phần mềm với nhau. COM là kiến trúc lập trình được phát triển bởi Microsoft, mục đích là tạo ra một công nghệ chuẩn cho phép xây dựng chương trình theo mô hình lắp ghép (component) hay sử dụng các sản phẩm đã được hoàn thiện từ trước theo tiêu chuẩn COM. Automation cho phép một ứng dụng có thể điều khiển các đối tượng trong ứng dụng khác, hoặc gọi các đối tượng mà có thể thực thi bằng những tập lệnh. Ví dụ như có thể điều khiển Excel từ Word hay AutoCad (và ngược lại) giống như thực hiện trực tiếp trên ứng dụng đó.

Tại sao tôi chỉ đề cập việc trao đổi dữ liệu giữa hai phần mềm Excel và AutoCad? Bởi vì Excel là phần mềm chuyên về bảng tính và biểu đồ với khả năng tính toán, xử lý dữ liệu tuyệt vời nhất hiện nay nhưng lại yếu về phần đồ hoạ. AutoCad lại là phần mềm vào hàng đầu lĩnh vực đồ hoạ nhưng lại yếu về khả năng tính toán, việc xử lý và quản lý dữ liệu bị hạn chế. Trong khi đó, cả hai phần mềm này đều được sử dụng rộng rãi trong các ngành kỹ thuật, đặc biệt là trong ngành địa chất, trắc địa, mỏ, xây dựng, giao thông, kiến trúc, chế tạo máy,... Việc tạo mối liên kết giữa hai phần mềm trên sẽ khắc phục những mặt hạn chế của chúng, nâng cao khả năng khai thác các phần mềm đó trong chuyên môn. Bản thân hai phần mềm trên đều được tích hợp ngôn ngữ lập trình ứng dụng VBA, một dạng ngôn ngữ lập trình Visual Basic (VB) dễ học, rất phổ biến và đang được giảng dạy trong môn Tin học đại cương của trường Đại học Mỏ Địa chất.
Thông thường, bài toán trong lĩnh vực kỹ thuật được giải quyết theo 3 bước như hình 5.
Như trong hình 5, các bước (1), (2) thực hiện trong Excel, còn bước (3) sẽ thực hiện trong AutoCad. Bài toán vẽ hình trụ hố khoan, mặt cắt ĐCCT hay bài toán thiết kế khoan nổ mìn (lĩnh vực khai thác mỏ), vẽ bình đồ trắc dọc (lĩnh vực đo đạc),... có thể sử dụng mô hình trên. Nếu chỉ sử dụng các công cụ sẵn có hoặc lập trình VBA (riêng từng ứng dụng) thì việc tự động hoá chỉ có thể đạt được một phần, còn từ bước (2) sang bước (3) không thực hiện được. Đặc biệt là những bài toán có số lượng dữ liệu lớn sẽ gây vất vả và tốn thời gian để thực hiện công việc trên, trong khi đó sẽ rất đơn giản khi dùng chức năng Automation. Còn nếu chỉ sử dụng VBA AutoCad, VB6, VB.NET, C,... điều khiển AutoCad để thực hiện sẽ phức tạp vì phải xây dựng toàn bộ chương trình tính theo ngôn ngữ lập trình đó, điều này hoàn toàn không dễ thực hiện.
2. Kết quả nghiên cứu
Trong khuôn khổ bài báo, tôi lấy ví dụ về nội dung chính của chương trình lập hình trụ hố khoan. Để thực hiện được chương trình này, cần phải hiểu được các đối tượng cùng với thuộc tính, phương thức của chúng trong Excel và AutoCad. Công việc xây dựng chương trình được thực hiện đồng thời trong VBA Excel và VBA AutoCad để có sự so sánh trong từng ứng dụng. Các bước xây dựng chương trình như sau:
Lần chỉnh sửa cuối: