• Chủ Nhật, 14/09/2008 08:37 (GMT+7)

    Lập trình trên Microsoft Office với VSTO 3.0

    Tổng quan về VBA và VSTO

    VBA (Visual Basic for Application) từ lâu đã được biết đến như một công cụ lập trình quen thuộc và dễ dùng cho việc phát triển ứng dụng trên nền Office cũng như mở rộng tính năng cho Office (sau đây xin gọi chung là ứng dụng nền). Tuy nhiên, vì đã ra đời khá lâu (năm 1993) và ít có sự cải tiến nên hiện tại cũng bộc lộ một số hạn chế như:

    • Không hỗ trợ font chữ Unicode.

    • Chỉ sử dụng ngôn ngữ Visual Basic (VB).

    • Môi trường lập trình (IDE) và các Controls đi kèm lạc hậu so với các công cụ mới như Visual Studio (VS) 2008.

    • Bảo vệ mã chương trình không triệt để.

    • Chưa bắt kịp sự phát triển các tính năng của các phiên bản Office mới như Office 2007.
    Vì lý do trên, Microsoft đã phát triển công cụ lập trình VSTO (môi trường .NET, là một phần trong bộ Visual Studio 2008) nhằm hỗ trợ tốt hơn việc lập trình trên Office (như Word, Excel, Outlook, PowerPoint...).

    Về bản chất VSTO là một Add-in của Visual Studio (VS). VSTO xuất hiện từ khoảng đầu năm 2004 dựa trên VS 2003, với mục đích thay thế VBA trong Excel, Word. Nhưng phải đến phiên bản VS 2008 thì VSTO mới thực sự hoàn chỉnh với sự hỗ trợ lập trình mạnh mẽ trên các ứng dụng của Office 2003 và 2007.

    Giống VBA, VSTO cũng tác động trực tiếp với các ứng dụng nền, như vậy sẽ khá thuận lợi khi người dùng chuyển từ VBA sang VSTO.

    Những đặc điểm nổi bật của VSTO 3.0 (hay còn gọi là VSTO 2008):

    • Hỗ trợ các ngôn ngữ mà VS hỗ trợ: VB .NET, C++, C#...

    • Tận dụng giao diện đồ họa Windows Form của VS.

    • Cải thiện khả năng truy cập cơ sở dữ liệu với server (SQL và ADO)

    • Bảo vệ mã chương trình bằng cách che dấu và ngăn cản sự thay đổi từ bên ngoài.

    • VSTO 3.0 cho phép tạo ứng dụng ở dạng nhúng hoặc độc lập.

    Dạng nhúng: các ứng dụng được lưu theo các file dữ liệu của office như docx, xlsx... và chỉ sử dụng được cho file đó.

    Dạng độc lập: mã chương trình được xuất thành dạng file *.dll, từ đó tham chiếu vào các ứng dụng tương ứng. Việc cài đặt các ứng dụng VSTO 3.0 rất đơn giản nhờ công nghệ ClickOnce.
    Một số ứng dụng của VSTO:

    • Tùy biến giao diện Ribbon

    • Thay thế VBA dạng add-ins

    • Tạo TaskPane cho ứng dụng Office

    • Cá nhân hóa Outlook.

    Về cơ bản, giống như VBA, VSTO được xây dựng dựa trên kiến trúc COM, cho nên người dùng có thể sử dụng các thành phần sẵn có của ứng dụng nền trong việc xây dựng chương trình của mình, giúp thời gian phát triển được rút ngắn.

    Một dự án được xây dựng bằng VSTO dựa trên ứng dụng nền nào thì nó phụ thuộc chặt chẽ vào ứng dụng nền đó, bởi theo mặc định, dự án VSTO sẽ hoạt động và sử dụng các thành phần trong chính ứng dụng nền đó.

    Sự khác biệt cơ bản nhất của VSTO trong các ứng dụng nền (ví dụ giữa Word và Excel) là cách thức sử dụng các thành phần (đối tượng) của ứng dụng nền. Cho nên khi xây dựng ứng dụng bằng VSTO, cũng như VBA, thì việc hiểu rõ mô hình đối tượng của ứng dụng nền là yêu cầu bắt buộc.

         Hình 1: Hệ thống các đối tượng cơ bản trong MS Word và Excel

    Nói tóm lại, để lập trình với VSTO, cách tốt nhất là làm chủ từng phần. Đầu tiên cần nắm vững một ngôn ngữ lập trình mà Visual Studio hỗ trợ (VB, C# hoặc C++) và cách sử dụng VSIDE để viết mã lệnh cũng như thiết kế giao diện. Sau đó nghiên cứu mô hình đối tượng của các ứng dụng nền (là những thành phần của ứng dụng mà người dùng có thể sử dụng) cũng như cách sử dụng chúng.

    Công cụ cần có:

    • Visual Studio 2008 với VSTO 3.0

    • Microsoft Office 2007 hoặc 2003

    Tiếp cận VSTO

    Để người dùng bước đầu làm quen với VSTO, bài viết sẽ trình bày các bước tạo các ứng dụng trên MS Excel, Word ở 2 dạng độc lập và nhúng qua 2 ví dụ:


    Hình 2: Tạo dự án mới trong Visual Studio 2008

    Thêm tính năng xử lý tiếng Việt cho MS Word sử dụng Ribbon (dạng độc lập).

    Tạo file Excel có chức năng nhập thông tin cá nhân (dạng nhúng).

    Công cụ sử dụng: Visual Studio 2008; Microsoft Office 2007.

    Ngôn ngữ lập trình: Visual Basic, nền tảng .NET Framework 3.5

       Hình 3: Thêm điều khiển Ribbon

    Ví dụ 1: Thêm tính năng xử lý tiếng Việt cho MS Word sử dụng Ribbon.

    Tạo mới dự án: Chọn File > New Project, trong Project types chọn Visual Basic > Office > 2007 > Word 2007 Add-in.

    Thêm điều khiển Ribbon vào dự án: Project > Add New Item.

    Sử dụng Toolbox thêm các điều khiển cần thiết vào Ribbon.

      Hình 4: Thiết kế giao diện cho Ribbon

    Ribbon này sẽ được thêm vào trong ứng dụng Word khi bạn Debug (Tab Add-ins).

    Sau khi thiết kế xong phần giao diện Ribbon, tiến hành viết mã lệnh cho các chức năng. Để điều khiển ứng dụng Word ta truy cập đến đối tượng Application theo cách sau:

    Globals.ThisAddIn.Application

    Ví dụ đoạn mã sau đây giúp chuyển tất cả nội dung văn bản được đánh dấu thành chữ in hoa.>

      Hình 5: Các tính năng được thêm vào MS Word

    Dim strSelect As String =
    Globals.ThisAddIn.Application.Selection.Text
    Globals.ThisAddIn.Application.Selection.Text = strSelect.ToUpper

    Trong quá trình viết mã, tiến hành Debug bình thường, VSTO sẽ tự động khởi động MS Word để người lập trình kiểm thử ứng dụng.

    Ví dụ 2: Tạo file Excel có chức năng nhập thông tin cá nhân

    Tạo mới dự án: Trong Project types chọn Visual Basic > Office > 2007 > Excel 2007 Workbook.
    Sử dụng Toolbox thêm các điều khiển dạng nhúng vào bảng tính (worksheet) để tạo form nhập thông tin cá nhân.


    Hình 6: Giao diện Excel trong VSIDE

    Hình 7: Giao diện Excel trong VSIDE

    Viết mã lệnh cho điều khiển Button. Khi bấm Thêm vào danh sách, các thông tin do người dùng sẽ được nhập vào trong danh sách bên dưới.

    Ví dụ đoạn mã chương trình khi sự kiện bấm nút "Thêm vào danh sách" xảy ra.

    If txtHoTen.Text = "Nhập họ và tên" Then
         MsgBox("Chưa nhập Họ và tên!")
    ElseIf cbxQueQuan.Text = "Chọn địa danh" Then
         MsgBox("Chưa nhập quê quán!")
    ElseIf dtNgaySinh.Value.Year = Now.Year Then
         MsgBox("Chưa nhập ngày tháng năm sinh!")
    ElseIf rdbNam.Checked Or rdbNu.Checked Then
         Me.Range("A" & i).Value2 = 
         Application.WorksheetFunction.Max(Range("A:A")) + 1
         Me.Range("B" & i).Value2 = txtHoTen.Text
         Me.Range("C" & i).Value2 = cbxQueQuan.Text
         Me.Range("D" & i).Value2 = dtNgaySinh.Value
         Me.Range("E" & i).Value2 = strGioiTinh
         i = i + 1
    Else
         MsgBox("Chưa nhập giới tính!")
    End If

    Khi Debug, VSIDE sẽ tự động mở chương trình Excel để người lập trình kiểm thử ứng dụng của mình.

    Phân phối cài đặt ứng dụng VSTO

    Sau khi hoàn thiện ứng dụng, vấn đề phân phối cài đặt sang máy tính khác thường gặp khó khăn. Nhưng với VSTO 3.0 thì khác. Có 2 cách để thực hiện việc này.

    Cách 1: Sử dụng công nghệ ClickOnce của Microsoft.
    Chọn Project > Project Properties > Publish

     
      Hình 8: Thiết kế Publish

    Thiết lập các thông số tạo bộ cài đặt trên giao diện.

    Publish Location: Vị trí tạo bộ cài đặt.

    Prerequisites: Xác định các gói phần mềm cần cài đặt trước khi tiến hành cài đặt chương trình. Có 3 lựa chọn chính:

    Tải từ website của nhà cung cấp.

    Nhúng các gói phần mềm vào cùng thư mục cài đặt chương trình.

    Cài đặt từ một thư mục xác định trước.
    Nếu các gói phần mềm cần thiết chưa được cài đặt, chương trình sẽ tự động cài đặt theo một trong 3 cách trên.

       Hình 9: Các file trong thư mục cài đặt

    Chọn Publish Now để phát sinh bộ cài. Khi hoàn thành thư mục Publish xuất hiện các file:

    Do lựa chọn Prerequisites theo cách 2, ngoài thư mục chứa chương trình, bộ cài còn nhúng sẵn các bộ cài cần thiết cho việc chạy chương trình như DotNetFX35, VSTOR30, WidnowsInstaller3_1.

    Hình 10: Các file trong thư mục Release của ví dụ 1

    Để cài đặt trên máy tính khác, chỉ cần thực thi Setup.exe và làm theo hướng dẫn. Sau khi cài đặt, các tính năng của add-in được thêm vào MS Word hoặc Excel.

    Cách 2: Cài đặt trực tiếp qua file *.vsto
    Sau khi Build, trong thư mục Project\bin\Release có các file:

      Hình 11: Các file trong thư mục Release của ví dụ 2

    Để cài đặt add-in này sang máy tính khác, copy toàn bộ thư mục trên, thực thi file *.vsto để cài đặt.
    Để thực thi được các file dạng *.vsto, máy tính cần cài đặt Visual Studio Tools for the Office system 3.0 Runtime (Office 2007), cài đặt bằng file vstor30.exe, tải từ trang web chính thức của Microsoft.

    Các bạn có thể tải các ứng dụng trên theo địa chỉ:
    http://iceuct.t35.com/VnFontTools.rar
    http://iceuct.t35.com/ExcelPersonal

    Lê Đắc Hiền
    Email: hienld@gmail.com

    ID: A0808_138