Việc trao đổi thông tin với các ứng dụng được hỗ trợ ActiveX liên quan đến việc tham chiếu tới các mô hình đối tượng ActiveX của ứng dụng khác và viết mã lệnh cần thiết để sử dụng các [r]
(1)Phát triển ứng dụng ActiveX VBA || 228877
T
TƯƯƠƠNNGG TTÁÁCC VVỚỚII ỨỨNNGG DDỤỤNNGG K
KHHÁÁCC,, CCƠƠ SSỞỞ DDỮỮ LLIIỆỆUU VVÀÀ W
WIINNDDOOWWSS AAPPII11
12
Trong chương này
Tương tác với ứng dụng Visual LISP
Tương tác với ứng dụng trên Windows
Sử dụng Data Access Objects (DAO) để truy cập thông tin sở dữ liệu
Truy cập hàm Windows API từ VBA
Công nghệ ActiveX tạo khả trao đổi thông tin cách dễ dàng với ứng dụng khác AutoCAD ứng dụng hỗ trợ ActiveX khác Microsoft Excel hay Microsoft Word Nội dung đề cập chương tìm hiểu thủ tục thực tương tác với ứng dụng khác
(2)1 Tương tác với ứng dụng Visual LISP
Ứng dụng Visual LISP truy cập tới tất phạm vi đối tượng ActiveX Chúng gọi phương thức ActiveX, gán lấy thuộc tính đối tượng ActiveX Ngồi ứng dụng Visual LISP gọi Macro VBA qua lệnh VBARUN
ActiveX ứng dụng VBA thực ứng dụng Visual LISP thông qua phương thức SendCommand để gửi câu lệnh đến dịng lệnh AutoCAD Để tìm hiểu thêm truy cập đối tượng ActiveX thông qua Visual LISP, tham khảo “Visual LISP Developer’s Guide”
2 Tương tác với ứng dụng Windows
Công nghệ ActiveX AutoCAD cho phép trao đổi thông tin cách dễ dàng với ứng dụng hỗ trợ ActiveX Microsoft Excel Microsoft Word Khả cho phép tập hợp, lưu trữ biểu diễn thông tin AutoCAD theo định dạng khác ngồi dạng vẽ Ngồi ra, đọc thông tin từ ứng dụng khác vào AutoCAD để trực tiếp tạo tác động lên đối tượng AutoCAD Một ví dụ sử dụng cơng nghệ tạo hoá đơn vật liệu tính Excel từ đối tượng vẽ AutoCAD
Các chương trước hướng dẫn viết mã lệnh sử dụng mơ hình đối tượng ActiveX AutoCAD Việc trao đổi thông tin với ứng dụng hỗ trợ ActiveX liên quan đến việc tham chiếu tới mơ hình đối tượng ActiveX ứng dụng khác viết mã lệnh cần thiết để sử dụng đối tượng chúng
CHÚ Ý Chương giới thiệu cách vắn tắt khả lập trình ứng dụng chéo Những tài liệu vấn đề hướng tập trung AutoCAD chúng
đề cập tài liệu Microsoft hướng dẫn lập trình độc lập Chúng đề cập sâu tài liệu “VBA Foundations for AutoCAD” “VBA Solutions for AutoCAD” hãng Autodesk
Ba bước để thực trao đơi thơng tin mơ hình đối tượng ActiveX:
1 Tham chiếu đến mô hình đối tượng ActiveX ứng dụng khác Cần biết tên mối quan hệ đối tượng mơ hình đối tượng khác
2 Tạo đại diện ứng dụng khác
Bước tạo đối tượng hợp lệ đại diện cho đối tượng mơ hình đối tượng khác
(3)Phát triển AutoCAD ActiveX VBA || 228899
2.1 Tham chiếu thư viện đối tượng ActiveX của ứng dụng khác
Để lập trình truy cập tới ứng dụng khác cần cho VBA cách tạo đối tượng sử dụng ứng dụng Việc thiết lập cách tạo tham chiếu tới thư viện đối tượng Đó tệp máy tính nơi định nghĩa tất đối tượng, phương thức, thuộc tính, số kiện ứng dụng
Tạo tham chiếu tới thư viện đối tượng VBA IDE, chọn menu ToolsReferences:
Hộp thoại xuất chứa danh sách liệt kê thư viện đối tượng mà VBA tìm thấy hệ thống Đánh dấu vào thư viện cần sử dụng danh sách, thư viện lựa chọn sẵn sàng cho việc tham chiếu dự án hành Ví dụ, để tham chiếu thư viện đối tượng Microsoft Excel, chọn thư viện đối tượng Microsoft Excel danh sách hình minh hoạ
Khi tạo tham chiếu đến thư viện đối tượng ứng dụng khác sử dụng Object Browser VBA để xem danh sách đối tượng ứng dụng
(4)2.2 Tạo đại diện1 của ứng dụng
Khi muốn tham chiếu đến thư viện đối tượng ứng dụng, ta phải tạo đại diện ứng dụng Đây việc thơng báo ta bắt đầu làm việc với ứng dụng biến đối tượng cụ thể
Để thực điều này, trước hết cần khai báo biến đại diện cho ứng dụng cách sử dụng lệnh Dim rõ ứng dụng khai báo Ví dụ sau khai báo biến đối tượng kiểu Excel.Application:
Dim ExcelAppObj as Excel.Application
Sau khai báo biến, sử dụng lệnh Set từ khoá New để gán biến đại diện thực thi ứng dụng Ví dụ sau, câu lệnh Set gán biến khai báo cho ứng dụng Excel, từ khoá New khởi động phiên làm việc Excel
Set ExcelAppObj = New Excel.Application
CHÚ Ý Một vài ứng dụng cho phép có đại diện thực thi thời
điểm Sử dụng từ khoá New ứng dụng thiết lập tham chiếu tới đại diện khơng khởi động thêm đại diện
2.3 Lập trình với đối tượng của ứng dụng khác
Sau tạo tham chiếu đến thư viện đối tượng tạo đại diện ứng dụng ta tạo thao tác với đối tượng ứng dụng Tất đối tượng, phương thức thuộc tính định nghĩa mơ hình đối tượng sẵn sàng sử dụng Ví dụ, dùng biến khai báo từ phần trước, dòng mã lệnh hiển thị chương trình Excel:
ExcelAppObj.Visible = TRUE
Để lập trình xây dựng ứng dụng ta cần thơng thạo mơ hình đối tượng ứng dụng, ngồi ta sử dụng Object Browser VBA tài liệu trợ giúp ứng dụng để tìm hiểu mơ hình đối tượng cần tham chiếu tới
2.3.1.Thoát khỏi ứng dụng khác
Khởi động ứng dụng lập trình làm tăng nhớ máy tính, nên đóng chúng lại khơng sử dụng để tài nguyên hệ thống giải phóng Mặc dù mơ hình đối tượng khác hầu hết có phương thức Quit dùng để đóng ứng dụng Ví dụ, dịng lệnh sau đóng chương trình Excel, sử dụng khai báo biến phần trên:
ExcelAppObj.Application.Quit
(5)Phát triển AutoCAD ActiveX VBA || 229911 Liệt kê thuộc tính AutoCAD bảng tính Excel
Thủ tục thực tìm kiếm tham chiếu khối vẽ tại, sau tìm thuộc tính gắn với khối liệt kê chúng bảng tính Excel
Trình tự thực
1 Mở vẽ có chứa khối tham chiếu thuộc tính gắn với chúng (bản vẽ mẫu dùng có đường dẫn sample/activeX/attrib.dwg)
2 Mở VBA IDE dòng lênh VBAIDE AutoCAD
3 Trong menu Tools References, chọn đối tượng Microsoft Excel 11.0 Object (hoặc phiên khác đối tượng này)
4 Sao chép đoạn thủ tục vào cửa sổ viết mã lệnh Code VBA thực nó:
Sub Ch12_Extract()
Dim Excel As Excel.Application Dim ExcelSheet As Object
Dim ExcelWorkbook As Object Dim RowNum As Integer
Dim Header As Boolean Dim elem As AcadEntity Dim Array1 As Variant Dim Count As Integer ’ Khởi động Excel
Set Excel = New Excel.Application
’ Tạo workbook tìm kiếm bảng tính hoạt động Set ExcelWorkbook = Excel.Workbooks.Add
Set ExcelSheet = Excel.ActiveSheet ExcelWorkbook.SaveAs "Attribute.xls" RowNum =
Header = False
’ Lặp trình tìm kiếm khơng gian vẽ tất ’ tham chiếu khối
For Each elem In ThisDrawing.ModelSpace With elem
’ Khi tham chiếu khối tìm thấy ’ kiểm tra ln thuộc tính
If StrComp(.EntityName, "AcDbBlockReference", 1)= Then If HasAttributes Then
’ Lấy giá trị thuộc tính Array1 = GetAttributes
’ Sao chép Tagstrings thuộc tính vào bảng Excel
For Count = LBound(Array1) To UBound(Array1) If Header = False Then
If StrComp(Array1(Count).EntityName, _ "AcDbAttribute", 1) = Then
ExcelSheet.Cells(RowNum,Count + 1).value = _ Array1(Count).TagString
End If End If Next Count
RowNum = RowNum +
(6)ExcelSheet.Cells(RowNum, Count + 1).value = _ Array1(Count).textString
Next Count Header = True End If
End If End With Next elem
Excel.Application.Quit End Sub
3 Sử dụng DAO để truy cập thông tin của cơ sở dữ liệu
Các đối tượng truy cập liệu (DAO - Data Access Objects ) cho phép làm việc với liệu sở liệu Đặc biệt sử dụng DAO ta truy cập vào sở liệu cung cấp Microsoft Jet, bao gồm:
Cơ sở liệu Desktop Access, dBase, FoxPro Paradox Cơ sở liệu ODBC Microsoft SQL Server Oracle®
DAO tạo điều kiện hoàn thiện điều khiển sở liệu từ mã lệnh VBA nên ta có thể:
Tạo sở liệu thay đổi cấu trúc sở liệu cũ Thêm bảng vào sở liệu, định nghĩa quan hệ bảng; định nghĩa
và thi hành câu truy vấn
Thêm, sửa xoá ghi liệu Bảo mật sở liệu
Có bước để sử dụng DAO lập trình VBA
1 Tham chiếu đến thư việc đối tượng DAO Microsoft (Microsoft DAO Object Library)
2 Mở sở liệu mà ta muốn làm việc, điều tạo thể đối tượng DAO
3 Viết mã lệnh sử dụng mơ hình đối tượng AutoCAD mơ hình đối tượng DAO
CHÚ Ý Chương cung cấp giới thiệu vắn tắt khả lập trình với DAO Những tài liệu vấn đề hướng tập trung AutoCAD chúng
(7)Phát triển AutoCAD ActiveX VBA || 229933 Tạo tham chiếu đến thư viện đối tượng ứng dụng khác
1 Trong VBA IDE, mở menu Tools References
2 Tìm lựa chọn mục Microsoft DAO Object Library
3 Chọn OK để đóng hộp thoại cập nhật thay đổi
Khi tạo tham chiếu đến thư viện đối tượng DAO, ta sử dụng VBA Object Browser để nhìn thấy tất đối tượng thư viện đối tượng DAO
CHÚ Ý: Phải gán tham chiếu cho dự án VBA có sử dụng mơ hình đối tượng việc thiết lập tham chiếu khơng thực tựđộng cho dự án Điều
đó lý hiệu suất chương trình
3.2 Mở cơ sở dữ liệu
Để làm việc với liệu sở liệu, ta cần mở sở liệu VBA Phương thức để mở sở liệu OpenDatabase đối tượng Workspace mặc định mơ hình đối tượng DAO Dịng mã lệnh mở sở liệu có tên X.MDB:
Dim db As Database
Set db = DBEngine.Workspaces(0).OpenDatabase("C:\X.MDB")
Dòng mã lệnh tham chiếu đến đối tượng DBEngine sau tham chiếu đến đối tượng Workspace mặc định DAO Nó mở sở liệu đối tượng Workspace mặc định gán sở liệu cho biến đối tượng sở liệu
3.3 Lập trình với mơ hình đối tượng của DAO
Sau tham chiếu đến thư viện đối tượng DAO, thực tạo mở sở liệu, ta tiến hành truy vấn liệu sở liệu Tất đối tượng, phương thức thuộc tính định nghĩa mơ hình đối tượng DAO sử dụng
Phần lớn thao tác với liệu sở liệu liên quan tới đối tượng Recordset DAO Đối tượng thể tập hợp gồm hàng trả bảng, truy vấn lựa chọn (bằng đối tượng truy vấn câu lệnh SQL) đối tượng Recordset khác Đây đối tượng lập trình với liệu yếu tố bật mã lệnh thao tác với liệu
Để tự làm quen tìm hiểu thêm mơ hình đối tượng DAO, ta sử dụng VBA Object Browser tài liệu hướng dẫn DAO Micrsoft Các tài liệu tham khảo DAO bao gồm mã lệnh ví dụ để giúp cho người học bắt đầu
4 Truy cập hàm Windows API từ VBA