Chào anhLiên kết giữa VST 2008 và office (Visual basic , Excel 2007)
1. Dạng nhúng: New Project à Office à chọn các dạng sau:
a. Excel 2007 Add-in
b. Excel 2007 Workbook
c. Excel 2007 Template
Đối với các ứng dụng office khác cũng làm tương tự. Các bạn có thể tham khảo bài viết của anh Hiền
2. Tạo thư viện liên kết
Bài viết của anh Hướng đã giới thiệu tạo thư viện DLL liên kết giữa VB6 và Excel.
Ở bài viết này tôi giới thiệu tạo thư viện từ VST 2008 (.NET Class Library) bằng 1 ví dụ cụ thể.
2.1. Tạo thư viện
2.1.1. Khởi động VST, New project à Visual basic à Class Library, chọn version .Net, đặt tên dự án HelloWordGPE à OK
Lúc này chương trình từ động tạo ra Class1.vb
Public Class Class1
End Class
2.1.2. Chèn thêm 1 Form mới cho dự án: Từ menu Project (hoặc từ biểu tượng Add New Item, hoặc từ cửa sổ Solution Explorer, chọn dự án, phải chuột hiện menu, chọn Add) à Add Window Form…
2.1.3. Tạo liên kết với Excel: Từ Menu Project à Add Reference à Com à Microsoft Excel 12.0 Library
2.1.4. Xóa toàn bộ code trong Class1.vb và thay bằng đoạn code sau:
Ghi chú:Mã:<ComClass(Class1.ClassId, Class1.InterfaceId, Class1.EventsId)> Public Class Class1 Public Const ClassId As String = "057B80BB-565B-4ef0-94A4-48AA34E522E0" Public Const InterfaceId As String = "67279AD6-4D9D-4caf-9E0D-1F6F54F15AEE" Public Const EventsId As String = "F94C8B54-87A5-478b-8F61-E89D03044C5E" Public Function ptb1(ByVal a As Double, ByVal b As Double, ByVal c As Double) As String ptb1 = "Nghiệm của pt là x=" & ((c - b) / a).ToString End Function Public Sub showform() Dim newfrm As New Form1 newfrm.Show() End Sub Public Sub MsgboxHello() MsgBox("Chào mừng bạn đến với VST 2008") End Sub End Class
+ ClassId, InterfaceId, EventsId có thể lấy bằng cách: từ Menu Tool à Creat GUID
+ ptb1 à Tạo hàm giải pt bậc nhất
+ showform à Macro gọi Form1
2.1.5. Từ cửa sổ Solution Explorer double click vào Form1, cửa sổ Form1.vb[Design] hiện ra.
- Từ dụng cụ Toolbox tạo TextBox1, Button1, Button2, Button3
- Dùng chọn lần lượt các Button và đổi Text (nhãn – cách gọi cũ, VST 2008 chuyển thành Text) thành: Exit, Put Cell Value, Get Cell Value
2.1.6. Nháy chuột phải trên Form1, chọn View code, xóa toàn bộ code trong Form1.vb và Copy đoạn Code này vào
2.1.7. Từ Menu Project à HelloWordGPE Properties (hoặc từ cửa sổ Solution Explorer, chọn dự án, phải chuột hiện menu, chọn Properties)Mã:Imports Microsoft.Office.Interop Imports System.Windows.Forms Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Text = "VST for Office" Me.TextBox1.Text = "Nhập chữ vào đây và click Put Cell Value hoặc chọn cell, click Get Cell Value để lấy dữ liệu" End Sub Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click Dim ExApp As Excel.Application Dim btnclick As Button = CType(sender, Button) Select Case btnclick.Name Case "Button1" Me.Close() Case "Button2" Try ExApp = GetObject(, "Excel.Application") Dim cel As Excel.Range = ExApp.ActiveCell cel.Value = Me.TextBox1.Text Catch ex As Exception End Try Case "Button3" Try ExApp = GetObject(, "Excel.Application") Dim cel As Excel.Range = ExApp.ActiveCell Me.TextBox1.Clear() Me.TextBox1.Text = cel.Value.ToString Catch ex As Exception End Try End Select End Sub End Class
Chọn Compile* à Đánh dấu checkBox Regiter for Com Interop
2.1.8. Từ Menu Project à Build HelloWordGPE
Lúc này tại thư mục Dự án (vd: D:\My Documents\Visual Studio 2008\Projects\HelloWordGPE\HelloWordGPE\bin\Release\) có các files sau: HelloWordGPE.dll, HelloWordGPE.pdb, …
2.2. Sử dụng thư viện
2.2.1. Chạy Excel, Mở cửa sổ VBA, chèn Module1
2.2.2. Từ menu Tools à Preferences à Browse à chọn đường dẫn đến file HelloWordGPE.pdb
2.2.3. Copy các đoạn code sau vào trong Module1
2.2.4. Sử dụngMã:Option Explicit Function ptbac1(ByVal a As Double, ByVal b As Double, ByVal c As Double) As String Dim pt As New HelloWordGPE.Class1 ptbac1 = pt.ptb1(a, b, c) End Function Sub ShowformVST() Dim frmvb6 As New HelloWordGPE.Form1 frmvb6.Show End Sub Sub ShowmsgVST() Dim loichao As New HelloWordGPE.Class1 loichao.MsgboxHello End Sub
Ví dụ này chúng ta đã sử dụng hàm, chạy Macro, hiện Form VST: Tương tác giữa Excel và Form từ thư viện.
2.1. Chú ý khi sử dụng thư viện DLL .Net
Để sử dụng thư viện trên các máy tính khác, chạy từ Dos dòng lệnh: regasm HelloWordGPE.dll /tlb: HelloWordGPE.dll.tlb
Từ file Excel nguồn bạn có thể save as thành Add-in để sử dụng cho các file khác.
Thêm một bước nữa tạo thư viện sử dụng như các hàm API của Windows bác nào biết Post lên cho anh em học hỏi nhé!
Toàn bộ File ví dụ kèm theo dưới đây
Em down file của anh về đăng ký và dùng thì bị lỗi như 2 hình ảnh trên, anh xem hộ là bị lỗi gì mà không dùng được. Em cảm ơn

